Soundbytes proudly presents the Octagon. A new Synth based on
the priciples of the finite element method.
- Description of modules and controllers
- Version history
- Some notes on the theory behind the routing matrix
(c) andreas sumerauer 2012
The Soundbytes octagon uses a mathematical modell of 8
vibrating masses. these can be interconnected by any number of springs
to achive multiple degree of freedom systems.
Does that sound intimidating? Never mind. I think I have provided a
user panel that makes it easy to come to terms with the synth.
A short walkthrough:
The panel has two main sections, on the left there is the
Master section, Here is where all the global settings are made. The
right part with the mixer like layout allows you to tweak the settings
for each of the 8 particles.
MODULES AND CONTROLLERS:
- [Level] - volume control
- [Release] - Volume Amplitude release
Settings for the Continous Controller
- [CC Select] - Selects the controller source. Choices
are Breath, Modulation wheel, Aftertouch. Panel lets You set the
controller amount using level wheel alone(without Midi CC Input) while
Off sets the CC level to zero.
- [Level] - Controller level adjustment.
Controls the properties of the bow. It does not always sound
like one. That is why I have called it the NoBo.
- [Glide],[Grip] - Friction comes in two
flavours. Grip for a body that is not moving, Glide for a moving body.
The grip Coefficient is always higher than the Glide one.(starting a
motion needs a greater force than maintainig it.)
- [Thres],[Width] - Threshold(of speed
difference between particle and surface or between particle and
bow)that switches between glide and grip. With defines the width of the
- [Speed] - Bow Speed.
- [CC Amt] - CC amount. CC Amt set to hard left: CC
has no influence Speed is fixed to the panel value. Hard right: Speed =
knob setting * CC
- [Pressure] - Bow pressure.
- [Noise] - Noise Amount in Bow pressure.
- [Negative] - use for negative Friction force. (use
very carefully to avoid overflow)
An excitation that sounds like scratching with a rough
Use it to give some edge to Your sounds. Sand is controled by the CC
parameter. You can use a similar effect with the Exci envelope by
setting the Noise Level to maximum.
- [Amount] - Sand amount
- [Color] - The 'Grain' of the sand.
- [on] - can be switched off to save CPU power.
Excitation envelope (Envelopes are triggered on NoteOn)
In case You don't want to use a CC for bowing.
Global Damping - Amount of damping that is common to all
Structural Damping. The algorithm is very crude. I just needed
something to get rid of overload. Can also be used for a strange sound
Tweak the spring elasticity to tune the presets
This is the heart of the synth. These buttons define which
particles are connected through a spring. It works very similar to a
patch bay. The buttons in the upper row are meant for connections to
IMPORTANT: A least one of these has to be pressed - otherwise Your
creation will simply fly away when hit. (that can also be fun - but You
won't hear to much ;-)
The Buttons below are for interconnecting the particles. Particles to
the right have less buttons because there can be only one spring
between two elements. So if You want to connect 8 > 2 then think 2
> 8 instead. Look up the second column and hit the last button there.
Here are the first three Columns:
  
   ...
   
     ...
     
particles that have no connection to the ground or to other
elements are muted by default. You should still switch unused particles
off manually to save CPU power. (use [on] buttons below the
How to use the routing Matrix:
Best to use pen and paper here.
- Draw 8 spots
- Write the numbers 1...8 next to the spots
- draw lines between the spots You want to have connected.
- Now look at the first spot. For each line that goes to
another spot hit the respective button in the routing matrix. When the
particle is connected to the ground hit the button in the first row.
- Now do the same for particles 2 ...7 and You're done (why
not 2..8 ? -try it. You'll see...)
The settings in the Screenshot correspond to the pattern in the example
- [Loosen] - This control gradually disconnects the
- [Weirdize] - This Button does does funny things with
particle eight. The effect is a bit chaotic (but not too much). Be
careful when many particles are connected to number eight. Start with a
high damping factor and gradually reduce it to avoid overflow.
- [Tap] - There is a volume sliders for each
particle. The Range is -1...1 to allow for phase switched input.
- [Pan] - Panorama Position of each tap.
- [Bo/B-/Fri/Off] - Friction control.
- Bo - Particle is bowed,
- B- - Particle is bowed but in opposite direction
- Fri - Fricton (bowSpeed=0)
- off - No Friction.
- [Init] - This value controls Excitation Envelope
amount (and also impulse intensity)
- [Local Damp] - The Local Damping value is added to
the global setting.
- [Mass] - The Particle Mass can be tweaked here.
This has a direct impact on the frequencies of the overtones. Matters
are however a bit complex. To get predictable results You'd most
probably have to solve some integrals first.
A simple impulse generator is available for testing purposes.
It has it's own panel.
- [Level] - sets imulse level
- [trigger] - sends the impulse to the synth
- [OnGate] - if selected an impulse is generated with
every Note On message
- [OnReset] - Generates an impulse on Synth reset (F2)
First public release
- Octagon is now Polyphonic. You need a fast CPU to run it
though. Future versions will be switchable between Mono- and
- Added an Amplitude Envelope (necessary in a polyphonic
environment). There is only one parameter: [Release]
- New 'Sandpaper' excitation added. Controls are [Amount],[Color]
and an [on] switch.
- unused Particles can now be switched off. This saves CPU
power and enables higher poliphony for presets that don't utilize all
- added a [color] control for the Noise that is mixed
to the bow excitation
- added a [Weirdize] button to the routing matrix. It
does strange things with particle eight. It was first a routing bug but
I liked it so much that I implemented it as a feature. Be careful when
using it. The feature will introduce energy into the system. sometimes
so much that the synth will stop with a bang. (Don't be worried. There
is a rather effective overload safeguard.) You will then have to reset
the synth engine (F2) to enable sound output again.
- added a [loosen] control to the routing matrix.
This gradually disconnects the particles.
- renamed the local elasticity control to Mass. This is more
in accordance with the idea behind the model. The new parameter behaves
a bit differently. it is 1/elasticity. Introduced an [1/M]
Button so that the knobs can be used both ways.
- Added negative Bow direction. (useful if You want to bow at
different points in opposite directions)
- Added a first preliminary set of 23 Presets.
- reworked the panel layout.
- replaced the Bow algorithm
- fixed some minor bugs
- improved the disconnection algorithm for the Loosen control.
Some Notes on the theory behind the routing Matrix:
A Spring between two Particles is stretched or compressed
according to the current distance between the connected points. (when
So the Springforce between Particle three and five for example can be
(x3 - x5)* K active on particle 5 or
(x5 - x3)* K on particle 3
(All the springs have an equal elasticity K. I am also
assuming small Amplitudes. This is why I can use the linear
On the other hand Particle 3 connected to the ground will be subject to
a spring force:
-x3 * K
So the sum of all the spring forces on a certain particle is
((xa + xb + ... + xn) - (NumberOfSprings * xitself))
Note that -xitself is contributed by each external spring.
The routing Matrix calculates the two necessary values:
Sum of external xses and
Number of springs for each particle.
Look into any of the submacros within the routing Matrix.
(Buttons1 - Buttons8) You will see that the Top button only contributes
to SpringNum while the other buttons also add the input from the
respective particle to the Wave parameter.
(which is actually the Sum of Xses)
The Values of buttons only present at earlier Particle columns are fed
into the Sum through the Macro Input object while the x and SpringNum
values are leaving the macro to be used for the calculation of the
(a huge number of connections to get right. Luckily one went wrong and
that resulted in the Weirdize button)