sensorium / Mozzi

sound synthesis library for Arduino
https://sensorium.github.io/Mozzi/
GNU Lesser General Public License v2.1
1.07k stars 186 forks source link

16 bit wave table support #133

Open daanklijn opened 3 years ago

daanklijn commented 3 years ago

See #132

tomcombriat commented 1 year ago

Hi! Sorry it seems this went a bit under the radar…

@sensorium and @tfry-git any opinion about this? Considering the re-use of code, maybe this can be done in the main Oscil class. I have to say that I never really saw the need of 16bits oscillators as, multiplying an oscillator to another one, or an envelope, already leads to a resolution usually greater than the output capability of many systems. But I might miss some cases!

sensorium commented 1 year ago

Maybe if the library evolves enough ;) , 16 bits could be useful... @daanklijn, if you're around, have you used this in a sketch? Since many processes in Mozzi still expect 8 bit inputs, I don't have an immediate idea of what you could do with 16 bit sources. So an example would be great. If the code works and could be added to Oscil without complication, I'd be open to it...

poetaster commented 5 months ago

I don't know if this is directly related but, I've been looking at porting the 22050 hz wavetable header files (22khz 16 bit signed PCM format ) from https://github.com/poetaster/scarp/tree/main/firmware/Pikobeats into a mozzi context (this is a hardware/software project with multiple types of firmware). I'm not sure the bit depth is an issue at 22050 hz, but if I got it correctly, the current wavetables are limited to 8bits and 16khz?

I'll try converting the some of the sample files to the mozzi format and see how it sounds (PWM on an pi pico).

tomcombriat commented 5 months ago

but if I got it correctly, the current wavetables are limited to 8bits and 16khz?

Well, the wavetables do not have a limiting frequency per se but indeed the sampling rate of the output is 32k maximum, hence giving a bandwidth up to 16kHz. There have been a few tries to double that on performant platform but was not finished).

And yes, so far the wavetables data are 8bits.