OddSID not found

MIDI connected

Play notes Click keys, or use A–Ä / W E T Y U O P for the lettered ones · Z/X changes octave
C4
Ch 1

Synth

How it works
  • Drag or scroll a knob. Shift for fine steps.
  • A knob moved on the synth takes over from the one here.
  • Knob moves on the synth show here and go out as CCs.
  • Green names: what a control does in Instrument mode.
MIDI CCs

Synth Settings

How it works
  • A knob shows the value in use. It is lost at power-off unless stored.
  • Store keeps it on the synth.
  • Double-click a knob to go back to the stored value.
  • Default: the factory value, stored.
Details

Effect Settings

How it works
  • A blank knob is one the effect does not use.
  • Left and right keep their own settings.
  • Chorus I and Chorus II set what the Chorus switch plays in each position.
Details

MIDI CC reference

CCSectionControlValuesWhat it does

Every MIDI CC the synth answers, on USB and DIN MIDI. It listens on the channel set on Settings › Synth, or on all channels when that is Omni.

  • A received CC sets its knob or switch and holds it until that control is moved on the synth. The control then jumps to its own position (no pickup).
  • Moving a knob or switch by hand sends its CC over USB on the MIDI channel (channel 1 when Omni), but only when the 7-bit value changes. A knob being turned ignores incoming CCs for 150 ms, so a DAW echoing them back cannot drag it.
  • Knobs scale 0–127 across their travel; stepped knobs land on the nearest detent. Three-way switches send 0 (bottom), 64 (middle) and 127 (top), and receive 0–42, 43–85 and 86–127.
  • Settings CCs change only the session value: it plays at once and is lost at power-off. Store it on Settings › Synth to keep it.

OddSID Docs

The manual for OddSID and this editor.

Which browsers work?

