*** tytel has quit IRC | 00:35 | |
*** NickSB has quit IRC | 01:29 | |
*** artfwo has quit IRC | 01:31 | |
*** NickSB has joined #lv2 | 01:54 | |
*** dsheeler has quit IRC | 02:39 | |
*** Guest4562 has joined #lv2 | 02:41 | |
*** dsheeler has joined #lv2 | 02:46 | |
*** Guest4562 has quit IRC | 03:05 | |
*** oofus has quit IRC | 05:40 | |
*** drobilla has joined #lv2 | 06:11 | |
*** edogawa has joined #lv2 | 07:18 | |
*** oofus_lt has joined #lv2 | 07:37 | |
*** thesunnyk has joined #lv2 | 10:08 | |
thesunnyk | hello | 10:16 |
---|---|---|
thesunnyk | I have a riddle for thee. Who is brave enough to answer | 10:17 |
thesunnyk | ?!?! | 10:17 |
*** thesunnyk is now known as thesunnyk__ | 10:20 | |
*** thesunnyk has joined #lv2 | 10:21 | |
*** thesunnyk__ has quit IRC | 10:22 | |
thesunnyk | OK I'm just going to ask: | 10:42 |
thesunnyk | I'm trying to build an LV2 plugin but in Rust, so I can't re-use the functions | 10:43 |
thesunnyk | I think I've done it correctly, however, I seem to be getting extraneous events. | 10:43 |
thesunnyk | Like I'll keep getting the same MIDI_NOTE_ON event over and over even though there was just the one. | 10:44 |
thesunnyk | I'll also see a bunch of spurious MIDI_NOTE_OFF events too. | 10:44 |
thesunnyk | Am I supposed to ACK the events in some way? | 10:44 |
thesunnyk | I'm just confused as to what's going on | 10:44 |
rgareus | atom messages? it's basically a list to iterate over | 10:50 |
rgareus | there's no "ACK" it's a buffer | 10:51 |
thesunnyk | Will the buffer contain messages from previous... frames...? I think I'm using the wrong term here with "frame" | 10:51 |
thesunnyk | but it's the "n_samples" in your run() method | 10:52 |
rgareus | inside run() the buffer will only have events relevant for the current run() cycle | 10:52 |
thesunnyk | hmm... But if a note played and is being sustained across several run cycles, will I get the note for each call of run() ? | 10:53 |
rgareus | it may well be that hosts don't zero-fill the buffer, but it's terminted | 10:53 |
rgareus | thesunnyk: what LV2 host do you test with? | 10:53 |
thesunnyk | Ardour5 | 10:54 |
rgareus | thesunnyk: you will not get the note for every cycle | 10:54 |
rgareus | note-one .... time passes note-off. | 10:54 |
thesunnyk | hmm | 10:54 |
thesunnyk | because I am seeing a bunch of note events that I'm definitely not sending | 10:54 |
thesunnyk | maybe I'm just parsing it wrong | 10:55 |
falktx | likely reading the buffer wrong | 10:56 |
thesunnyk | yeah, the only reason I didn't think I was doing that is because the data isn't total garbage | 10:56 |
thesunnyk | it's the same notes I'm playing | 10:56 |
thesunnyk | but just flickering on and off | 10:56 |
falktx | probably reading old data the host did not clear. you're suppose to use itenerators for the buffer | 10:57 |
thesunnyk | Yeah I'm writing it in Rust so I have to roll my own :) | 10:57 |
falktx | the host will only set the size to 0 if there's no data, it won't clear the entire buffer | 10:57 |
thesunnyk | I'm honouring the size though | 10:58 |
thesunnyk | waitaminute | 10:58 |
thesunnyk | one second please | 10:58 |
thesunnyk | fencepost error :P | 11:00 |
thesunnyk | Thanks guys | 11:00 |
rgareus | a plain C expansion (no atom-header macros) for iterating is https://github.com/Ardour/ardour/blob/master/libs/plugins/reasonablesynth.lv2/lv2.c#L149-L178 | 11:00 |
thesunnyk | yep. I was iterating correctly. Unfortunately I was saying "If I overflow the size then stop iterating" | 11:02 |
thesunnyk | when it's actually "When my size matches the size of the data structure, stop iterating" | 11:02 |
rgareus | using lv2_atom_sequence_begin() lv2_atom_sequence_is_end() lv2_atom_sequence_next() that code ^^ would be a lot shorter | 11:02 |
thesunnyk | (I mean my iterating _logic_ was correct, my end bit wasn't) | 11:02 |
thesunnyk | anyway, all good it's working | 11:03 |
rgareus | cool. | 11:03 |
thesunnyk | Thanks heaps guys | 11:03 |
rgareus | thesunnyk: will the plugin's source be available? | 11:05 |
rgareus | some people have asked in the past about LV2 written in rust, it'd be nice to have some example code | 11:05 |
thesunnyk | It will be a bit shit, but https://github.com/thesunnyk/synthz | 11:05 |
thesunnyk | I'm trying to keep the "raw" code (C++ equivalent data structures) separate | 11:06 |
thesunnyk | and then add a bit of a Rust layer to make it idiomatic. | 11:06 |
thesunnyk | but really I probably won't have the time so at best it'll be some reference code for others to copypaste ;) | 11:10 |
thesunnyk | time will tell | 11:10 |
*** oofus_lt_ has joined #lv2 | 13:15 | |
*** oofus_lt has quit IRC | 13:18 | |
*** trebmuh has joined #lv2 | 13:24 | |
*** sigma6 has joined #lv2 | 13:25 | |
*** badosu has joined #lv2 | 13:30 | |
*** artfwo has joined #lv2 | 14:04 | |
falktx | drobilla: ping | 14:13 |
*** Yruama_Lairba has joined #lv2 | 15:30 | |
*** ricardocrudo has joined #lv2 | 15:31 | |
*** deva has joined #lv2 | 15:40 | |
*** yann-kaelig has joined #lv2 | 16:41 | |
*** sigma6 has quit IRC | 17:04 | |
*** oofus_lt_ has quit IRC | 17:28 | |
drobilla | falktx: | . | | 17:33 |
drobilla | Shit is better than nothing | 17:35 |
drobilla | well...... sometimes, anyway :) | 17:35 |
*** badosu has quit IRC | 17:50 | |
*** rncbc has joined #lv2 | 19:45 | |
*** NickSB has quit IRC | 19:59 | |
*** NickSB has joined #lv2 | 20:17 | |
*** edogawa has quit IRC | 20:21 | |
*** edogawa has joined #lv2 | 20:31 | |
*** deva has quit IRC | 20:31 | |
*** rncbc has quit IRC | 21:04 | |
*** rncbc has joined #lv2 | 21:10 | |
*** trebmuh has quit IRC | 21:23 | |
*** edogawa has quit IRC | 22:24 | |
*** ricardocrudo has quit IRC | 22:35 | |
*** yann-kaelig has quit IRC | 23:18 |
Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!