Logickin Plays Logic - Classic Arpeggiator [Synth + Midi Out] (Midi Out Edition!)

Post Reply
User avatar
Logickin λ
Posts: 19
Joined: Sat Sep 08, 2018 8:31 pm

Logickin Plays Logic - Classic Arpeggiator [Synth + Midi Out] (Midi Out Edition!)

Post by Logickin λ » Sun Oct 06, 2019 5:19 pm

I know the post will be quite long, so I will breakdown the post into 3 parts:
- How the module works
- How to use the module - https://warmplace.ru/forum/viewtopic.p ... 352#p17352
- Download link and change log - https://warmplace.ru/forum/viewtopic.ph ... 354#p17354

When I was using Sunvox for awhile, I always want to make an arpeggiator to writing arpeggio easier.
However, I was struggled on 2 main problem:
- How to extract notes from a chord
- How to make a module to count how many notes pressed

These problems was puzzling me for a long time, but not anymore:
Introducing - The Classic 8 Notes Arpeggiator
Image

Sure it looks confusing, I will break the module into multiple parts, to make things easier to explain.
(The newer version might have one or two extra or less modules, but the methodology is the same)
Image

Input:
The input is nothing special since it is just a multisynth that controls all the sound and logic, and
the multisynth under the input is set a static C5 notes for the counter.
There are some multictrl as well, but it is just for control the duty cycle and waveform.

Oscillators:
There are 8 generators, the first one is monophonic, meaning that the polyphony is 1 for it. For every generator below the upper one will have one more voice for it. If you press a triad (a 3 note chord), the generator will assign into the following configuration:
[Osc 1] The last note you pressed
[Osc 2] The second note and the last notes
[Osc 3] All 3 notes
...
This kind of configuration is used for the the following process, voice cancelling.

Voice cancelling:
Here is the interesting part, no matter how complex the waveform is, if it is generated by the same method and trigger by the same time with multisynth without setting random phrase, the phrase must be same (even some of the noise type inside generator).
Here is the example, one pair of generators are set into noise (sampler) while other set are set into sine with inverted one of the signal within a pair. When the signal is combine with an amplifier, it will cancelled out each other (known as destructive interference), result in a silent input.
Image

When it comes to the voice cancelling part, since it is mentioned how generator create the sound, so it can be easily obtained the sound in specific frequency.
Back to the very simple oscillator diagram:
[Osc 1] Voice C
[Osc 2] Voice C B
[Osc 3] Voice C B A
If the signal of Osc 2 is inverted and combined with Osc 3, the Voice C and B will be removed due to destructive interference, only voice A will remain. Same thing if we invert Osc 1 and combine with Osc 2.

if anyone confused, here is a visualization about removing G notes from a C perfect 5th using destructive interference.
Since one of the generator can only generate sine in G, by inverting that sine wave G, it can be removed the G contained inside the C perfect 5th.
Image

Once the extra harmonic content are removed per generator, the individual signal will feed into a group AM modulator controlled by a set of decoder.
* Midi out edition works in similar way but instead of waves, it subtracts DC offsets to control a sound2ctrl to change the pitch in glide.

Counter:
The counter is a generator that generates a constant DC value, where the generator's output is close to the value of 1 unit of DC offset in the amplifier; however, it is still not exactly equals to each other, so adding a distortion with 8bit bit depth to quantize the generator's value into closest 8bit value. How the counter works is that when pressing some keys, the generator stacks the DC offset according the number of key pressed.
Image
The counter still has a bug when there is 0 or 1 voice, the counter still can't cancel the 1 unit DC from amp, while adding more voice to the counter generator, it will cancel N-1 unit of DC offset; nevertheless, this bug is not affected since the 0 voice case is ignored.

Sequence Generator
They are a group of amplifiers that generates a stair function that repeats itself, from 1 step to 8 steps (0 - 7 unit of DC offset). To generate such stair, a track in used for automating the DC offset step by step until it reaches the specific steps. To make the steps run smoothly and without sudden reset, I choosed the LCM of the number from 1 - 8 for the length of the track, which is 840.
Image

