draft: false Name: WaveSeq short-description: "Wavestation-style wave sequencing - up to 32 steps crossfading through a bank of 64 waves - edited from a Music Thing 8mu, with its four buttons paging the faders between wave, time, pitch and level" Language: C++ (Pico SDK + ComputerCard) Creator: XponentOneAudio Version: "0.6.2" Status: Beta License: MIT Editor: web date-created: 2026-10-02 date-updated: 2026-10-09 contact: email: XponentOneAudio@gmail.com # Vendors, unmodified and under their own MIT terms: # ComputerCard.h, EightMU.h (which carries the rppicomidi usb_midi_host # driver, (c) 2023 rppicomidi) # (c) Chris Johnson uf2: - path: UF2/waveseq.uf2 name: Wave Sequencer 0.6.2 tags: - synth - oscillator - wavetable - sequencer - usb-host - midi - 8mu summary: | Wave sequencing, as made famous by the Korg Wavestation: instead of one waveform, the oscillator plays a sequence of them, each for its own time, pitch and level, crossfading from one to the next.

There are up to 32 steps, and a bank of 64 single-cycle waves in eight families - additive, saw to square, pulse width, hard sync, FM, vowels, wavefolding and digital. A step's wave is a position in the bank rather than a choice from a list, so it can sit between two waves.

The sequence is edited from a Music Thing 8mu. Its eight faders edit one bank of eight steps at a time, and its four buttons choose what the faders edit: A is WAVE, B is TIME, C is PITCH and D is LEVEL. A long press of a button chooses the bank (A steps 1-8 to D steps 25-32), and holding a button while moving a fader sets the last step, from 1 to 32; it starts at 8. Pressing a button again flips to its second page: A gives per-step FM amount and B per-step wave scan amount, each multiplying the panel's amount and crossfading between steps; C gives per-step glide, sliding into the step's pitch from the last; and D gives a per-step gate length on Pulse Out 1, from off through to a tie. After a page change each fader picks up its step only once it reaches the stored value, so changing page never makes the sound jump. The 8mu's LEDs show the stored values, with the playing step lit fully. Tilting the 8mu forward and back scans every step's wave together; tilting it left and right widens the detune on Audio Out 2.

Without an 8mu the card plays a default sequence, still under the panel's pitch, speed and crossfade controls. panel: inputs: - id: AudioIn1 name: FM type: audio description: Linear FM of the oscillator, depth set by X with the switch in the middle. - id: AudioIn2 name: Wave scan type: cv description: Offsets every step's wave position, up to 32 waves either way, depth set by Y with the switch in the middle. Works at audio rate. - id: CVIn1 name: Pitch type: cv description: 1V/oct, added to the Main knob. - id: CVIn2 name: Speed type: cv description: Sequence speed, 1V/oct - each volt doubles the speed. With a clock, moves the clock divider/multiplier two steps a volt. - id: PulseIn1 name: Clock type: pulse description: > While clocks are arriving, steps advance on beats instead of by time, each lasting the number of beats (1-8) set by its TIME fader, for clocks anything up to 20s apart. A beat is the clock divided or multiplied by the speed knob (X, switch up): /8 to x8. The card follows the clock from its second pulse, and returns to free running once four of the clock's periods (at least 2s) pass without one. - id: PulseIn2 name: Restart type: pulse description: Restarts the sequence from its first step, with oscillator phases reset. outputs: - id: AudioOut1 name: Out type: audio description: The wave sequence. - id: AudioOut2 name: Detuned type: audio description: The same sequence, detuned by 6 cents - more with the 8mu tilted left or right. - id: CVOut1 name: Step pitch type: cv description: The current step's PITCH as 1V/oct, 0V for no offset, gliding with the GLIDE page. - id: CVOut2 name: Level type: cv description: The current step's LEVEL, following the crossfade, 0-5V. - id: PulseOut1 name: Gate type: pulse description: > A gate for each step, its length set per step on the GATE page (D, second page): off, a fraction of the step (at least 5ms), or tied into the next step. Default half the step. - id: PulseOut2 name: Start type: pulse description: Trigger when the sequence returns to its first step. controls: switch: up: name: Timing description: X and Y set speed and crossfade. middle: name: Modulation description: X and Y set FM amount and wave scan amount. down: name: Direction description: > Momentary. Each tap steps the direction - forward, ping-pong, random - and the top LEDs show which for a second (one, two or three LEDs). knobs: - when: z: up main: name: Pitch description: C1 to C7. x: name: Speed description: Scales every step time, from 1/8x to 8x. With a clock on Pulse In 1 it picks a clock divider or multiplier instead, in eleven equal zones - /8, /6, /4, /3, /2, x1 (centre), x2, x3, x4, x6, x8. y: name: Crossfade description: From a hard cut between steps to a crossfade lasting the whole step. - when: z: middle main: name: Pitch description: C1 to C7. x: name: FM amount description: > Depth of linear FM from Audio In 1, squared law. Each X/Y setting keeps its value; after the switch moves a knob picks up only once turned to its setting's value, so nothing jumps. y: name: Scan amount description: Depth of wave scan from Audio In 2, up to 32 waves either way. leds: - display: list items: - id: LED0 name: Page A / step description: With an 8mu or the web editor, LEDs 0-3 show the button whose page is selected (A-D), steady for its first page and blinking slowly for its second. Without one, they show the playing step - bright for steps 1-4 of each bank, dim for 5-8. - id: LED1 name: Page B / step - id: LED2 name: Page C / step - id: LED3 name: Page D / step - id: LED4 name: Gate description: Follows Pulse Out 1, the per-step gate. - id: LED5 name: 8mu / editor description: Lit while an 8mu, or the web editor, is connected. Blinks fast while the X or Y knob is waiting to pick up its setting.