drobilla | sord_validate will only be compiled if PCRE is present | 02:42 |
---|---|---|
drobilla | rgareus: sounds like save to the same name is probably just broken, I don't think an unload/delete happens in that case | 02:45 |
drobilla | rgareus: I don't understand your "2 states" point | 02:45 |
rgareus | drobilla: clicking on a radio button that's already active does nothing | 02:58 |
rgareus | drobilla: hence you need two states to switch in between. | 02:58 |
rgareus | in jalv: save preset A. change some param. save preset A (replace existing state). load preset XX (just to toggle the radio), load preset A. | 03:02 |
rgareus | jalv restores the original state (before the parameter change). | 03:03 |
rgareus | but the preset on disk is correct (a restart of jalv picks up the new preset) | 03:04 |
rgareus | drobilla: can you reproduce this? | 03:12 |
drobilla | rgareus: Haven't tried, but probably. Pretty sure saving just doesn't delete. | 03:13 |
drobilla | I don't really get where that multiple state thing is coming from. I mean, yeah, sure, theoretically, but if you just saved it, that's already the current plugin state by definition | 03:14 |
rgareus | drobilla: the main bug is "update current preset in ardour" | 03:16 |
rgareus | update / save a preset - test some other preset, reload the [updated] preset -> wrong settings | 03:17 |
rgareus | only a restart (reload the world) "fixes" this | 03:18 |
rgareus | delete preset & re-create it has the same result (the old actually deleted settings are restored). but the bug is a different one. | 03:19 |
drobilla | The first does not surprise me, the latter (delete) does | 03:22 |
rgareus | drobilla: while the preset is deleted from disk, it's not [fully] removed from the world. | 03:24 |
drobilla | Lilv could theoretically just do this, I suppose, but probably with an API change and that seems potentially sketchy to begin with. Probably the hosts need to do the right thing in this scenario and unload the preset before re-saving then re-loading if that's the desired behaviour | 03:24 |
drobilla | Though lilv_state_save does have a world parameter, so it probably could | 03:25 |
rgareus | drobilla: the error in the delete+re-create case is different in ardour and jalv in the delete case. jalv fails to re-load (doap:name already exists or something like that. | 03:25 |
drobilla | (You hadn't mentioned that you were overwriting existing presets when I said it WFM) | 03:26 |
drobilla | rgareus: Probably ends up with a partial-duplicate in the world model | 03:27 |
drobilla | rgareus: Though lilv_state_delete does remove from the world model | 03:27 |
rgareus | drobilla: it should but it does not. check the return value 0 entries are removed | 03:28 |
drobilla | rgareus: What return value? | 03:28 |
rgareus | drobilla: that of lilv_world_unload_bundle() | 03:29 |
rgareus | drobilla: let's check the delete part first, shall we? | 03:29 |
rgareus | drobilla: jalv calls lilv_state_delete() | 03:30 |
* drobilla is guessing state->dir isn't a URI | 03:30 | |
rgareus | drobilla: IIUC the prblem is the first part there "Read manifest into model" | 03:31 |
drobilla | Though it seems lilv_world_unload_bundle always returns 0, except on error. Where'd you get "entries removed" from? | 03:32 |
rgareus | calling lilv_world_unload_bundle() before -> unloads the file. but calling it after does not. | 03:32 |
rgareus | drobilla: you're right. I mixed that up with lilv_world_unload_resource() which returns number of removed resources | 03:34 |
drobilla | rgareus: That bit loads it into a temporary model | 03:34 |
drobilla | Whether state->dir is a dir or a URI seems to be confused. Sometimes one, sometimes the other | 03:37 |
drobilla | If it's a dir in this case, then it won't be the correponding URI of any graph, so drop will do nothing | 03:37 |
rgareus | drobilla: indeed. it's confusing. | 03:38 |
rgareus | drobilla: I tried to printf() debug it. but didn't find a way to turn SordIter back into something human readable | 03:40 |
drobilla | Needs unit tests | 03:50 |
drobilla | There's no one-stop iter print, but you can get the quad then print the nodes | 03:51 |
drobilla | rgareus: I'm going to have to look into this later, tests inward. A "fix" for just this case in an app or two is too risky, probably break stuff | 04:32 |
*** sigma6 has joined #lv2 | 08:10 | |
*** gianMOD has joined #lv2 | 08:12 | |
*** edogawa has joined #lv2 | 08:17 | |
*** falktx has joined #lv2 | 08:29 | |
*** ricardocrudo has joined #lv2 | 08:47 | |
*** ricardocrudo has quit IRC | 10:00 | |
*** ricardocrudo has joined #lv2 | 10:00 | |
*** gianMOD has quit IRC | 10:33 | |
*** john_cephalopoda has joined #lv2 | 11:02 | |
*** ricardocrudo has quit IRC | 11:15 | |
*** edogawa_ has joined #lv2 | 11:22 | |
*** edogawa has quit IRC | 11:25 | |
*** rncbc_jolla has joined #lv2 | 11:38 | |
*** ricardocrudo has joined #lv2 | 11:44 | |
*** edogawa_ is now known as edogawa | 12:02 | |
*** ricardocrudo has quit IRC | 12:04 | |
*** falktx has quit IRC | 12:04 | |
*** falktx has joined #lv2 | 12:04 | |
*** ricardocrudo has joined #lv2 | 12:17 | |
*** HarryHaaren has joined #lv2 | 12:24 | |
*** john_cephalopoda has quit IRC | 12:32 | |
*** falktx has quit IRC | 12:34 | |
*** NickSB2 has quit IRC | 12:41 | |
*** falktx has joined #lv2 | 12:46 | |
*** rncbc_jolla has quit IRC | 13:29 | |
*** edogawa has quit IRC | 13:35 | |
*** gianMOD has joined #lv2 | 13:40 | |
HarryHaaren | drobilla, hey. Is there any news on the plugin bypass topic? | 14:38 |
* HarryHaaren is re-working the ArtyFX ui's, and could easily add an On/Off button.. | 14:38 | |
*** ricardocrudo has quit IRC | 14:38 | |
*** ventosus has joined #lv2 | 14:51 | |
*** ricardocrudo has joined #lv2 | 15:40 | |
*** gianMOD has quit IRC | 15:46 | |
*** gianMOD has joined #lv2 | 15:48 | |
*** gianMOD has quit IRC | 15:50 | |
*** gianMOD has joined #lv2 | 15:51 | |
*** gianMOD has quit IRC | 15:52 | |
*** gianMOD has joined #lv2 | 16:12 | |
*** sigma6 has quit IRC | 16:38 | |
*** rncbc has joined #lv2 | 16:40 | |
*** john_cephalopoda has joined #lv2 | 16:48 | |
*** gianMOD has quit IRC | 17:04 | |
*** john_cephalopoda has quit IRC | 17:39 | |
*** gianMOD has joined #lv2 | 17:43 | |
*** ricardocrudo has quit IRC | 17:56 | |
*** artfwo has quit IRC | 18:06 | |
*** artfwo has joined #lv2 | 18:07 | |
drobilla | HarryHaaren: Nope. Sent an email about that right after lac, nothing since | 18:19 |
* HarryHaaren browses for email | 18:19 | |
drobilla | HarryHaaren: privately to rgareus and fons | 18:20 |
HarryHaaren | rgareus posted to list | 18:21 |
drobilla | long story short I'm not sure that hole 'fade out latent plugins' thing that came up actually makes any sense | 18:21 |
*** gianMOD has quit IRC | 18:22 | |
drobilla | Removal whatsoever seems to have the same sort of problem, though. Once the plugin is bypassed, to remove it but retain signal flow you need to know what goes where at least to some degree | 18:25 |
HarryHaaren | yep | 18:25 |
drobilla | It needs some thought as to how hosts can actually do this, and what information they need in order to do so | 18:25 |
HarryHaaren | yep again. Just done reading thread | 18:26 |
HarryHaaren | I'll leave things as they are right now and see where things go | 18:27 |
* HarryHaaren away for some food | 18:31 | |
*** RikyPes has joined #lv2 | 19:22 | |
RikyPes | Hi | 19:22 |
RikyPes | I have audacity for windows and would like to know how to install LV2 plugins | 19:28 |
*** RikyPes has quit IRC | 19:28 | |
*** rncbc_ has joined #lv2 | 19:28 | |
*** rncbc has quit IRC | 19:28 | |
*** RikyPes has joined #lv2 | 19:39 | |
RikyPes | Sorry my internet broke | 19:39 |
RikyPes | Can you explain how to install plugins on windows? | 19:39 |
HarryHaaren | RikyPes, hey - do you have Audacity from source? Or does it have LV2 support in the latest Win installer already? | 19:46 |
RikyPes | It does have LV2 support, as stated in their website | 19:47 |
RikyPes | in the latest win release of course | 19:47 |
HarryHaaren | RikyPes, there's the default LV2 path, which is %APPDATA%/LV2;%COMMONPROGRAMFILES%/LV2 | 19:47 |
HarryHaaren | (from http://lv2plug.in/pages/filesystem-hierarchy-standard.html ) | 19:48 |
RikyPes | I downloaded it two days ago | 19:48 |
HarryHaaren | RikyPes, cool. Well I'm working on a suite of open-source LV2 plugins, but I don't currently have them available for windows | 19:48 |
HarryHaaren | (don't have access to a windows development box atm) | 19:48 |
HarryHaaren | RikyPes, are you a developer? | 19:48 |
RikyPes | Sorta. I'm studying computer engineering and still struggle on C language :P However I got the folder lv2-1.12.0 | 19:49 |
RikyPes | Should I put it in that folder? | 19:49 |
HarryHaaren | RikyPes, nope | 19:50 |
RikyPes | in %APPDATA%/LV2 | 19:50 |
HarryHaaren | RikyPes, have you built the example plugins in that lv2-1.12.0 directory? | 19:50 |
RikyPes | No, I left it untouched | 19:50 |
HarryHaaren | ok, so do you have a C compiler installed to compile source code? | 19:51 |
RikyPes | Yes | 19:52 |
RikyPes | Devc++ | 19:52 |
HarryHaaren | the lv2 directory contains example plugins - try building those | 19:52 |
HarryHaaren | there is no devc++ project file though. Cross platform projects like LV2 tend to rely on a "build system" | 19:52 |
HarryHaaren | a build system is a program that issues the build commands : waf is the build system used by LV2 | 19:53 |
HarryHaaren | you need python to run it | 19:53 |
RikyPes | Ok I will download it | 19:53 |
HarryHaaren | RikyPes, what version of windows do you have? | 19:53 |
RikyPes | 7 ultimate x64 | 19:54 |
HarryHaaren | just curious. Also, i won't be able to talk you trough this step-by-step as I don't have a win machine.. | 19:54 |
HarryHaaren | but i can tell you what you're trying to do at any given time :) | 19:54 |
RikyPes | Thanks. I downloading python right now | 19:55 |
*** RikyPes has quit IRC | 19:59 | |
*** falktx has quit IRC | 20:50 | |
*** falktx has joined #lv2 | 21:14 | |
*** john_cephalopoda has joined #lv2 | 21:53 | |
john_cephalopoda | hi | 21:54 |
*** rncbc_ has quit IRC | 21:58 | |
john_cephalopoda | I got some code that keeps pretty close to the amp example, but is some kind of simple synth. But it doesn't work properly. | 21:59 |
john_cephalopoda | http://pastie.org/pastes/10201261/text?key=2zjuarzhgx2ciooqmgu8g | 21:59 |
john_cephalopoda | When I add a signal to the input, it can be heard in the output signal, although it shouldn't be in there. | 21:59 |
john_cephalopoda | I got no clue how it gets in there. | 21:59 |
john_cephalopoda | Any idea what I could have done wrong? | 22:03 |
grejppi | john_cephalopoda: could you show the ttl files? | 22:05 |
rgareus | RikyPes is gone, but for future reference | 22:05 |
rgareus | a couple of x-platform LV2 (with Installer for OSX and Windows): http://x42-plugins.com/x42/ (sorry, gnu/linux is still only a tgz, no installer yet, but most distros have them anyway) | 22:05 |
john_cephalopoda | grejppi: a.ttl http://pastie.org/pastes/10201273/text?key=2xcvahyvvbxdxyy4gua | 22:07 |
*** falktx has quit IRC | 22:08 | |
john_cephalopoda | grejppi: manifest.ttl http://pastie.org/pastes/10201274/text?key=wtqspo5cxiccbcexqcnstq | 22:08 |
grejppi | john_cephalopoda: a control port can only have a single value for one period | 22:10 |
john_cephalopoda | grejppi: You are right. | 22:11 |
grejppi | run() has freq[n] which goes outside the single value, and it might overlap with the buffer for input | 22:12 |
grejppi | john_cephalopoda: what if you change that to just (*freq)? | 22:15 |
john_cephalopoda | grejppi: It works now, thanks. | 22:16 |
rgareus | john_cephalopoda: change lv2:Instrument to lv2:InstrumentPlugin | 22:17 |
rgareus | john_cephalopoda: that's not a /fatal/ error but there's no such URI as lv2:Instrument. it's http://lv2plug.in/ns/lv2core/#InstrumentPlugin | 22:18 |
rgareus | ^^ line 9 in http://pastie.org/pastes/10201273/text?key=2xcvahyvvbxdxyy4gua | 22:18 |
*** ventosus has left #lv2 | 22:19 | |
grejppi | john_cephalopoda: also most plugins have a switch in connect_port() instead of if/else | 22:20 |
john_cephalopoda | grejppi: Mmh, I prefer if/else over switch. Also I didn't want to transcribe the amp example line for line (because I don't learn from that) and I tried some things that were not in the example. | 22:22 |
rgareus | if .. else if ... else if .. is just a more verbose way of writing switch(). probably even results in the same machine code in this case. | 22:24 |
grejppi | john_cephalopoda: for a small number of ports if/else might be fine | 22:24 |
grejppi | if the compiler doesn't optimize it, the plugin will have to go through (n^2 + n) / 2 if statements | 22:28 |
john_cephalopoda | Oooh, I got a 2-oscillator synth now! | 22:30 |
john_cephalopoda | Now the madness starts. | 22:32 |
ssj71 | I'm writing a blogpost that mentions making your plugin RT safe. Is the worst case of non-RT-safe operations that your plugin will cause Xruns? or could it also crash the host or other programs | 22:38 |
HarryHaaren | ssj71, worst case is that *all* audio glitches | 22:50 |
HarryHaaren | no crashing based on non-RT stuff | 22:50 |
HarryHaaren | the point is that if a plugin *can* glitch, it should be fixed. | 22:51 |
HarryHaaren | no excuses here - in a 100% RT safe world with 1 stupid plugin, they may as well all xrun | 22:51 |
ssj71 | HarryHaaren: sure. I just wanted to make sure I get the facts right. I'm not planning any non-RT safe plugins | 22:52 |
HarryHaaren | cool :) | 22:53 |
HarryHaaren | link me when you're done, can give it a proof read | 22:53 |
HarryHaaren | bedtime here now though - so tomorrow / when you finish it | 22:54 |
rgareus | ssj71: just re-post http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing | 22:54 |
ssj71 | thanks HarryHaaren | 22:54 |
ssj71 | rgareus: oh ya, that has some nice descriptive examples on why it matters | 22:55 |
*** john_cephalopoda has quit IRC | 22:56 | |
rgareus | not LV2, but handy either way (lv2 inside jalv) https://github.com/raboof/jack_interposer will check for RT safety | 22:57 |
HarryHaaren | rgareus, i presume you know fundamental's stoat? It can statically check the callgraph after white-listing the process() function | 22:57 |
HarryHaaren | its really nice, generates a graph with green (ok) and red (non-RT) - https://github.com/fundamental/stoat | 22:58 |
rgareus | HarryHaaren: yep. but requires the code to include annotations (which functions are supposed to be RT safe) and llvm | 22:58 |
HarryHaaren | yup | 22:59 |
rgareus | relatively easy for LV2 plugins (only run) | 22:59 |
HarryHaaren | yep: issue + white list for ArtyFX : https://github.com/harryhaaren/openAV-ArtyFX/issues/10 | 23:00 |
HarryHaaren | unfortunatly it doesn't magically fix thinkos.. | 23:01 |
rgareus | A single non-realtime function call was found "printf()" :) | 23:07 |
rgareus | connect_port does not need to RT safe does it? | 23:08 |
rgareus | HarryHaaren: I really think you should rename Roomy. | 23:14 |
HarryHaaren | rgareus, 2nd person to say that to me.. why? | 23:14 |
rgareus | HarryHaaren: how about "Reeva" ? | 23:14 |
HarryHaaren | Hmm that could work | 23:15 |
HarryHaaren | wont rename though, cool URIs dont' change. But I can "make another" reverb | 23:15 |
rgareus | well you can keep the URI. users don't see that anyway | 23:15 |
HarryHaaren | i'm thinking of adding an input highpass filter, quite useful for synths / FX to not muddy the sound.. | 23:16 |
HarryHaaren | perhaps some compression + gating on the output too ;) | 23:17 |
rgareus | make it a "dreamy" reverb to go along with rĂªve | 23:17 |
* HarryHaaren will concider yup | 23:19 | |
ssj71 | rgareus: I thought connect port got called right before every run() | 23:25 |
rgareus | ssj71: true for some hosts indeed | 23:29 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!