[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sc-dev] Event's sustain

At Sat, 29 Nov 2014 15:02:23 +0100,
yota morimoto wrote:
> When using event from Pbind, sustain is calculated as:
> sustain: #{ ~dur * ~legato * ~stretch  };
> which makes legato inconsistent between different tempi.
> When TempoClock's tempo is 1,
> ~legato = 0.5 is staccato,
> but in other cases like tempo is 3,
> ~legato = 0.5 isn't staccato anymore; it overlaps to the next event
> To me it is a problem so
> what I did in Event, to fix this in a crude way is;
> sustain: #{ ~dur * ~legato * ~stretch * TempoClock.default.tempo.reciprocal }

Along with Daniel, I'll have to advise against doing this.

~sustain defines the time at which the event will send a release message to the node: the release will be sent at the current time + ~sustain. (Time is measured in beats.) It's going to be a mess if ~sustain is calculated differently at different tempi. It's a fairly low-level parameter, whose meaning needs to be clear, simple and consistent.

(Note also that you might not be playing on the default TempoClock. If you need to refer to a clock, use thisThread.clock.)

The key point from Daniel's reply is that the default SynthDef has a fairly long release (300 ms). This is unlikely to feel like crisp articulation at any tempo. If you need a staccato feel, then the better approach is to specify the sustain time for the length of note that you want AND provide a SynthDef that releases quickly. (Reductio ad absurdum: I could write a SynthDef for a pad, with a slow attack and release, and then complain that I can't get staccato from it. Blaming it on the default event prototype would be a nonsensical diagnosis.)


sc-dev mailing list

info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/