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
35

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.

Controls:

  • 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!

Buttons:

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

Features:

  • 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.

Limitations:

  • 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!

35


All Comments
1

Yay!

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!


1

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?


1

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


2

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.


1

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.


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.)


2

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.


You've thought of everything!


3

This is SO goood!


3

Lazy dev shorts for the win!


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.


3

@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.


1

@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.


This is incredible Oo


2

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


4

@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:

[sfx]

...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!


1

@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!


1

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



[Please log in to post a comment]