tepples wrote:
Memblers wrote:
With the main target platform CPU speed I don't think I'll be able to do interpolation for all the audio channels needed (without taking shortcuts maybe)
I guess linear interpolation is an acceptable shortcut on a microcontroller, if even that's doable.
You can here the linear interpolation (lerp) here, compared to just straight output, with the Super Mario World song. That's not the sample from the game though, just a random piano sample I had sitting around.
http://membler-industries.com/squeedo/. It improves things somewhat I think, not a huge difference, but a comparison to SPC would sound like night and day.
tcaudilllg:
Basically the synth is designed around the code being fast (hopefully for more polyphony, and as little latency as possible). It's designed to have multiple sound modes.
1 - wavetable synth (like GXSCC) but with 256 samples of 8-bits. So you can put whatever shape waveform in there.
2 - samples, with loop points.
3 - Yamaha sound (FM)
4 - Casio sound (Phase distortion)
Some other fun stuff, would be neat to emulate the Atari POKEY sound, or Konami's VRC6.
An instrument will be able to use any of those modes, there is also an envelope system that can be used to control any parameters, which includes triggering other instruments/channels.
More DSP functions could be added in, I thought about the SNES-style echo-buffer, but if it was done optimally it would have to be really short because RAM is limited (128kB in total, lots of it used for stuff). Or at least limited to a certain number of channels.
Right now it uses PortMIDI - portmidi.dll, for MIDI input. Supposedly that library will work in win/linux/mac. I'll have to come up with my own for the MCU I'm using.
It works the same as MIDI right now, 128 instruments, you just give it note-on and note-off and it assigns the sound channels to your notes dynamically. It also uses MIDI NRPNs to edit the instrument parameters (not all of it yet, I'm still sorta doing that in a hex editor, heheh).