The editor needs Web MIDI with SysEx, on a secure page (https:// or a local file), and the synth on USB. Without them, the browser synth plays instead.

BrowserWorksNotes
Chrome 43+YesWindows, macOS, Linux, ChromeOS and Android. Recommended.
Microsoft Edge 79+YesWindows and macOS.
Opera 30+YesDesktop; Opera Mobile 80+ on Android.
Firefox 108+ (desktop)YesThe first time, Firefox asks to install a site permission add-on for this page. Accept it to allow MIDI and SysEx.
Samsung Internet 4+YesAndroid.
Brave, Vivaldi, ArcYesChromium based. Brave's Snap and Flatpak builds on Linux lack MIDI; use its own package.
Safari (macOS)NoNo Web MIDI. A third-party Safari extension adds it, untested here.
Any browser on iPhone or iPadNoiOS browsers all use Safari's engine.
Firefox for AndroidNoNo Web MIDI.

Android phones and tablets need a USB-C or OTG cable to the synth; tested on desktop Chrome so far. Support data from caniuse.com, August 2026.

Browser synth

Without OddSID on USB, the editor plays the synth itself: the synth's own firmware runs in this page, so every page works as it does with the hardware. The button top right says Browser synth; browsers start the sound on the first click or key press on the page.

  • Notes from the page's keyboard and from any MIDI keyboard or controller the browser sees play it, and the Synth page's knobs and switches are its panel.
  • Settings, table slots, favorites and Instrument mode are stored in this browser, as the synth keeps them in its flash. The knobs keep the positions the editor last set.
  • The SID player, the C64 and Compare play through it over its own serial port: open it with the Serial button.
  • It needs no Web MIDI, so it also plays in Safari and on iPhone and iPad.
  • Plug in the synth and it takes over; the browser synth falls silent.

SID player

Tunes play through this project's reSID16 engine (GPL-2.0-or-later), at the tune's PAL or NTSC clock and SID model. PSID tunes with up to two SID chips play; RSID tunes do not.

Sort Tables

How it works
  • Drag a table to another slot, or a favorite onto one. Apply saves the moves on the synth.
  • ▶ plays a table, ■ stops it. ✕ deletes one (its slot plays Off), ↶ undoes. ↺ puts the built-in table back.
  • saved marks a slot holding a table you saved.

Update

Installed firmware

Latest firmware

If an update fails
  • The synth stays in update mode, where nothing can harm it. Try again, or save the firmware file and drop it on the RP2350 drive that appeared.
  • A synth that does not show up: hold BOOTSEL on its board while plugging in the USB cable, then
  • On Linux, the browser needs Raspberry Pi's udev rule for the synth in update mode.

Export

Put what is saved on this synth (its table slots) and in this browser (the favorite and hidden instruments and tables) into the repo, so the firmware and this page are built with them. One file carries both, and one command imports it.

Table slots saved on the synth

    Instrument banks saved on the synth

    Drum kits saved on the synth

    Favorite and hidden instruments chosen in this browser

    Favorite and hidden tables chosen in this browser

    Then, in the repo

    1. Export saves oddsid-export.json, anywhere you like: Chrome and Edge ask where, other browsers put it in Downloads. It holds all 60 table slots and Instrument mode's three banks and drum kits as the synth has them now (each slot its saved table, else the built-in one) and the favorite and hidden lists of instruments and tables. Without MIDI it holds only the lists.
    2. From the repo, run
      python3 tools/embed_sidwizard_catalogue.py ~/Downloads/oddsid-export.json
      It writes tools/table-slots.json, tools/instrument-curation.json, tools/table-curation.json, tools/instrument-banks.json and tools/drum-kits.json from the file and says what changed, then regenerates the firmware's sid_wizard_table_slots.h, sid_wizard_favorites.h, instrument_banks.h and drum_kits.h and this page. A file it cannot use changes nothing.
    3. Commit those ten files.
    4. Build and flash the firmware (make upload): its built-in tables, the instruments CC 84 plays and the banks and kits a synth starts with are now the exported ones. Push to RC1 to put this page on oddsid.malm.audio.
    5. Reload the page. It matches the repo now: it drops this browser's copy of the lists, and the Save dialog shows the slots as built-in, since their saved copies are the same tables.

    Instrument panel

     
    How it works
    • Instrument mode starts when the Waveform knob is on Inst, its last slot. Only the knobs the mode uses are here.
    • Voice knobs pick each voice's instrument from its SID's bank; D makes it a drum voice.
    • Each voice listens on its own MIDI channel, set below. Keys puts the note keyboard on that voice.
    • A knob moved on the synth takes over from the one here.

    Instrument Library

    Off: notes play on the synth.
    Filter by tag
    How it works
    • SID-Wizard's instruments, without the drums. Click one to hear it on the synth; click again, or turn a table knob, to stop.
    • The picked instrument also opens on the Tables Importer.
    • Right-click an instrument to make it a favorite, hide it, or tag it.
    • Favorites and hidden instruments go to the synth with Save to synth. Tags stay in this browser.
    • Compare mode plays the instrument through SID-Wizard's own player too, on the lower or upper half of the keyboard, over the synth's serial port.

    Drum Library

    Filter by tag
    How it works
    • SID-Wizard's drums. Click one to hear it on the synth; Back to knobs hands the synth back.
    • Right-click a drum to make it a favorite, hide it, or tag it. Favorites and hidden drums go to the synth with Save to synth.

    Sort

    ★ Favorite instruments CC 84 order

      ★ Favorite drums the Drum editor's order

        How it works
        • Drag a row to its place. ▶ plays it, ■ stops it.
        • Favorite instruments are CC 84 in this order; favorite drums are the Drum editor's order. Save to synth keeps the lists on the synth.

        Tables Library

        Filter by tag
        How it works
        • Tables come from SID-Wizard's example instruments. +n is how many more instruments use the same table.
        • Click a table to hear it on the synth. Click it again, or turn a table knob, to stop.
        • i opens the whole table and where it came from.
        • ★ makes a table a favorite. The Sort tab puts favorites in slots. Favorites and hidden tables go to the synth with Save to synth.

        Drum editor

        Drag a drum onto a pad
        How it works
        • A voice knob on D makes a drum voice. Notes on the drum channel play the kit the Kit knob picks.
        • Each pad is a note, a drum, its pitch and level. Drag a drum onto a pad; Keys from moves the pads to other white keys.
        • Apply saves the kits on the synth.
        • ▶ plays a pad on the Preview voice.

        Instrument editor

        Drag an instrument onto a slot
        How it works
        • Three banks of 15 for Instrument mode. Drag an instrument onto a slot; drag a slot onto another to swap, Alt to copy.
        • Fill on a bank puts the first 15 favorites in it.
        • Apply saves the banks on the synth. A changed slot is marked until then.
        • ▶ plays a slot on the Preview voice until ■ or its knob moves.

        Tables Editor

        How it works
        • Each table type has its own 15 slots. Click a slot to open its table from the synth; click it again to close it.
        • Load from Library… puts a library table in the card.
        • Edits play at once. Save to slot… puts them on the synth.
        • A table knob turned on the synth takes over; click a slot to play the editor's tables again.

        Tables Importer

        SID-Wizard instrument

        How it works
        • Pick an instrument to hear it on the synth with its own tables, ADSR and speed. Nothing is saved.
        • Each table's switch takes it in or out.
        • Save to slot… stores one table in one of its 15 slots. The slot's other tables stay.
        • Turning a table knob on the synth ends the audition.
        Table commands
        ADSR ADSR — four SID nibbles: attack, decay, sustain and release. Each digit ranges from 0 to F. It travels and saves with the WF table, and the synth plays it while that WF table is selected; moving a VCA knob takes that one stage over until another WF table is picked.
        Vibrato VIBR = IFDD — I is depth 0–F (8 cents per step, up to ±120 cents). F is the number of table ticks per half-cycle: 1 is fastest and larger values are slower. DD is the delay before vibrato begins, in table ticks. Either I=0 or F=0 disables vibrato. Example: 6406 = ±48 cents, 6 ticks per half-cycle, start after 6 ticks.
        Speed SPD — bits 0–5 are the WF/ARP delay in 20 ms frames between rows, which the panel Table Speed knob plays at its centre position and makes faster clockwise or slower anticlockwise. Bit 6 lets the pulse table and bit 7 the filter table run at the instrument's multispeed (SID-Wizard's speed bits); at multispeed 1 they make no difference.
        WF value — 10–FD writes SID control/waveform; bit 0 is gate. 30 clears gate and 31 raises it. Gate-off starts ADSR release, so an earlier note may keep sounding briefly. Common values: 11 triangle+gate, 21 saw+gate, 41 pulse+gate, 81 noise+gate. 00–0F waits that many ticks. FE 00–1F jumps to the row in ARP; FE FE uses the WF-knob waveform with gate off; FE FF uses it with gate on. Both WF-knob commands return pitch to the incoming MIDI note. FF stops.
        WF ARP — 00–5F is an upward semitone offset, E0–FF is a signed downward offset, 7F reads one Pitch-table offset and advances the WF row, 80 keeps the current pitch, and 81–DF selects an absolute MIDI note. A single 41 7F 00 WF row holds the first offset; add FE 00 00 to loop back for the next one. DT/AUX sets fine detune; FF keeps its previous value.
        Pulse table — 8x–Fx sets an absolute 12-bit pulse width from x:VAL. 00–7F repeats a signed VAL delta that many ticks. KT is signed keyboard tracking relative to MIDI note 60. FE jumps to the row in VAL and FF stops.
        Filter table — 8x–Fx sets filter mode/resonance; VAL × 8 sets cutoff. High nibble 9=LP, A=BP, C=HP; low nibble is resonance. 00–7F repeats a signed cutoff delta. KT tracks MIDI note 60. FE jumps to the row in VAL and FF stops.
        Pitch table — O1/O2/O3 are signed semitone offsets. A WF table with an ARP 7F row reads one each time that row plays; beside a WF table without one, or with WF Off, they run by themselves, one per 20 ms frame at the Table Speed centre (1/8× to 4× as it turns), added to the WF pitch, and loop where the WF table would call them again: 7E goes back to row 00, NX FF stops. Use key corrects only these results to the nearest note in the chosen major or natural-minor scale; equal-distance notes move down. NX selects the next row; 7F/FE loop and 7E/FF end.

        Log

        Save table

        Load from the Library

        **** HVSC SID PLAYER ****

        64K RAM SYSTEM  HIGH VOLTAGE SID COLLECTION

        READY.

          Info

          Tune info

          Pick a tune in the directory.

          Monitor
          
                                  
                                  
                                  
          Recent tune writes · PAL cycles · 0 writes
          Open the monitor while playback is running.
          Connect the synth to see stream diagnostics.
          Ripper

          Instrument ripper · 0 captures

          Captures instruments while a tune plays. Stop playback to analyze or make an instrument.

          ↑/↓ selects a capture, Enter auditions it.

          Enable capture, then play a tune.

          How it works
          • The tune runs in the browser. It plays through browser audio, or through the synth over USB.
          • Only one program can hold the synth's connection: close VICE first.
          • Volume, Reverb, Chorus, Detune and the SID switch stay live while a tune plays. Disconnect, or play a MIDI note, to give the synth back.
          • Mute: SID1 and SID2 mute a chip, V1–V3 a voice on both chips; Filt freezes the filter.
          • LOAD"*.SID",8 opens a .sid file from your computer.
          Searching for *
          Pick a tune in the directory
          0:00
          -:--
          Mute

          Commodore 64

          READY.

          CHOOSE A DISK IMAGE OR .PRG
          \1\2
          \1Local audio\2
          OddSID mutes
          Drop a disk image or .prg program here