Mela Lab Module: Euclid (previous title: "Euclidean mode")
complete
Alexey Podolsky
This could work like note echo, repeating the note as long as you hold the note, or a set amount of repeats, like note echo. There would be two main parameters - num of active notes within cycle and the length of the cycle.
Actually, this could be done as separate module or to be added to note repeat.
Adding to note repeat would require adding "cycle length parameter" (as we already have repeats). When cycle length is set not to zero, it works as euclidean, otherwise as usual note repeat.
Another parameter - something like "continuous" mode, emitting new "echoes" as long as the key is pressed.
Nikolozi
complete
Graduated from Mela Lab in the 5.8.2 release.
Nikolozi
Thanks to Samuel Lindeman's feedback I made some improvements to Euclid in
build 322
:New in build 322:
- A new design allows adding Accents.
- The Shift parameter was renamed to Rotate.
- It now has 3 views: Sync, Steps and Accents.
- The Accents page contains new parameters: Accents, Shift and Velocity.
- The Accents parameter sets the number of accented events.
- The Shift parameter sets the accent pattern shift amount.
- The Velocity parameter sets the velocity increase for accented notes.
- The Sync parameter now also supports triplet and dotted values.
Euclid Module (updated version):
- The module converts incoming MIDI notes into Euclidean rhythm.
- The core idea behind Euclidean rhythms is arranging a given number of events as evenly as possible in a pattern.
- The Steps, Pulses and Rotate parameters let you configure the pattern.
- The Accents, Shift and Velocity parameters let you configure the accented events.
- The Gate and Sync parameter lets you configure timing.
- The circular sequencer view lets you visualise the resulting pattern and the current step. It reduces the Accents, Pulses and Steps to coprime values.
- The module works well with Arpeggiator – insert it before Euclid and set the Retrig parameter off.
- The Arpeggiator module now defaults to Retrig mode off on instantiation so that the timing is aligned with the Euclid module when inserted one after the other.
- When combined with the MIDI Source’s Note-On/Off Gate mode the rhythm can be turned into a modulation signal.
- Euclid is a Mela Lab module and part of Collection 3.
Nikolozi
in progress
I'm happy to say I finally got around to implementing the feature. The Euclid module can be tested with the
build 318
.Euclid Module:
- The module converts incoming MIDI notes into Euclidean rhythm.
- The core idea behind Euclidean rhythms is arranging a given number of events as evenly as possible in a pattern.
- The Steps parameter sets the number of steps in a pattern.
- The Pulses parameter sets the number of events in a pattern.
- Using the Shift parameter the pattern can be rotated.
- The Sync parameter sets the length of each step in beats.
- The Gate parameter sets the length of each note relative to the step length.
- The circular sequencer view lets you visualise the resulting pattern and the current step. It reduces the Pulses and Steps to coprime values.
- Works well with the Arpeggiator module – insert it before Euclid and set the Retrig parameter off.
- The Arpeggiator module now defaults to Retrig mode off on instantiation so that the timing is aligned with the Euclid module when inserted one after the other.
- When combined with the MIDI Source’s Note-On/Off Gate mode the rhythm can be turned into a modulation signal.
- Euclid is a Mela Lab module and part of Collection 3.
Using it with Arpeggiator: https://www.threads.net/@nikolozi/post/C_sBV_ABbWT
Using it as a modulator: https://www.threads.net/@nikolozi/post/C_sPf6yBLnQ
Nikolozi
Alexey Podolsky I'm trying to see if I understand the request correctly. Just for simplicity, if we imagine this as a separate module. And let's say the number of active notes within a cycle is 3 and the length of the cycle is 1 bar, then we would get the [1/3, 1/3, 1/3] note pattern?
Or would the length of a cycle be defined in terms of steps? In which case, say you have 8 steps (of 1/8 length, step length would probably be defined by another parameter), then you would get [1/8, x, x, 1/8, x, x, 1/8, x] pattern?
Alexey Podolsky
Nikolozi: so you set the duration of each step (1/4 note, 1/16th) etc. You set the length of the cycle (say, 16 steps) and amount of active steps in this cycle (say, 8 steps). active steps are distributed as equally as possible among all steps. This is euclidean rhythms.
Alexey Podolsky
For notes, gate also can be added, to vary separate note length within step.
Alexey Podolsky
Nikolozi: another parameter I forgot about is offset. So you may shift the whole sequence n steps in each direction. Good source of inspiration for euclidean patters is patterning 2 for ios.
Nikolozi
Alexey Podolsky: thanks for clearing that up. So, far we have these parameters:
- Step duration
- Length of a cycle in terms of step count
- Note length/gate
- Offset/rotation
I guess we would want a retrigger toggle parameter? When it's on retriggers the pattern for each new note. But when it's off the pattern/cycle start times follow the host transport?
So I can understand your use case better. How do you imagine using this? One note at a time for drums or a melody? Or chords? So, if you have several drum hits, do you imagine you would create a new Mela MIDI lane for each drum sound with different Euclidean parameter values?
Alexey Podolsky
Nikolozi: 1)Step duration - you mean amount of active steps? Other than that i think that's right.
I think It should act like an arp - while the note is on, it splits notes according to cycle settings and plays them. So yes, for drums, it would be separate lane for each drum sound. It could be a chord or lead, not necessarily a drum sound. This would make a cool gate effect.
Nikolozi
Alexey Podolsky: oh wait, I missed one, active steps yes. Let me try again:
- Step duration, e.g. 1/4, 1/8 or 1/16 etc
- Length of a cycle in terms of step count.
- Active Steps
- Offset/rotation
(5. Note length/gate, percentage of Step duration. [0, 100%]. Just shortens the note if needed. But this might be redundant, as you could use the Note Length module for it.)
For example, if we have Step Duration = 1/16, Step Count = 8, Active Steps = 3, Offset = 1, then you would get this pattern:
[x, x, 1/16, x, x, 1/16, x, 1/16].
x
means silence and 1/16
means active note. Does this look right to you?When you say "It should act like an arp", do you mean it should actually do the arpeggio patterns (Up, UpDown etc) or it should simply act like a gate? So, if you hold down a chord it will simply chop it up into that pattern?
Alexey Podolsky
Nikolozi: Yes your example is valid. Only with offset = 1, the second note should be active. Your example looks like offset = 2. Besides that, all good.
As for you second part, it should act just like a gate. Otherwise it would be non-necessary module overload - we can add arp further down the chain if needed. When i wrote "like an arp" i meant only that it emits notes only when the input note is on.
Nikolozi
Alexey Podolsky: Thanks for clearing that up. That makes sense to me. Sounds like a useful module.
Regarding the offset, I'll have a closer look to see why I got the different answer from you.