SolarOS 4.13.4 manual · app
synth
Open the native synthesizer and sound designer:
synth [--headless]
The app uses the same eight-voice fixed-point engine exposed to Python and Lua, but keyboard and MIDI events reach it directly. On a display, the default graphical interface provides the complete editor described below. --headless suppresses graphical rendering while keeping the same note keys, editing keys, published parameters, control bindings, and MIDI input active. This permits use from a port shell on a headless board after a playback device such as the LEDC PWM audio expansion has been attached. Its Play tab contains the waveform, envelope, volume, ADSR, and piano controls. The Wave tab is a graphical wavetable editor with selectable 16, 32, or 64-point resolution; edits reshape held notes immediately while the piano remains playable, and switching tabs does not rewrite the custom wavetable. The Filter tab adds a resonant low-pass response graph, cutoff, resonance, envelope amount, and an independent graphical ADSR filter envelope. The Oscillator 2 tab adds a second per-note source with waveform, octave, fine detune, and unity-safe mix controls. Both oscillators share the filter and envelopes. The Preset tab provides eight factory sounds and eight persistent user slots. User presets capture both oscillators, both envelopes, the filter, mono/poly mode, glide, and the complete custom wavetable. The Glide tab provides polyphonic or monophonic last-note playback, a hold mode for toggle-style piano keys, and portamento. Hold is session performance state and is not part of a preset. The display also reports active voices, output sample rate, and audio errors. The volume button changes the shared SolarOS speaker volume.
On display targets smaller than 240 pixels wide or 200 pixels high, Synth automatically replaces the full editor with a parameter HUD. The selected control gets a large value and level bar; waveform controls and the Wave tab retain compact graphs; Presets shows one slot at a time. Targets smaller than 112 by 56 pixels use a footer-free micro layout. Physical note keys and MIDI remain active. External parameter/control changes focus the changed parameter until the next local navigation action, which makes a 128-by-64 SH1106 or SSD1306 useful as a synthesizer appliance display. After attaching it as oled0, open Synth on that target with session create synth oled0. During active playing, compact displays defer visualization until note input is quiet so synchronous display transfers cannot take priority over new notes. MIDI notes highlight the matching pitch class on the on-screen piano just like physical note keys.
Controls:
A W S E D F T G Y/Z H U J Kplay one chromatic octave. The positions areTabcycles through Play, Filter, Wave, Oscillator 2, Glide, and Presets.Xhides or shows the on-screen piano keyboard on every tab. When it is- On Glide, select Hold and use
UporEnterto enable it. Each physical or - On Play,
Left/Rightselects the waveform, global volume, or an ADSR knob; - On Wave,
Left/Rightmoves the edit cursor andUp/Downchanges the - On Wave,
Entercycles the editor through 16, 32, and 64 points. New sessions - On Wave,
Bapplies the next square, triangle, saw, Supersaw, sine, or flat - On Filter,
Left/Rightselects cutoff, resonance, envelope amount, or a - On Oscillator 2,
Left/Rightselects waveform, octave, fine detune, or mix; - On Preset, arrows select a factory or user slot and
Enterloads it.V Page Up/Page Downchanges octave from 2 through 6 on any tab.Escor the app-exit key exits and immediately releases audio ownership.
physical, so the Y position is the Z key on a German keyboard. Note input remains active on all tabs.
Number keys 1 through 6 select those tabs in that order.
hidden, the tab's knobs, graphs, panels, or preset list use the freed space; the physical note keys and MIDI input remain active.
terminal piano-key press then toggles its note on or off, and releasing the key does not stop the note. Use Down or Enter to disable hold and release all latched app-key notes. MIDI Note On, Note Off, and sustain keep their normal behavior.
Up/Down changes it, and +/- changes note velocity.
waveform. Shifted arrows move or draw faster, and +/- changes brush size.
start at 16 points. The current waveform is resampled rather than reset.
baseline; R restores that baseline, M smooths, N normalizes, 0 clears, and Backspace or Delete exchanges the current waveform with the undo state.
filter ADSR knob; Up/Down changes it, and +/- changes note velocity.
Up/Down changes it, and +/- changes note velocity. Octave ranges from -2 through +2, detune from -100 through +100 cents, and mix from 0 through 100 percent.
saves the current sound to the selected user slot. Factory presets are read-only.
For an external MIDI keyboard, create and start a named MIDI bus before opening Synth:
expansion bus create midi midi0 tx=gpio1 rx=gpio2
job start midi midi0
synth
MIDI Note On/Off, velocity, sustain (CC64), All Sound Off (CC120), and All Notes Off (CC123) are supported on all 16 channels.
Published parameters
While Synth is running, control parameters exposes these native continuous parameters:
synth.volume: 0 through 100 percent, linear.synth.envelope.attack: 0 through 10000 ms, linear.synth.envelope.decay: 0 through 10000 ms, linear.synth.envelope.sustain: 0 through 100 percent, linear.synth.envelope.release: 0 through 10000 ms, linear.synth.filter.cutoff: 40 through 18000 Hz, logarithmic.synth.filter.resonance: 0 through 100 percent, linear.synth.filter.envelope.amount: 0 through 100 percent, linear.synth.filter.envelope.attack: 0 through 10000 ms, linear.synth.filter.envelope.decay: 0 through 10000 ms, linear.synth.filter.envelope.sustain: 0 through 100 percent, linear.synth.filter.envelope.release: 0 through 10000 ms, linear.synth.osc2.octave: -2 through +2 octaves, linear.synth.osc2.detune: -100 through +100 cents, linear.synth.osc2.mix: 0 through 100 percent, linear.synth.glide: 0 through 2500 ms, linear.
These paths exist only while the app is active. Bindings remain configured when Synth is suspended or stopped and reconnect when it resumes. See man controls for control creation, soft pickup, and MIDI CC mappings.