Decoders:
Yes! It is the decoder we learnt in logic circuit, except it receives DC offset value instead of Binary number.
The Decoder contains 3 parts: Comparator, Less than 0 Trigger, and a Not Gate.
The comparator compares the value from input based on DC offset. Since it is being absolute in negative, any value cannot be cancelled by each other will becomes a negative value. Distortion has an interesting property that feeding any negative signal to a 1 bit distortion must giving -128 unit of DC offset, result in good for making logic with condition.
In short, if the comparator manage to cancel the input, the distortion will not switch on; otherwise, it will return on DC offset of -128 unit.
Image

To make the decoder more useful, a not gate must be attached after the distortion, so the decoder will only SELECT ONE single modulator channel instead of REMOVING ONE channel.
There 2 groups of decoders, the first choose the number of steps based on the number of notes input, then the other one is used for selecting which oscillators will be played.

EG (Envelope Generator)
The EG is attach to the very last Modulator that controls the overall volume and panning, using the rise and fall of a DC offset.

TLDR (or how it actually works in short)
How the arpeggiator actually works is when a chord is pressed, the counter will count the number of input notes and select the corresponding stair function to control which oscillator will be played, while the chord from each oscillator is broken down into single notes by using destructive interference.

I hope it helps to understand how the module works. I know some of the component is not explained very clearly, I will update the post if any uncertainty is found.

- Ra Logickin [Logickin λ]
Last edited by Logickin λ on Thu Oct 10, 2019 8:02 pm, edited 17 times in total.
Yes, that little bird head robot in discord is me.

My sound cloud: https://soundcloud.com/logickinlambda
My bandlab: https://www.bandlab.com/logickinlambda (this account will be used for posting s****y sound experiment in future)

User avatar
Logickin λ
Posts: 19
Joined: Sat Sep 08, 2018 8:31 pm

Re: Logickin Plays Logic - Classic Arpeggiator

Post by Logickin λ » Sun Oct 06, 2019 5:21 pm

Part 2: how to use the module, limitation and basic patterns:

Even though the module is complicated, it is not difficult to use:
You press keys to the module and that's it! The module will play arpeggio for you!

However, this module can be more complicated than that. When you play or use the module, the ordering of the notes pressed plays as an important role. Due to the single voice behavior of generators, the first note will be played is actually the right most column in the track and end in the left most column. Hence, if you want to play a upward C major broken chord, instead of writing in C - E - G, you need to write in reverse order like shown:
Image

For synth edition, you can also select different velocity, the velocity will only affect the notes of the column, meaning that you can soften or accent some of the notes like shown:
Image
For every root note (RIght most note) will be play as the original loudness, every G4 will be played half as loud, and so on.
If you want to pause a step, use 0 velocity notes in any pitch.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Controllers:

Synth Edition:
Attack and Release:
The attack and release is controlled by an Envelope Generator, the attack and release work the same as the analogue generator, except setting the release to 256 is equivalent as a sustain.
Panning:
The panning is used for setting the ratio between left and right channel.
Waveform:
Easy to understand, change the type of waveform.
Duty Cycle:
Square wave -> |____|¯¯¯¯| > |_____|¯¯¯| > |______|¯¯| > |_______|¯| > |________|| > |_________|

Midi Out Edition:
Glide Response:
you can set this either the note glide slowly or change pitch instantly.
Sample Freq:
Since the module required glide and sound to control, the sample frequency will affect how sensitive in changing of pitch.
Higher the sample freq, the better the response of instant changing pitch in fast notes.
(Still need to disable smooth freq change in analog generator)
-150 Hz is the default frequency, which can handles 16th notes in 120 bpm without glide or 140 bpm with slightly noticeable glide effect.
-1024Hz would enough for the any 1 tick notes changes under 250 bpm(arpeggio pattern effect)
-Any more than 2048 Hz will be too much to be useful. (Not much improvement in sound quality)
Nevertheless, these are just the suggestion and every one might have different preferences.

