I agree that we shouldn't change the meaning of latency for 3.2, but could we perhaps modularize its handling in the default event? Right now, ~lag + (server.latency ? 0) is hard coded into lots of different places, which as we know is not great programming practice because it makes it harder to make updates later. It also fixes in stone a very large assumption about latency that not every user will agree with. What option does that user have, except to copy the entire default event into a separate file and make the changes there? The default event already defers a lot of calculations into functions. If we did the same for latency, the default behavior could be exactly the same as it is today but it would be easier to customize. hjh Index: Event.sc =================================================================== --- Event.sc (revision 6813) +++ Event.sc (working copy) @@ -274,7 +274,7 @@ ~amp = ~amp.value; addAction = Node.actionNumberFor(~addAction); group = ~group.asUGenInput; - lag = ~lag; + lag = ~getLagInSeconds.value; // ~lag; strum = ~strum; sustain = ~sustain = ~sustain.value; instrumentName = ~instrument.asSymbol; @@ -320,7 +320,7 @@ ~amp = ~amp.value; addAction = Node.actionNumberFor(~addAction); group = ~group.asUGenInput; - lag = ~lag + (server.latency ? 0); + lag = ~getLatencyInSeconds.value(server); // ~lag + (server.latency ? 0); strum = ~strum; sustain = ~sustain = ~sustain.value; instrumentName = ~instrument.asSymbol; @@ -373,7 +373,7 @@ ~amp = ~amp.value; addAction = Node.actionNumberFor(~addAction); group = ~group.asUGenInput; - lag = ~lag + (server.latency ? 0); + lag = ~getLatencyInSeconds.value(server); // ~lag + (server.latency ? 0); strum = ~strum; ~sustain = ~sustain.value; synthLib = ~synthLib.value; @@ -404,7 +404,7 @@ if (freqs.isKindOf(Symbol).not) { ~amp = ~amp.value; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; ~sustain = ~sustain.value; strum = ~strum; @@ -421,7 +421,7 @@ off: #{|server| var lag, dur, strum, hasGate, gate; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; strum = ~strum; hasGate = ~hasGate ? true; gate = min(0.0, ~gate ? 0.0); // accept release times @@ -438,7 +438,7 @@ group: #{|server| var group = ~group.asUGenInput, addAction = Node.actionNumberFor(~addAction); - var lag = ~lag + server.latency; + var lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; server.listSendBundle(lag, ~id.asArray.collect {|id, i| [\g_new, id, addAction, group] @@ -450,7 +450,7 @@ kill: #{|server| var lag, dur, strum; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; strum = ~strum; ~id.asArray.do {|id, i| @@ -464,40 +464,40 @@ bus: #{|server| var lag, array; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; array = ~array.asArray; server.sendBundle(lag, [\c_setn, ~out.asUGenInput, array.size] ++ array); }, gen: #{|server| var lag, genarray; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; genarray = ~genarray; server.sendBundle(lag, [\b_gen, ~bufnum.asUGenInput, ~gencmd, ~genflags] ++ genarray); }, load: #{|server| var lag; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; server.sendBundle(lag, [\b_allocRead, ~bufnum.asUGenInput, ~filename, ~frame, ~numframes]); }, read: #{|server| var lag; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; server.sendBundle(lag, [\b_read, ~bufnum.asUGenInput, ~filename, ~frame, ~numframes, ~bufpos, ~leaveOpen]); }, alloc: #{|server| var lag; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; server.sendBundle(lag, [\b_alloc, ~bufnum.asUGenInput, ~numframes, ~numchannels]); }, free: #{|server| var lag; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; server.sendBundle(lag, [\b_free, ~bufnum.asUGenInput]); }, @@ -511,7 +511,7 @@ ~amp = ~amp.value; ~midinote = freqs.cpsmidi; strum = ~strum; - lag = ~lag; + lag = ~getLagInSeconds.value; // ~lag; sustain = ~sustain = ~sustain.value; midiout = ~midiout.value; hasHate = ~hasGate ? true; @@ -552,7 +552,7 @@ } }, monoOff: #{|server| - var lag = ~lag + server.latency; + var lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; if(~hasGate == false) { server.sendBundle(lag, [\n_free] ++ ~id.asUGenInput); @@ -569,7 +569,7 @@ if (freqs.isKindOf(Symbol).not) { ~amp = ~amp.value; - lag = ~lag + server.latency; + lag = ~getLatencyInSeconds.value(server); // ~lag + server.latency; ~sustain = ~sustain.value; bndl = ([\n_set, ~id.asUGenInput] ++ ~msgFunc.valueEnvir).flop; @@ -685,7 +685,11 @@ }; ~bundle = nil; } - ) + ), + getLatencyInSeconds: { |server| + ~getLagInSeconds.value + ((server ?? { Server.default }).latency ? 0) + }, + getLagInSeconds: { ~lag } ) ); : H. James Harkins : jamshark70@xxxxxxxxxxxxxxxxx : http://www.dewdrop-world.net .::!:.:.......:.::........:..!.::.::...:..:...:.:.:.:..: "Come said the Muse, Sing me a song no poet has yet chanted, Sing me the universal." -- Whitman |