Is there a way to trigger with "once" but not until the beginning of the cycle?
Thanks! I played around with qtrigger
but it appears to have no effect on what I am working on.
For context I am sending midi clock to a 909 drum machine with this:
p "midiclock" $ midicmd "midiClock*96" # s "roland"
When I execute the following it syncs with the 909 quite nicely.
d1 $ n "e2 f2 f2 f2 f2 f2 f2 f2" # s "akai" # midichan 0
When I attempt this however .. it is not in sync with the 909 or d1.
once $ n "e2 f2 f2 f2 f2 f2 f2 f2" # s "akai" # midichan 0
qtrigger had no effect when I tried like this
once $ qtrigger 1 $ n "e2 f2 f2 f2 f2 f2 f2 f2" # s "akai" # midichan 0
Is there a way to execute once
so it fires off only at the beginning of the next cycle?
Interesting - I'm afraid I'm really not sure from here, I recall doing a similar battle with seqP
blocks many months ago which I don't think I ever resolved
Hello @Albert this is because with once
you trigger your pattern immediately one time.
You can try the functionality by executing something like once $ s "bd"
serveral times fast with your keyboard. It is not quantized to the current global cycle position.
When you use qtrigger
without once
it is quantized to the current cycle position. So everything should be synchronized when you simply use it like
p "midiclock" $ midicmd "midiClock*96" # s "roland"
d1 $ qtrigger 1 $ n "e2 f2 f2 f2 f2 f2 f2 f2" # s "akai" # midichan 0
The number 1
in qtrigger
refers to the channel id. So for d1
you need to use qtrigger 1
for d2
you need to use qtrigger 2
(or p 4 $ qtrigger 4
) and so on.
When you just want to play your pattern once but quantized you need a custom function like:
-- Maybe there is a more elegant way then abusing seqP for this?
seqC x y pt= (p x . (|< orbit (x-1))) $ qtrigger x $ seqP [(0, y, pt)]
once' x = seqC x 1
And use it like:
p "midiclock" $ midicmd "midiClock*96" # s "roland"
once' 1 $ n "e2 f2 f2 f2 f2 f2 f2 f2" # s "akai" # midichan 0
This will start your sequence with the beginning of the next cycle and just play it once.
Hopefully this helps you!
I think a once'
that triggered on the next cycle boundary would be possible to implement, but for some reason the version I've been trying out is consistently about 20-30 ms too early, which can sound really weird. I'll see if I can figure out what's going on.