You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
there were some more ideas in chat that I want to drop here:
maybe at the top level you can set the q output? something like setQ([2,3])
maybe use 1,2 as master out by default and 3,4 as cue by default if it exists
it could default to the second stereo pair on the interface
still requires some more thought about the relation between pattern names (like x in p(x) or 1...9 in p1..p9) and channels and orbits. also how this would work without using named patterns. I kind of like writing a single stack of patterns as opposed to individual blocks with .pX because it's easier to add transformations to multiple patterns at once / groups of patterns. the all function only partly solves this problem as you still cannot transform only a subset of patterns
i also wonder if there would be a use case for being able to use the same orbit for different channels. or the same channel for different orbits
I was thinking they would act more as traditional fx sends in a DAW, maybe you can configure/ set what channles they output to like orbit(1).setChannels([3,4])
kinda like setCps
it seems like the channel should receive the signal without global effects then (aka pre-send / pre-orbit). post-send/orbit can potentially contain effects of other channels then
the question is how would you route the effects into a channel..
the alternative would be to connect the orbit to the channel (post-send/orbit) . then either let the user set the channels and orbits manually or automatically set the orbit to the channel number
or do both with something like .preCh and .postCh
here is how I was thinking it could work: patternA = sound("bd").channels([2,3]).room(1).orbit(1)
orbit(1).setChannels([5,6])
channels 5/6 would receive a completely wet output of the reverb signal, and channels 2/3 would receive a dry signal
the orbit(1).setChannels([5,6]) syntax might not work, because the orbit function is already defined, as you can use any chained function like .orbit(x) also as top level function like orbit(x, pat). maybe just define a single top level function like this: orbitChannel(1, [5,6]). or alternatively the orbit channel could also be set on the pattern: s("bd").dryChannel([2,3]).room(1).orbit(1).wetChannel([5,6])
In any way, this still looks like a lot to write to me if you just want to cue a pattern. Maybe channel should by default set both dry and wet paths to the same channel + use a unique orbit? so s("bd").channel("3:4") would set { dryChannel: [3,4], orbit: '3,4', orbitChannel: [3,4] }. here, the orbit name would just be the stringified channel array
thinking more about cueing, another handy thing could be a function called qChannel(3,4) that would set the default cue channel used by q1 ... q9 or any .q(x). so if you'd do s("bd").delay(.5).q1 you'd automatically get it sent to channels 3 and 4 including dry and wet signal
the problem with the above idea is that the orbit might change when .q1 is changed to .p1 (to send it to the main out). if it's still .q1 , the orbit would be 3,4 (stringified qChannel). when it's changed to .d1, the orbit would be 0,1 (default main channel). There might already be things happening in that orbit, so the delay time / reverb size (which are bound to the orbit) might actually be different in cue (q1) than it is in main out (p1). in reality, you'd expect your cue to reflect what you'd hear later, which is not the case here. so maybe just set the orbit to the q/p value, in this case 1, or by default also 1 when no pq is used. But that default might only be sensible for cueing.. not sure
To me, the easiest/ thing that makes the most sense would be to treat the orbits separately as fx busses and set them with orbitChannel(1, [5,6])
#820 should be merged before approaching these ideas.
anyone feel free to drop more ideas here
The text was updated successfully, but these errors were encountered:
I.e. you set number of channels to pan across that's the same for all orbits, then set an offset per orbit.
When panning things across more than two channels it normally treats them as being in a ring. There are a few control parameters to set how that works.
find a abstraction that allows using a second stereo output as a cue output
here's 2 graphics made bx @daslyfe
channels are implemented in #820
there were some more ideas in chat that I want to drop here:
setQ([2,3])
i also wonder if there would be a use case for being able to use the same orbit for different channels. or the same channel for different orbits
orbit(1).setChannels([3,4])
kinda like
setCps
the alternative would be to connect the orbit to the channel (post-send/orbit) . then either let the user set the channels and orbits manually or automatically set the orbit to the channel number
or do both with something like
.preCh
and.postCh
patternA = sound("bd").channels([2,3]).room(1).orbit(1)
orbit(1).setChannels([5,6])
orbit(1).setChannels([5,6])
syntax might not work, because the orbit function is already defined, as you can use any chained function like.orbit(x)
also as top level function likeorbit(x, pat)
. maybe just define a single top level function like this:orbitChannel(1, [5,6])
. or alternatively the orbit channel could also be set on the pattern:s("bd").dryChannel([2,3]).room(1).orbit(1).wetChannel([5,6])
s("bd").channel("3:4")
would set{ dryChannel: [3,4], orbit: '3,4', orbitChannel: [3,4] }
. here, the orbit name would just be the stringified channel arraythinking more about cueing, another handy thing could be a function called
qChannel(3,4)
that would set the default cue channel used by q1 ... q9 or any .q(x). so if you'd dos("bd").delay(.5).q1
you'd automatically get it sent to channels 3 and 4 including dry and wet signalorbitChannel(1, [5,6])
#820 should be merged before approaching these ideas.
anyone feel free to drop more ideas here
The text was updated successfully, but these errors were encountered: