*** artfwo has quit IRC | 02:33 | |
*** falktx`|home has joined #lv2 | 04:41 | |
*** falktx|home has quit IRC | 04:46 | |
*** colock has quit IRC | 04:50 | |
*** colock has joined #lv2 | 04:54 | |
*** colock has quit IRC | 05:12 | |
*** colock has joined #lv2 | 05:13 | |
*** aombk has joined #lv2 | 06:09 | |
*** aombk2 has quit IRC | 06:12 | |
*** edogawa has joined #lv2 | 07:09 | |
*** falktx|work has joined #lv2 | 08:50 | |
*** ventosus has joined #lv2 | 09:20 | |
*** ricardocrudo has joined #lv2 | 09:56 | |
*** Paul-Z has joined #lv2 | 11:34 | |
Paul-Z | Good Day! | 11:34 |
---|---|---|
Paul-Z | Mmm... I'm new to LV2 without any programming background...But I want to try to write some LV2 plugins... | 11:35 |
Paul-Z | So... I need learn C first? Can i write LV2 using Java or Python? | 11:36 |
falktx|work | java and python are not RT friendly | 11:44 |
Paul-Z | Oh, so... C only? | 11:45 |
falktx|work | C++ is fine | 11:45 |
falktx|work | perhaps rust too, not sure | 11:45 |
falktx|work | also objetive-c/c++ | 11:45 |
falktx|work | this might be useful http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing | 11:45 |
Paul-Z | falktx|work, so... I have to learn C/C++... | 11:45 |
falktx|work | there are some new stuff that allow to run lua and other script languages | 11:46 |
falktx|work | but they useless consume a lot more resources | 11:46 |
Paul-Z | I know some SuperCollider. | 11:46 |
falktx|work | *usually | 11:46 |
Paul-Z | but, I try to learn a General Language | 11:47 |
Paul-Z | Oh, Thank you, the website is useful | 11:48 |
Paul-Z | I have never saw RUST, I'm going to search it. | 11:48 |
Paul-Z | Thank you | 11:49 |
falktx|work | recently I got Max gen objects working as plugins, quite neat | 11:51 |
Paul-Z | as LV2 under Linux? | 11:56 |
falktx|work | yes | 11:57 |
falktx|work | https://github.com/DISTRHO/DPF-Max-Gen | 11:57 |
Paul-Z | Wow, Cool | 11:57 |
Paul-Z | So, I can write plugins using Max/PD, then export to the LV2 plugins via DPF-Max-Gen? | 12:00 |
falktx|work | Only the gen objects can be exported | 12:01 |
falktx|work | tbh I don't really understand how it works right now, not really used to Max | 12:02 |
Paul-Z | Mmm... Gen Objects... such as phasor~ ? | 12:07 |
falktx|work | hmm don't look at me, I never actually used max... | 12:07 |
Paul-Z | the part of MSP? | 12:07 |
falktx|work | I just borrowed some generated c++ code from a friend that uses Max | 12:07 |
falktx|work | the Freeverb and BitCrusher seem to work | 12:08 |
Paul-Z | Oh... | 12:08 |
falktx|work | if you open the gen object in max there should be an option to export the object as code | 12:08 |
falktx|work | send me that code and I'll add it as lv2 plugin | 12:09 |
falktx|work | it should be a gen_exported.cpp and gen_exported.h files | 12:09 |
Paul-Z | Oh! Thank you! | 12:09 |
Paul-Z | So, If I wanna make some lv2 plugins, I don't have to learn C/C++, I can try to write it under Max/PD... | 12:10 |
Paul-Z | Wow... Cool... | 12:11 |
falktx|work | the code won't be perfect. hand-written would perform better. but hand-written is also much more difficult | 12:12 |
edogawa | Paul-Z: may, be have a look at faust, it's a functional language for defining dsp algotithms and chains, and can generate LV2, VST, and standalone apps, with simple GUI, and there's even an online compiler | 12:14 |
Paul-Z | Yes, esp. to me, It's really difficult... but I just for fun, so, I think It's ok, I will try that later... | 12:14 |
Paul-Z | edogawa, Oh, Thank you, I'm going to search faust. | 12:15 |
* edogawa always hoped for CLAM Network editor to mature but it seems to have stalled in development, and didn't compile last time he tried | 12:15 | |
Paul-Z | I thought I can try to learn Python first, because I like that syntax... :( | 12:17 |
edogawa | http://faust.grame.fr/ it's very different from other programming languages | 12:17 |
Paul-Z | Mmm... how about writing some android apps for audio processing? | 12:18 |
Paul-Z | I want to try to learn a general purpose language, but not C/C++, Because I think It's too difficult... | 12:19 |
Paul-Z | Mmm... I think faust is good! I'm trying to install it... | 12:22 |
falktx|work | there's also csound | 12:22 |
falktx|work | http://thecabbagefoundation.org/documentation.php | 12:23 |
Paul-Z | Mmm... How about SuperCollider? | 12:24 |
Paul-Z | can I export lv2 from SuperCollider codes? | 12:24 |
Paul-Z | I can write some SuperCollider codes only for now... | 12:25 |
Paul-Z | edogawa, Mmm... faust seem writen by C++? | 12:28 |
falktx|work | it generates c++ | 12:29 |
edogawa | Paul-Z: you write your code in faust, the compiler translates this to C++ and finally builds what you tell it, using various faust2* utility scripts | 12:30 |
Paul-Z | Oh! thank you, I understand now! I just installed it from repo... But... No IDE is installed... I'm trying to download it from web... | 12:32 |
Paul-Z | edogawa, it's just a compiler I have installed... | 12:33 |
Paul-Z | Is it okay if I learn it using a text editor? such as Sublime? Is faust's IDE better? | 12:34 |
falktx|work | does it really need a custom IDE? | 12:37 |
edogawa | i have played a bit with FaustWorks, but it seems to have been superceeded by FaustLive (which i haven't tried yet, i don't really code currently and won't in foreseeable future) | 12:39 |
Paul-Z | Yes, I just found that... But, I found FaustWorks in sf.net... | 12:40 |
Paul-Z | So... FaustWorks is a custom IDE for faust? | 12:41 |
edogawa | well it was managed by the Faust team, iirc | 12:41 |
edogawa | https://sourceforge.net/p/faudiostream/faustworks/ci/master/tree/ | 12:42 |
edogawa | but it looks frozen, since more than a year (last commit was to port to Qt5) | 12:43 |
Paul-Z | Oh.... | 12:43 |
Paul-Z | So, try to install faust live is better.... | 12:45 |
edogawa | i'd think so :) and then you can follow the CCRMA course better, too | 12:46 |
edogawa | https://ccrma.stanford.edu/~rmichon/faustWorkshops/course2015/ | 12:47 |
Paul-Z | edogawa, righto, Thank you. | 12:48 |
*** artfwo has joined #lv2 | 12:49 | |
*** ddom has joined #lv2 | 12:53 | |
*** Paul-Z has quit IRC | 12:59 | |
*** NickSB2_ has quit IRC | 14:23 | |
*** Paul-Z has joined #lv2 | 14:24 | |
*** Paul-Z has left #lv2 | 15:31 | |
*** son0p has quit IRC | 16:05 | |
*** edogawa has quit IRC | 16:08 | |
*** son0p has joined #lv2 | 16:13 | |
*** son0p has quit IRC | 16:19 | |
*** son0p has joined #lv2 | 16:19 | |
*** deva has joined #lv2 | 16:28 | |
falktx|work | drobilla: your software pages still reference svn. like http://drobilla.net/software/serd/ | 16:29 |
*** son0p has quit IRC | 17:33 | |
*** son0p has joined #lv2 | 17:34 | |
*** son0p has quit IRC | 17:41 | |
*** son0p has joined #lv2 | 17:42 | |
*** sigma6 has quit IRC | 17:48 | |
drobilla | yaya :P | 17:50 |
drobilla | falktx|work: ... huh. it even adds an open source license header | 17:52 |
drobilla | falktx|work: does that mean we can methodically port all max gen objects to LV2? | 17:52 |
drobilla | They seem to have no message interface. Are gen objects all inherently LADSPA-like in their interface? | 17:53 |
drobilla | (not quite, but more or less, the other messages are pretty max specific and/or don't apply to exported code) | 17:56 |
*** ddom has quit IRC | 18:27 | |
*** colock has quit IRC | 18:44 | |
*** colock has joined #lv2 | 18:44 | |
falktx|work | drobilla: seems like it. there's no internal state from what I've seen. just parameters | 18:46 |
falktx|work | drobilla: I haven't seen a synth. so I don't know how midi works yet | 18:49 |
*** falktx|work has quit IRC | 19:16 | |
*** ricardocrudo has quit IRC | 19:25 | |
*** rncbc has joined #lv2 | 19:32 | |
*** deva has quit IRC | 19:59 | |
*** rncbc has quit IRC | 20:12 | |
*** rncbc has joined #lv2 | 20:14 | |
ssj71 | if I made my plugs look for an optional config file in a users home directory so they can configure oversampling and such instantiation things, would that be abominable? | 20:23 |
ssj71 | I don't want to expose it as a parameter and do some self-reinstantiation scheme | 20:34 |
*** falktx`|home is now known as falktx | 20:43 | |
falktx | ssj71: create a simple UI tool to configure your plugins | 20:44 |
ssj71 | falktx: one that creates the file I presume? | 20:45 |
ssj71 | I could probably do that | 20:45 |
falktx | yes | 20:45 |
falktx | simple enough, easy to use. | 20:45 |
ssj71 | falktx: do you have an opinion on starting a github group vs. just using a personal repo? i.e. rkrv2/rkrv2 vs ssj71/rkrv2? I only want to change URI once | 20:47 |
falktx | depends if you want the project to be maintained by someone else too | 20:47 |
falktx | for my own stuff I keep it on the falkTX repo | 20:48 |
falktx | but I have DPF and DISTRHO team as a team | 20:48 |
falktx | *DISTRHO stuff | 20:48 |
falktx | I'd be happy to be a co-maintainer of rkrv2 :) | 20:48 |
ssj71 | cool. I think I'll do a group then | 20:49 |
falktx | ssj71: here's a proposal. keep the current rkrlv2 code as-is with only bugfixes | 20:49 |
falktx | ssj71: then do the rkrv2 where the real work happens | 20:49 |
ssj71 | well, the issue is that to fix the bugs, I have to do some changes | 20:50 |
ssj71 | some BIG changes that is | 20:50 |
falktx | bugfixes only though. those that don't involve file changes | 20:50 |
falktx | removing broken parameters is a bugfix :) | 20:50 |
ssj71 | true | 20:50 |
falktx | I already have those plugins on kxstudio and on MOD. not at work that great, but some are nice | 20:51 |
falktx | I think it's better to focus on 1 at a time | 20:52 |
falktx | you did the whole rkr deal very quickly, very raw, afaik it's the real rakarrack experience :) | 20:52 |
ssj71 | lol pretty cose | 20:53 |
ssj71 | *close | 20:53 |
ssj71 | thing is that "very quickly" amounted to months of work | 20:53 |
ssj71 | but I like this idea the more I think about it | 20:56 |
ssj71 | then I can deprecate rkrlv2 plugins as the rkrv2 come | 20:57 |
colock | love carla | 21:16 |
ssj71 | do most hosts respect pprops:notOnGUI? | 21:24 |
drobilla | ssj71: Using a global or user installed thing *as a default* is not super terrible | 21:51 |
drobilla | ssj71: But state not restoring things exactly as they were is | 21:51 |
drobilla | ssj71: i.e. you should probably save the configuration | 21:51 |
ssj71 | so the file would then need to be turned into an lv2 state | 21:53 |
drobilla | I'm not sure what that means | 21:54 |
drobilla | You can save files in your state. The file can be whatever | 21:54 |
ssj71 | ah ok. so if no state is passed from the host then use the file if it exists. | 21:55 |
ssj71 | thats manageable. Though still a bit more complex than it seems it should be | 21:55 |
drobilla | About as non-complex as anything could be that actually restores properly... | 21:56 |
drobilla | There is a more complex (but less shitty in some ways) way to do it, but that's not it :) | 21:57 |
drobilla | Whether or not its worth it depends on how much that configuration affects output and so on | 21:58 |
drobilla | If the user isn't really going to notice either way, whatever | 21:58 |
ssj71 | well, most ideally for me would be a way to have a port that somehow is marked as an "instantiation option" and the host would pass it in with the other host features | 21:58 |
ssj71 | but that probably seems more ideal cause I make plugins not hosts | 21:59 |
drobilla | Use messages for that. Then you just need one port for such things until the end of all time and you can do whatever with it | 21:59 |
ssj71 | but then the host has to implement some way for a user to configure it. The best way is state. I'm just lazy | 22:00 |
falktx | just use a simple stupid ui tool to configure it | 22:01 |
drobilla | True in a sense, but it's not one or the other | 22:02 |
drobilla | e.g. you could perhaps make the config file in a state bundle and just use Jalv or whatever to "configure" it by saving to that bundle. No writing UI tool just for this required | 22:02 |
* drobilla is also lazy, if in a slightly different way :) | 22:02 | |
drobilla | i.e. if your "configuration" is a default state (supported in hosts by listing a state:state on your plugin), you only need one host to support the dynamic tinkering and you can use it to save your default configuration | 22:04 |
drobilla | But if you definitely will have no other use for state in any of the plugins ever, yeah, buncha stuff to do | 22:05 |
ssj71 | I'll have to do some homework on this | 22:11 |
*** ventosus has left #lv2 | 22:11 | |
ssj71 | problem is by the time you get state the plugin is already instantiated | 22:14 |
ssj71 | too late to resize the buffer to allow oversampling (the primary setting I'm considering) | 22:14 |
ssj71 | at least without doing a lot of extra worker etc stuff | 22:15 |
ssj71 | another use case is max time for a delay | 22:20 |
ssj71 | ah that one is more complex though since you probably have a parameter that sets the delay | 22:22 |
drobilla | true, though state restoration is non-realtime so you don't have to use worker stuff | 22:30 |
ssj71 | ah. then that would work | 22:32 |
* drobilla sighs | 22:59 | |
drobilla | rdflib is so awful | 22:59 |
falktx | or maybe lilvlib is too good ;) | 23:00 |
colock | eheh | 23:02 |
drobilla | speed-wise serd is pretty awesome if I do say so myself, but even ignoring the really, really abysmal performance, rdflib is just shitty in countless ways you can't get around | 23:04 |
drobilla | One day in the glorious future when I actually have time to merge serd and sord into a coherent minimal C rdf library, I'll just do python bindings for that... | 23:05 |
drobilla | (Haven't looked around for pure Pyton alternatives in a while though, maybe there's something nicer on the scene these days) | 23:28 |
*** rncbc has quit IRC | 23:39 | |
drobilla | ... e.g. it won't resolve against unix:///foo/bar URIs, or unix:/foo/bar URIs, but it will against the nonsense unix://foo/bar | 23:53 |
drobilla | The algorithm for this is very explicitly defined in the URI syntax RFC, you'd have to try to screw it up | 23:57 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!