Don't forget to change the BPM and TPL to change the tempo of the arpeggio, it is recommended for user to set the tempo same as the song if it is the first time to use any metamodule.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Limitation:
The arppegiator is not perfect, it has some limitation:

Synth Edition:
- It cannot change the waveform in real time, perhaps I will release an analogue generator edition, but it will consume more CPU.

Midi Out Edition:
- It cannot support different velocity for individual notes since there is no solution for real time changing velocity for individual notes yet.
- It cannot silent some of the notes like the synth edition does. (I will try to solve this in future)

Happened in both edition
- It cannot change notes while holding some of the notes due to how voices is managed in generators, but it has work around:
Chord that cause problems:
Image
The work around is to find the root note to retrigger as a new chord
Image

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Pattern Example:
In this case I will use C major chord for showing some basic pattern which you can do with this arpeggiator:

Basic going up (Yes, it is correct, the first note starts from right):
Image

Basic going down:
Image

Basic Up and Down:
Image

Alberti bass:
Image

You can create at most 8 steps of sequence including notes with idential pitch or 0 velocity:
Image


And that's about it! If you have any question, please comment down below!
Last edited by Logickin λ on Sat Oct 12, 2019 11:51 am, edited 5 times in total.
Yes, that little bird head robot in discord is me.

My sound cloud: https://soundcloud.com/logickinlambda
My bandlab: https://www.bandlab.com/logickinlambda (this account will be used for posting s****y sound experiment in future)

User avatar
Logickin λ
Posts: 19
Joined: Sat Sep 08, 2018 8:31 pm

Re: Logickin Plays Logic - Classic Arpeggiator [Synth] (Version 1.1 Update!)

Post by Logickin λ » Mon Oct 07, 2019 7:18 am

The module and the demo:
The Original Synth:
Logickin Classic Arpeggiator v1.1.zip
(7.08 KiB) Downloaded 13 times
Midi Out Edition:
Logickin Classic Arpeggiator Midi Out.zip
(7.15 KiB) Downloaded 12 times
Demo:
Logickin's Arpeggiator Demo.zip
(17.71 KiB) Downloaded 11 times

Change log:
- Tired of only having Generator default waveforms? Want to use an arpeggiator to your favorite sunsynth? Feel disappointed due to lack of midi out?
Here it is! Now the arpegiator have a new variant: Midi Out Edition!
Although it don't support velocity, midi out edition will arpeggiate your favorite sunvox modules!
- Combined 2 demos into 1 due to the 3 files limit.
- Replaced with a correct demo
Yes, that little bird head robot in discord is me.

My sound cloud: https://soundcloud.com/logickinlambda
My bandlab: https://www.bandlab.com/logickinlambda (this account will be used for posting s****y sound experiment in future)

User avatar
SawZer
Posts: 208
Joined: Sun Jun 19, 2011 2:26 am
Location: Texas

Re: Logickin Plays Logic - Classic Arpeggiator [Synth + Midi Out] (Midi Out Edition!)

Post by SawZer » Mon Oct 14, 2019 3:34 pm

These modules perform (CPU) way better than they look like they should :P
Awesome work man! This must have required an insane amount of complex thought to get it to work as well as it does.
Creator of the BOX10SVC

User avatar
Logickin λ
Posts: 19
Joined: Sat Sep 08, 2018 8:31 pm

Re: Logickin Plays Logic - Classic Arpeggiator [Synth + Midi Out] (Midi Out Edition!)

Post by Logickin λ » Mon Oct 14, 2019 5:34 pm

SawZer wrote:
Mon Oct 14, 2019 3:34 pm
These modules perform (CPU) way better than they look like they should
Awesome work man! This must have required an insane amount of complex thought to get it to work as well as it does.
Thank you! And it is nice to heard the CPU usage is better than it should :good:
Yes, that little bird head robot in discord is me.

My sound cloud: https://soundcloud.com/logickinlambda
My bandlab: https://www.bandlab.com/logickinlambda (this account will be used for posting s****y sound experiment in future)

Post Reply