Explanation of Waveforms (image of shape?) (SDK Documentation)

Currently the sound waveforms available on the SDK are listed as:

  • playdate.sound.kWaveSine
  • playdate.sound.kWaveSquare
  • playdate.sound.kWaveSawtooth
  • playdate.sound.kWaveTriangle
  • playdate.sound.kWaveNoise
  • playdate.sound.kWavePOPhase
  • playdate.sound.kWavePODigital
  • playdate.sound.kWavePOVosim

Most of these are pretty much what it says on the tin, but the last four, would be great to have better documented.

Perhaps a series of images that show what a few cycles of each look like, when graphed out. As mentioned before, Sine, Square, Sawtooth, Triangle all are pretty much predictable..
but how is Noise generated? How is frequency/note related to it. (It seems to be a buffer of noise data (pink? white? etc) and it's just played slower/faster wrt note

POPhase, PODigital, and POVosim - i can't figure out exactly what these are, nor can I find explanation about them in the documentation. I'd love to know. :smiley:

4 Likes

Sine, Square, Sawtooth, and Triangle are probably static tables.

Noise
Regarding noise I expected classic LSFR, but this could also be a table.

The three waveforms marked with PO are probably derived from Pocket Operator:
POPhase
I think it's phase distortion synthesis, but I don't know because no other parameters are provided.

PODigital
It probably using FM synthesis. . .

POVosim
"Vosim" seems to mean Voice simulator, I think.
I think it's the voice lead you hear in the Playdate intro.

I think there is clearly a lack of guidance around sound of SDK.
Limited effects, unstable tempo, and missing oscillator information. . .
I guess they are busy with maintenance of SDK other than sound.
I'll wait for the update.

1 Like

Exactly right, the first four are algorithmically generated at lower frequencies and then we switch to band-limited wavetables before aliasing becomes audible. There's a bug in there where I normalized the octave wavetables separately without realizing it would change their relative perceived volumes, so at some places you can hear a small jump in volume as you change frequency. One of these days I'll go back and fix that.

The noise waveform is LFSR, yes, with the frequency parameter changing how often it jumps to the next value. I probably got that from the old school video game chips..

As for the PO synths, I honestly have no idea! Years ago David from TE sent us some Pocket Operator code without any explanation and I patched it in. I could spend time sorting out what's going in there and trying to document it, but I'm not sure that would be any more useful to you than just sitting down and playing around with the parameters.

The sound engine has a lot of features that most game devs don't even touch, but they're there because I love this stuff so I put them in. But since they're hiding in the corner we don't get as much feedback and the code isn't tested as well as the rest of the API. I wish I had more time to focus on this part of it but there's a lot of other work to do. One new thing coming up in the next release that I'm really excited about is wavetable interpolation, vector synth style. It's a really simple but effective way to add motion and dynamic control to synths, like FM made possible but without being a huge pain to program.

8 Likes

I’m pretty excited about these waveforms. I’m working on a chip tune jukebox app with an iPod like interface (focus is 8 & 16 bit apu emulation) and I hope to add these waveforms into a visualizer sometime soon.

Hi, I'm new to these forums and working on an Audio tutorial for the synth. I just wanted to say how awesome and honest this response is and how much it makes me feel part of the Playdate development. Thanks for this answer and I'll reach out if I find out more about the Pocket Operator oscillators.

4 Likes