Skip to content

Latest commit

 

History

History
390 lines (247 loc) · 18.5 KB

guide.md

File metadata and controls

390 lines (247 loc) · 18.5 KB

User Guide

The user interface can be divided up into six sections:

  • the Controls area at the top
  • the page which displays the sn oscillator parameters
  • the page which displays the note envelope editor
  • the page which displays the low frequency oscillator parameters and patch bay.
  • the page which displays all the settings with options to save and restore to/from a file.
  • the page which displays miscellaneous information.

Controls

Power On

The Power button enables or disables web audio.

It's technically anachronistic but not superfluous because Chrome and Firefox (and probably the other browsers too) mandate a user action to enable web audio. It also turns out to be occasionally convenient to have a way to stop everything.

Volume

The Volume control sets the output volume. The secondary display around the outside displays the dynamic volume which will vary according to the output of the LFO assigned to the volume plug.

Play/Pause

The Play button toggles between playing the selected MIDI file and pausing playback.

alt-play toggles loop mode - when the loop icon is highlighted, playback will restart on reaching the end of the current MIDI file.

Mode

The Mode button toggles the internal source between a wavetable based oscillator and a DDS oscillator. The difference is that a wavetable oscillator does a lookup against a table of values to generate the audio while the DDS oscillator calculates the waveform on the fly (this isn't what is normally considered DDS synthesis but for want of a better term it will have to do).

In general the wavetable implementation:

  • is more efficient and can play more simultaneous notes
  • generates a slightly less accurate waveform (but TBH you'd be hard pressed to hear it)
  • only recalculates the wavetable when the mouse button is released
  • only recalculates the wavetable for LFO inputs at the animation rate which is much slower (approx. every 16ms) compared to the k-rate (approx. every 3ms). But, as with the waveform accuracy, you probably won't notice unless you're really listening for it.

The DDS implementation is more CPU intensive and cannot synthesize as many simultaneous notes as the wavetable, but:

  • the resulting waveform is more accurate
  • recalculates the waveform at the k-rate so the audio follows the controls as they are adjusted
  • recalculates the waveform for LFO inputs at the k-rate

Envelope

The Envelope button cycles through the favourited envelopes, setting the active synthesizer note envelope to the currently selected envelope.

Load

The Load button downloads the current oscillator and envelope settings to the wavetable synthesizer.

alt-load toggles the load mode between auto and manual mode. In auto mode the updated oscillator and envelope settings are downloaded when the mouse button is released after changing a setting. In manual mode the settings are downloaded by clicking on the load button.

Gain

The Gain control adjusts the internal level to avoid clipping when the level gets too high (or cause clipping if that's what you want). The secondary display around the outside displays the dynamic gain which will vary according to the output of the LFO assigned to the gain plug.

Record

The Record control records the song playing until it ends (or is stopped). The recorded audio can then be downloaded as an OGG file by clicking on the download arrow.

Picker

The Picker control loads a MIDI file for playback. Clicking on the retro cassette tape will open a file picker to load a MIDI file from disk. alt-click will load and queue the file to be played once the current song is finished.

The slots are for MIDI files located at URLs. Clicking on an empty (i.e. not highlighted) slot will open a dialog for a URL and the MIDI file at that URL will be downloaded to browser local storage and assigned to that slot for future use. ctrl-click on the slot clears the MIDI file for that slot and alt-click adds it to the playlist queue.

Keyboard

Just a keyboard (white keys only). Click to play a note and alt-click to hold a note (click or alt-click releases it). Mostly useful for experimenting with settings or creating samples but you might be able to play Three Blind Mice if you are really adept.

OSC

The OSC panel sets the parameters for the three sn oscillators.

shape

The shape button toggles between the available generator shapes (currently ellipse and square). Be warned - if you're wearing headphones, the transition can occasionally be abrupt.

multiplier (m)

The multiplier button sets the multiplier for the basic oscillator frequency, with a range between 1 and 10.Be warned - if you're wearing headphones, the transition can occasionally be abrupt. It's on the TODO list to fix .. sigh ..

eccentricity (ε)

The ε control adjusts the eccentricity (ratio of height to width) of the shape being used as a generator. The transform is highly non-linear with the most effect being heard at the extremes where the adjustment range is also the smallest - to accomodate this, the eccentricity can be set approximately to the desired value usin the ε control and then tweaked using the more sensitive 𝗌 control.

ctrl-click resets the control to 0.

sensitivity (𝗌)

The 𝗌 control is the fine adjustment control for the eccentricity of the shape being used as a generator. It adjusts the value set by the ε control but has a smaller range for the same range of motion.

ctrl-click resets the control to the midpoint.

rotation (𝜃)

The 𝜃 control adjust the angle of rotation of the shape. Audionically (?) the effect is mostly fairly subtle and more apparent as a phase effect (i.e. your ears will hear it while it is changing and hardly at all when it is static) and more audible wih an angular shape like a square. It is most useful for waveshaping an LFO curve but an othewise idle LFO can sweep the rotation back and forth to give it something to do.

ctrl-click resets the control to 0.

amplitude (a)

The a control sets the amplitude of the sn oscillator.

ctrl-click resets the control to the default value.

shift-x (δx)

The δx control sets the horizontal shift of the generating shape to create non-symmetric waveforms e.g. a sawtooth.

ctrl-click resets the control to 0.

shift-y (δy)

The δy control sets the vertical shift of the generating shape. The resulting waveform has a distortion characteristic that can be useful in conjunction with an LFO.

ctrl-click resets the control to 0.

phase (Φ)

The Φ control sets initial phase the waveform component. The effect is barely audible (though it's useful for adjusting the waveform to look nice - y'know for photo ops) but comes into it's own when shaping an LFO curve.

ctrl-click resets the control to 0.

psi (𝜓)

psi sets the left-to-right channel phase difference (±90°) to pan the audio without changing the volume (unlike balance which sets the left-to-right volume). It does not affect visual appearance of the waveform but is audible on headphones, e.g:

  • Reset the controls so that the synthesizer is playing a pure sine wave on the red component only.
  • Adjust the 𝜓 control hard left and the audio will appear to playing on the left only - but by listening to the left and right earphones seperately it's apparent that audio is playing on both left and right at similar volumes.

The psi parameter is (mostly) intended for experimenting with binaural effects and allows components of a note to be placed and moved spatially without affecting the volume e.g. using an LFO.

ctrl-click resets the control to 0.

balance (b)

The b control sets left/right volume balance.

ctrl-click resets the control to 0.

anti-aliasing (AA)

The AA control enable (or disables) the anti-aliasing filter that reduces the effect of aliasing by high frequency components that exceed the Nyquist rate (typically 22050Hz for CD audio). The filter is currently implemented as a biquad low pass filter with a cutoff frequency of 8192Hz and a relatively gentle 12dB/octave rolloff.

ENV

The ENV panel sets the parameters for the audio envelope that can be applied to the notes played by the synthesizer.

There synthesizer provides twelve envelopes that can be selected and edited individually:

  • four basic AR envelopes
  • eight ADSR envelopes

Clicking on any envelope button in the envelope grid selects that envelope as the current envelope for the synthesizer and displays the envelope parameters in the envelope editor. Changing the envelope parameters for the envelope in the editor will update the active envelope in the synthesizer and envelope settings are saved across sessions in the browser local storage.

envelope

The envelope button selects the envelope attached to that button as the active envelope in the synthesizer and displays the envelope parameters in the envelope editor. A highlighted star icon on a button indicates that the envelope is favourited i.e. included in the list of envelopes that can be cycled through by clicking on the synthesizer ENVELOPE button at the top of the page.

  • alt-click on an envelope button will toggle the favourited star icon.
  • ctrl-click on an envelope button will reset the envelope to the predefined default values for that envelope.

An envelope with all parameters set to the default values for that envelope type is displayed dimmed. It can still be used as the active envelope in the synthesizer but it's a place to start rather than anything particularly interesting.

An envelope has 4 regions:

attack

attack is the initial time from note onset until it reaches the maximum value. The attack is set directly by dragging the red triangle in the editor or alternatively using the attack scrubber .

decay

decay is the time from when a note reaches it's initial maximum value until it reaches it's sustained level. The decay is set directly by dragging the purple square in the editor or alternatively using the decay scrubber.

sustain

sustain is the level at which a note plays while held. The sustain level is set directly by dragging the indigo line in the editor or alternatively using the sustain scrubber.

release

release is the time from when a note is released until it stops playing altogether. The release is set directly by dragging the yellow diamond in the editor or alternatively using the release scrubber.

AR envelopes only have two regions - attack and release but can be considered ADSR envelopes with a fixed decay of 0 and a sustain level of 1.

LFO

The LFO panel sets the parameters for the four LFO oscillators. The LFO oscillators comprise three independent (red, green and blue) oscillators and one oscillator (orange) that is the sum of the other three, allowing for a complex waveform. The operation of the LFOs is a litle counter-intuitive:

  • the waveshape and amplitude of the main LFO (orange) is as displayed on the waveform
  • the red, green and blue LFOs however have a fixed amplitude so even when the amplitude (a) control is set to zero, they can still be used as parameter modifiers for the sn oscillators. A bit of experimentation should make it clear.

shape

The shape button toggles between the available generator shapes (currently ellipse and square).

multiplier (m)

The multiplier button sets the multiplier for the basic oscillator frequency, with a range between 1 and 10.

eccentricity (ε)

The ε control adjusts the eccentricity (ratio of height to width) of the shape being used as a generator. The transform is highly non-linear with the most effect at the extremes where the adjustment range is also the smallest - to accomodate this, the eccentricity can be set approximately to the desired value usin the ε control and then tweaked using the more sensitive 𝗌 control.

ctrl-click resets the control to 0.

sensitivity (𝗌)

The 𝗌 control is the fine adjustment control for the eccentricity of the shape being used as a generator. It adjusts the value set by the ε control but has a smaller range for the same range of motion.

ctrl-click resets the control to the midpoint.

rotation (𝜃)

The 𝜃 control sets the angle of rotation of the generating shape which has the effect changing the waveform as well as moving it left and right (unlike the phase control which just moves the waveform left and right).

ctrl-click resets the control to 0.

amplitude (a)

The a control sets the contribution of the LFO component to the in the summed LFO waveform. The corresponding LFO amplitude is not affected by the amplitude control, allowing the the LFO component to be used as a parameter modifier even when the ampitude is set to zero.

ctrl-click resets the control to the default value.

shift-x (δx)

The δx control sets the horizontal shift of the generating shape to create non-symmetric waveforms e.g. a sawtooth.

ctrl-click resets the control to 0.

shift-y (δy)

The δy control sets the vertical shift of the generating shape to get some truly weird LFO curves.

ctrl-click resets the control to 0.

phase (Φ)

The Φ control sets the phase of a waveform component which is really useful moving the peak back and forth to get an LFO waveform of a desired shape.

ctrl-click resets the control to 0.

on/off

Although an LFO may have a waveshape, frequency and patch it is not active unless specifically activated by the associated toggle button.

frequency (f1, f2, f3 and f4)

The base frequency for each of the four LFOs can be set independently, over a range of 0.1Hz to 11Hz. The base frequency for the primary LFO is that set by the yellow ƒ₁ control. The frequency of the secondary LFOs is the base frequency set by the associated control multiplied by the SN oscillator multiplier. Which makes things interesting, complicated and occasionally fun and will probably be rethought one of these days.

range

The range controls set the output swing of an LFO over the range of the destination SN parameter. Mostly the entire range is used and the SN control sets the range, but for something like volume it's often desirable to vary it over a smaller region e.g. the top 20%. Dragging the top and bottom of the associated range control adjusts the output swing.

Patchbay

The patchbay assigns LFOs to SN oscillator parameters - drag 'n drop the ends of the patches. There are a couple of parking places on the left to keep unused patch cables out of the way.

Settings

The settings page displays the numeric (or text) values for all the current parameters, with options to:

  • Save the current values as a JSON file
  • Restore the settings from a saved file
  • Clear everything to the default values (the Reset button only resets the OSC parameters, not the envelope or LFOs).

Save

Saves the current settings as a JSON file. Checking the timestamp option defaults to a file named snyth-YYYY-MM-dd HH-mm-ss.json otherwise it defaults to simply snyth.json". Checking the wavetable option includes a 360 point wavetable in the JSON file and checking the MIDI option includes the MIDI file data in the saved JSON.


Restore

Restores the current settings from a JSON file. If the file includes MIDI data, that is also restored, otherwise the current MIDI file selection is retained.

Clear

Resets everything (except the MIDI file) to the default settings.

Info

Basic application information, attributions for CCL licensed content and the cookies policy.