Tuesday, 2016-05-31

*** trebmuh has quit IRC00:00
*** artfwo has quit IRC02:25
*** edogawa has joined #lv207:20
*** ocbtec has joined #lv208:11
*** sigma6 has joined #lv208:37
*** ricardocrudo has joined #lv208:49
*** unclechu has joined #lv208:52
*** trebmuh has joined #lv209:46
*** falktx|work has joined #lv210:25
*** jbitdrop has joined #lv211:00
*** gianMOD has joined #lv211:26
rgareusdrobilla: http://lv2plug.in/ns/ext/log/  does not specify if a plugin should include a file newline to lv2_log_error()12:21
rgareusardour adds that newline,  jalv does not,  ns/ext/log/logger.h fallback  vfprintf(stderr,..) does not either.12:21
rgareusdrobilla: you wrote all 3 implementations.. so which is it?12:21
rgareuss/file newline/final newline/   ie "\n"12:22
rgareusfalktx|work: does carla and MOD-host implement the log extension?  If so, they add a trailing newline?12:26
falktx|workrgareus: carla yes, although it just prints to terminal. with fancy colors for debug and errors12:28
falktx|workrgareus: carla adds a newline yes12:28
falktx|workmod doesn't do logging12:28
rgareusso now we're 50/50 :)12:28
falktx|workwhat about qtractor?12:28
rgareusI don't know. and rncbc is not online12:29
rgareussince the fallback (host with log:log  but without urid:map) is just     fprintf(stderr, fmt, args);    it makes sense to have the client add a newline12:30
rgareusthat also goes along with normal  printf()12:30
*** gianMOD has quit IRC12:59
*** gianMOD has joined #lv213:03
*** gianMOD has quit IRC13:34
*** gianMOD has joined #lv213:49
*** jbitdrop has quit IRC13:49
*** gianMOD_ has joined #lv213:50
*** gianMOD has quit IRC13:50
*** gabrbedd has quit IRC14:00
*** gabrbedd has joined #lv214:01
wumpusI don't think qtractor implements the log extension14:02
wumpusat least last time I wrote a lv2 plugin it didn't, I think it's the only program that needed the printf() fallback14:04
wumpusthat I tried, at least14:06
*** deva has joined #lv214:35
falktx|workwhat about ingen?14:52
rgareusconceptually a "message" should not include formatting, so the host should add a newline if the host's message-display requires it.15:00
rgareusjust like "now playing" or "connected to wireless-XXX"15:00
rgareusbut well, it's really a small nitpick15:01
rgareusfalktx|work: no newline at the end in ingen  but it does flush stdout/err.15:08
falktx|workI think it's important to define the behaviour15:09
falktx|workflush is not important, but newline is15:09
falktx|workotherwise some hosts will end up with multiple lines for some plugins15:10
rgareusI would not say "important", but yes it should be standardized.15:11
rgareusI'm in half a mind t just add a 'strip trailing newline if it exists" in ardour.15:11
rgareusbut that's not a nice solution.15:12
rgareusAfter thinking about it, I'm of the opinion that the host should add the newline at the end of a message if needed for the host's display15:13
rgareusbut that would imply changing   ns/ext/log/logger.h  and add a fprintf(stderr, "\n");   and that will probably take 6 months.15:13
ventosusvfprintf is being called as fallback by lv2_log_trace (e.g. in rt-context), this is bad, isn't it?15:18
rgareusit is indeed15:21
rgareus[fatal] error messages I could excuse in rt-context.15:22
rgareusbut warnings, notes, and trace..  no15:22
wumpusone rationale for having the client add the newline is that it allows printing a line in multiple statements, without having to do string concatenation. A bit weak rationale, probably.15:40
wumpusbut it's done that way in quite a lot of other software15:40
falktx|workjust buffer that and send the full string when done15:40
falktx|workthe log could be a window popup in some hosts15:41
wumpuswell it moves the responsibility for buffering to the host15:41
wumpusbut yes...15:41
wumpusit just needs to be defined either way in the standard, having clients and hosts guess is a bad place to be in15:42
falktx|workagree15:42
falktx|workseems like something for the mailing list, for a definitive answer15:42
falktx|workunless drobilla is still listening to irc15:42
falktx|workdrobilla: comments?15:42
wumpusingen doesn't add newline15:46
wumpushttp://git.drobilla.net/cgit.cgi/ingen.git/tree/src/Log.cpp#n4515:48
falktx|worklv2 versioning is weird15:55
falktx|work2.0 being considered unstable... hmmm15:55
rgareusreally?15:59
falktx|workhmm wait16:00
falktx|workis 0 an odd number? it's not, right?16:00
falktx|workok ok I was reading it wrong again16:02
rgareus1 is odd 3 is odd 5 is odd       so by induction   4 is even 2, is even 0 is even16:02
falktx|work1.0 is unstable. 2.0 is stable16:02
falktx|work2.1 is unstable. 2.2 is stable16:02
falktx|workall 0.x are experimental16:02
rgareuswell it's really  0.1.0   0.2.0    major version is n/a in LV216:02
rgareusyes16:02
falktx|workwell, yeah, but most users don't know that16:02
falktx|worka version number is a good number to have16:03
falktx|workanyway, stable plugins start at 2.0 then16:04
* rgareus uses https://github.com/x42/meters.lv2/blob/master/git2lv2.mk for all his plugins16:07
rgareusa git-tagged (no modifications since) will produce an even number16:07
rgareusall others odd micro numbers16:07
*** gianMOD_ has quit IRC16:07
rgareusit maps a /traditiona/  X.Y.Z  to  the LV2 minor version.   micro (patch fixes) are git revisions since last tag16:09
*** sigma6 has quit IRC16:43
*** unclechu has quit IRC17:09
*** falktx|work has quit IRC17:15
*** ssj71 has joined #lv218:04
*** tytel has joined #lv218:14
drobillaThe trouble with auto newline is that it precludes situations where you need to print in several printfs18:16
drobillaThis reminds me of the silliness of Python 2 with respect to whitespace, among other similar mistakes in the name of the common case18:16
drobillaI think it should be as much like printf as possible18:16
drobillaNobody ever got fired for "as much like printf as possible" :)18:17
drobilla0 is even, "even" means "integer multiple of 2"18:18
*** ricardocrudo has quit IRC18:18
drobillaRe: log, I think it's clearly insane for the host to add a newline to every printed thing18:20
drobillaThat said, though popping up a dialog on every log call is an absolutely horrible idea that no host should ever ever do, some defined way to delimit messages could be useful in similar scenarios.  The only reasonable one I can think of is "hosts should consider the newline character as an end of message delimiter, and not assume a single call constitutes an entire message appropriate for displaying to th user"18:22
drobillaThis has its own issues, but it's not terrible18:23
*** jbitdrop has joined #lv218:23
rgareusmimic printf() was my first choice as well,  then I thought "it's really a message not a formatted print and it may be on systems that need \r\n"18:32
rgareusbut either is fine really as long as it's in the spec.18:33
*** rncbc has joined #lv218:41
*** deva has quit IRC18:42
*** gianMOD has joined #lv219:00
*** ocbtec has quit IRC19:32
*** ensonic has joined #lv220:01
ensonichi, repeating my question from #lad20:01
ensoniccan lv2 plugins describe their polyphony so that hosts can check it?20:01
ensonicat least detecting if they are polyphonic or monophonic would be nice20:01
rgareusensonic: I don't think so.20:09
rgareusensonic: I also don't know any plugin host that could use the information20:09
ensonicI am working on the lv2 bridge in gstreamer and need to figure how I best match the apis20:11
ensonicand I'd like to use the lv2 bridge in buzztrax with has a tracker style UI and there you create a column for each voice :/20:11
rgareusvoice in this context is not polyphony is it?20:13
ensonicvoices=1 is monophonic and voices>1 is polyphonic20:14
rgareusyou can have note-stealing on every voice or every voice can be monophonic.20:14
ensonicindeed20:14
rgareus16 midi channels.  one can trigger an poly instrument another one a monophonic one20:14
rgareusin the same synth/instrument plugin20:14
ensonicbut none if this can be queried20:15
rgareusyou could a LV2 extension,  just specify  a URI  <http://example.org/lv2/polyphony>  and define semantics of that integer [?]   hosts which care can then use it20:16
ensonicare there lv2 synths that play different patches on each channel?20:16
rgareuslinuxsampler for example20:16
rgareusor any midi synth.    chan1: trumpet,  chan2: piano20:16
rgareuss/midi/general midi/20:16
rgareustrumpet is obviously monophonic.20:17
ensonic:)20:17
rgareusthere's a flag in the soundfont file for this20:18
ensonicthe fact that its full fledged midi brins in the channels, so I want to know if the patch configured on channel x is monophonic or polyphonic20:18
ensonicI'll probably do separate instances instead of exposing midi channels20:19
ssj71ensonic: that is the conservative method, even if it might waste some resources. ReMID can do a patch per midi channel, but I don't know of another synth that can20:21
ensonicssj71, like rgareus said, linuxsampler can too20:21
ssj71yes. so there are 2 or so?20:22
rgareusensonic: is it a polyphony fixed value known a-priori for every plugin?   or can it change dynamically?20:22
ensonicyeah, I am not so much worried about that, its more the polyphony20:22
ensonicon the bridge I can make it dynamic, but it does not make sense to claim I can do 100, if the plugin can't20:23
ensonice.g. buzzmachines say wheter they have 'tracks' and if so how many20:24
rgareuswell I'm thinking how it could be added to the LV2 spec.20:24
ensonicor e.g. a sidsynth would have 3 voices20:24
rgareusif it's a fixed number. you can write it into the plugin description .ttl    and a host can know the number before actually loading the plugin (and prepare ahead)20:24
rgareusif not the host would first have to instantiate the plugin  (which usually requires a track of some kind already exists)20:25
ensonicthe extension sound like a good idea, and i think practically most plugins have it as a constant in their code20:25
ssj71ensonic: but most synths don't allow mutliple voice control. Many have multiple "voices" but they can't be used as a melody and countermelody. They're all chained typically if that makes sense20:25
ensonicI could imagine it being 1 (monophonic), a constant > 1 or cpu-bound (that is as many as you want and your computer can handle)20:26
ensonicssj71, with multiple voice control you mean that e.g. chainging the filter-cufoff would affect all playing notes, that is okay (and imho expected)20:27
rgareusso a non-negative integer:  0: unbound,  1 monophonic,  > 1  N-polyphonic20:28
rgareusand it would be a property of the plugin itself  (like  lv2:minorVersion  which is also a non-negative int)20:28
ensonicrgareus, sounds like a plan20:29
ensonicI'll scan through plugin source to see if I if looks like it would work for the plugin authors20:30
ensonichttps://github.com/rncbc/synthv1/blob/master/src/synthv1.cpp#L5420:31
ensonichttps://github.com/rncbc/samplv1/blob/master/src/samplv1.cpp#L5620:32
ensonicnext calf ...20:32
ssj71so in a tracker, if a synth has 32 note polyphony you want 32 tracks?20:33
rgareusthat does not make much sense to me with an ADSR curve20:35
ssj71yup.20:35
ssj71I think the idea of voices is used differently in tracker community than a typical synth developer20:36
ensonicfor calf a fixed number seems to work too: https://github.com/jnetterf/calf/blob/master/src/calf/organ.h#L29620:39
ensonicssj71, if a synth has 32 note polyphony I want at most 32 tracks20:39
ensonicssj71, the UI has add/remove track buttons20:40
ensonicssj71, but I agree that the concepts don't match 1:120:40
ssj71I see.20:40
ensonicin a tracker the musician takes care of the note stealing explicitly20:40
ensonicnow even if we add the polyphony extension, I can't send a note-on/off to the 'right' voice, so this could even be confusing20:41
ssj71right voices are tied to the midi note, not the track20:43
ensonicssj71, I am not sure if it is even defined20:43
ssj71no not strictly, but from the several synths I've reviewed code of, thats the case20:44
ensonicon a physical instrument it is since there is only one C-3 key, and hence I can't press it twice :)20:44
ensonic(without releasing it that is)20:45
ensonicssj71, but you are right, it must be tied to the note, otherwise, they could not associate a note-off with the voice20:46
ensonicrgareus, what did you mean wit the ADSR?20:47
ssj71ADSR in most synths are global controls for all the voices20:48
ensonicjep, thats okay20:48
ssj71just like the filter in SID20:48
ensonicthe tracker UI here is more like: [global params] [track 1 params] [track 2 params]20:50
rgareusjust an envelope.  while the note is in release (after the note off)  it can still ring,  while you re-trigger the same note again.20:53
*** unclechu has joined #lv221:09
ensonicI'll keep thinking, thanks for the discussion21:24
*** ensonic has quit IRC21:40
*** ocbtec has joined #lv222:04
*** unclechu has quit IRC22:16
*** edogawa has quit IRC22:25
*** rncbc has quit IRC22:43
*** jbitdrop has quit IRC22:43
*** gianMOD has quit IRC22:47
*** gianMOD has joined #lv223:28
*** ocbtec has quit IRC23:38

Generated by irclog2html.py 2.13.0 by Marius Gedminas - find it at mg.pov.lt!