Firmware

AdditiveVoice

Hype: cold · 23

Additive synthesis voice firmware.

forElectro-Smith Daisy Patch·by@stablum

Unclaimed. Is this yours? Sign in with GitHub as @stablum to claim it.

Download 0.76

additive_voice_0.76.bin· 69 KB

GPL-3.0· stablum/AdditiveVoice·downloads come from the creator’s GitHub releases

Description

Additive synthesis voice

Controls

ControlDescriptionComment
Ctrl1Fundamental1V/Oct Fundamental pitch
Ctrl2Stretch1V/Oct Partial/harmonic multiplier of the fundamental. It's expressed as linear voltage, so an increment of one octave results in an increment of 1 of the multiplier, resulting in an harmonic outcome.
Ctrl3ConstantConstant amount that is multiplied by the partial's integer index and added to the partial base frequency
Ctrl4Partials amplitude controlWhen the amplitude scheme is filter-like, acts like a cutoff
Audio In1LFO or audio-rate frequency modulation inputThis input is not DC-coupled, so patching constant voltages will not work. Anyways, it's possible to add LFOs or even audio rate modulation to it. The input voltage follows the 1V/Octave convention, so an LFO that peaks at +1V and -1V will make the frequencies of all the partials shift of one octave higher and one lower
Audio In4Phase spread for syncWhen Gate In1 is being triggered, the phase of all the partials is being reset to a certain phase. When the sampled input is 0, then all phases are zero; with larger inputs the phase spread among the partials is getting larger. This means that the first partial will always be reset with phase 0 and the last partial is going to have the largest phase value. To exemplify, this is the calculation of the last partial: the input value is divided by 5 and multiplied by 2*pi (hence voltages from 0 to 5V represent the entire circle). All the partials between the first and the last will have intermediate phase values that are also proportional to the partial index. This means that the new phase of the partial with index p is calculated as in4*(2*pi)*p/(5*maxp)
Gate In1SyncSend triggers to this input to reset the phase of all the partials. The phase is configured from Audio input 4
Audio Out1Main outputAll the partials
Audio Out2FundamentalJust the fundamental wave
Audio Out3Last partialJust the last partial
Audio Out4Without fundamentalAll the partials without the first one
Encoder PushNext parameterRound-robin selection of the additional parameters
Encoder TurnAlter parameterChanges the currently selected additional parameter

Additional Parameters

Besides the 4 controls described above, there are a number of paramters that can be accessed via the "menu" implemented by pushing the encoder. By pushing the encoder the next additional parameter will be selected, and by rotating the encoder the parameter value can be changed:

Additional parameterDescription
Pnumber of partials. Its maximum value is 40 for Sine and the Poly* waveforms, 80 for all other waveforms
Ampamplitude scheme that determines the amplitude of the partials. Some of the algorithms (such as LP, BP, HP) mimic a filter
Mldmildness of the slope of the amplitude scheme. It's the number of partials that are part of the partials amplitude ramp. For filter-like amplitude schemes, as the mildness is set as smaller values, the cutpoints become more drastic.
Wwaveform of the partial (see dedicated section)
Polynot implemented yet

Amplitude schemes

The following algorithms to determine the amplitude of each partial are available:

On screenWhat is itDescription
REReciprocalif the CTRL4 knob is turned completely left, then the amplitude of each partial is 1/i where i is the partial index. When the CTRL4 knob on turned completely to the right then the order of the amplitudes is reversed. Every position in the middle is a weighted average of the two situations.
LPLow passSimilar to a low pass filter, it assigns high amplitudes only to the lower partials
BPBand passOnly a window centered on the CTRL4 knob position has high amplitude values
HPHigh passAnalogous to LP, but for the higher partials
NNotchIs the opposite of BP: only a selection of partials centered on the CTRL4 knob position have low or mute amplitudes, the others have high amplitude
CNNormal combVarious notches equally spaced that can be shifted with the CTRL4 knob
CDDifferent combSimilar to C1 but the frequency represented by how many notches are there gets higher as the partial index get higher

The slopes of LP, HP, BP, N, C1 and C2 are linear: in LP it's just a straight line making a triangle with width set with the Mld parameter of amplitudes from 100% of the CTRL4 point to 0% of CTRL4+Mld. With HP it’s the opposite, a triangle that goes from 0% to 100%, while with BP it’s from 100% to 0% at the cutoff point and then back with another triangle to 100%. The same geometry applies to the shape of the notch (N) and the various notches in the comb modes (C1 and C2).

On the screen the last line will illustrate graphically the configuration of the amplitudes of the first 30 partials.

Possible waveforms

The waveforms that one can choose are the ones that are implemented in the DaisySP library and are:

On screenWhat is it
SinSine
TriTriangular
SawSawtooth
RmpRamp
SqrSquare
PTrPolyblep Triangular
PSwPolyblep Sawtooth
PSqPolyblep Square

How to install this firmware in the daisy patch

A pre-compiled binary firmware additive_voice_latest.bin is available in the sub-directory build/ : https://github.com/stablum/AdditiveVoice/blob/master/build/additive_voice_latest.bin

Please use the tool at the page https://electro-smith.github.io/Programmer/ to write the binary firmware to the daisy patch.

Author

Francesco 'Frablum' Stablum

License

Copyright (C) 2020 Francesco 'Frablum' Stablum

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.