Log In  

This is a tool to allow both time-domain and frequency-domain editing of the new custom sfx waveforms.

Cart #wave_designer-5 | 2024-04-01 | Code ▽ | Embed ▽ | No License

Note for existing users: use the buttons at the top-right to import/export to clipboard, it doesn't happen automatically on every change now.


  • Mouse: click and drag to edit the wave directly (green line), harmonic magnitudes (blue bars in the middle), or harmonic phases (maroon/lavender bars on the bottom). Or click the play button to toggle preview playback, which plays sfx 1 on loop. The waveform is stored in sfx 0.
  • Left/right arrow: switch between a bunch of preset waves.
  • Tracker keys: play notes!


  • Play/pause
  • Undo and redo
  • Set phase to 0 or 0.25 (sin and cos buttons)
  • Keep odd harmonics only (odd button)


  • Time and frequency domain editing, always kept in sync.
  • Mouse drags are interpolated so fast drags work as expected.
  • Import/export your creation to the clipboard as a PICO-8 sfx string, using the buttons at the upper right. You may need to press ctrl-c/cmd-c on the web for this to work; on desktop it should be automatic.
  • You should be able to paste PICO-8 format sfx strings into the cart to load waves (including waves you've designed in this tool).
  • NOTE: if you are using the web version on a Mac, you will have to press some combination of both cmd-C and ctrl-C to copy, and both cmd-V and ctrl-V in order to paste, since the web version is really really finicky about how copy/paste works. You may get a stuck note when this happens.


  • If you want to change the preview sound (sfx 1) you have to edit it in the tracker. You can replace sfx 1 with some other looping sfx if you want, it just needs to use wavetable instrument 0.

Feedback is welcome!

P#142178 2024-02-29 04:59 ( Edited 2024-04-01 04:51)

All Comments


I think there's a bug with where the UI switches from the cursor pointing at the amplitudes to the phases:

...but this seems really useful - definitely gonna muck with it some!

P#142183 2024-02-29 05:52

Ooh, you're right, there's definitely a problem there. I'll look at this tomorrow. Thank you!

edit: I lied, I just looked. I think it should be fixed now?

P#142184 2024-02-29 05:57 ( Edited 2024-02-29 06:03)

Sorry for the delay - yep, fixed! Thank you!

P#142243 2024-03-01 03:55

I love playing with this! Can you explain what the red and yellow indicators on top of the blue bars are. Also, which frequencies do the blue bars correspond to. I'm interested in getting some ooh and aah sounds by boosting the corresponding formant frequencies.

P#142728 2024-03-10 15:53

Thank you! Since the oscillator can be played back at a range of pitches, the blue bar frequencies are all relative to the oscillator pitch, not absolute. The bars are integer harmonics - 1x the base pitch, 2x the pitch, 3x the pitch, etc. Red tips indicate octaves (power of 2 harmonics) and yellow tips indicate fifths (3 times a power of two).

For formants this might make things a little tricky, at least if you want to re-pitch the oscillator, since there’s no good way to fix a frequency component.

P#142736 2024-03-10 19:29

I'm working on project to incorporate custom waveforms into Speako-8 for the voice source. (The SFX is just used as convenient place to store the data for PCM and to allow for easy user editing)

I was wondering if you would be willing to add something your waveform edito to indicate how much DC the waveform is adding to the signal. Basically, Speako-8 needs the area above zero to be equal to the area below zero (if that makes sense.)

P#143859 2024-03-19 16:43

This tool should already automatically strip out the DC component. If you're editing the waveform directly, it won't visually remove DC since that would be disorienting, but the clipboard contents will have DC removed, and as soon as you update any frequency slider the wave will be visually centered again.

You can test this by drawing a way-off-center waveform, then pasting the result into a sfx slot - it should appear centered.

P#143865 2024-03-19 17:23 ( Edited 2024-03-19 17:24)

You've thought of everything!

P#143866 2024-03-19 17:32

This is SO goood!

P#144506 2024-03-26 08:51

Lazy dev shorts for the win!

P#146044 2024-04-08 12:56

This is a very useful tool for experimenting. Does anyone know if it's possible to create an 'acid bass' synth using the new waveform editor? I've tried to get a squelchy bass sound without much success.

P#146092 2024-04-08 17:34

@8bit_gnosis Unfortunately I think that sound is not really going to be achievable with a static waveform. You need a frequency peak to sweep from higher to lower frequencies over the course of the sound. The closest thing achievable with a fixed waveform might be approximating the end state of the sweep, by steeply rolling off higher frequencies, adding a sharp peak right before the cutoff, and maybe slightly flattening out some waveform peaks to vaguely simulate some kind of saturation. But you're going to miss the sound of the filter cutoff quickly sliding down and picking out various harmonics along the way, which means it's really not going to sound right.

My acid bass experiments on PICO-8 have all used PCM.

P#146098 2024-04-08 19:15

@luchak Bummer. Thanks for the detailed explanation.

edit: You're the creator of RP-8! Those are exactly the types of bass lines I want in my game. I guess they still can't be replicated in a game cart. Awesome job with RP8 anyhow.

P#146101 2024-04-08 19:49 ( Edited 2024-04-08 19:53)

This is incredible Oo

P#146600 2024-04-14 09:15

WOW this is fantastic! and the two pico-view articles you wrote are incredibly helpful to understand what's going on and why

P#146990 2024-04-20 02:05

@8bit_gnosis: I read your comment and suddenly realized that you might be able to make the acid work by combining multiple waveforms and a custom SFX instrument that switches between them - made this:


...by grabbing the sawtooth, drawing a low pass with resonance peak - that is, picking a frequency, increasing the values around it, and decreasing values above it - and then doing it again with lower and lower frequency peaks:

It's not cheap, and you'd probably want to save some slots so you could make more variations on where the resonance sweep starts and stops, but it sounds kinda acid!

P#147012 2024-04-20 14:49

@packbat Brilliant! That's far closer to the acid sound I wanted than I ever got. Can't wait to play around with this. Thanks again!

P#147119 2024-04-22 16:16

@packbat That sounds great! Sequencing multiple custom waveforms with another sfx makes a lot of sense.

P#147587 2024-04-29 19:15

[Please log in to post a comment]