Just thought I'd share some results from my latest project, a rewrite and vast improvement to my Squeedo sound synth. The biggest functional difference is that I'm making the instrument format native to the synth, rather than everything being controlled by some registers the NES writes to. But I think that's great, since the instrument format (not including any waveform) currently is close to 200 bytes and sure to get larger (mostly because of all the envelopes). But it's all still user-controllable in real-time as it should be, these instruments will exist in RAM for each channel.
A big difference in the code is that the original version was written in PIC18F assembly, and this one is being written in C for portability. So the natural thing to do, before I make the NES board later, is to test out the synthesis as a PC program. I also used 2 cross-platform libraries, SDL and portmidi, so I guess it will work on mac/linux if it's ever any use. It's also my first actual program in C (other than hello world type stuff).
So, for now I've focused on wavetable synthesis like I did on the older version, and mostly the same in that regard. One new feature is being able to cross-fade between 2 different waveforms (using linear interpolation). Features like that are what call for all those envelopes, heheh.
So to get stuff going with it, I've gotten MIDI input working. So now I can use windows control panel to select the Squeedo synth as my MIDI device and hear it wherever I want. Fun stuff. I'm currently cheating with the polyphony, and only allowing one note per channel (unlike MIDI). So most MIDIs don't play right. I'm also totally ignoring the 'drum channel' until I improve the instrument format some more.
Here's a few example songs:
http://membler-industries.com/squeedo/Squeedo%202010-06-29%20-%20Tron%20Theme%20by%20Wendy%20Carlos.mp3
played similar to the arcade game, but using 256 byte square waveform that I manually faded into a sawtooth wave as the song went on
http://membler-industries.com/squeedo/Squeedo%202010-06-29%20-%20Gauntlet%202.mp3
this one uses a 256-byte waveform (same one for every channel) that is a sine wave blended with a sawtooth.
http://membler-industries.com/squeedo/Squeedo%202010-07-10%20-%20Castlevania%20Wicked%20Child.mp3
this one is using a bunch of randomly assigned waveforms for each instrument. These are 32-byte waveforms. Everything is still using the same volume envelope though, so it's still pretty boring for now until I refine the instruments.
--------------------------------------------------------------
EDIT:
see all newer examples here http://membler-industries.com/squeedo/
--------------------------------------------------------------
EDIT (2) April 2013 :
I'm going to start linking to these directly. Note the following!
These songs demonstrate some 256-byte wavetable-based General MIDI instruments, 8-bit sample playing (a timpani drum is the only sample), and the MIDI drum channel. The drum sounds currently use LFSR pseudo-noise only, or an alternate "aliased noise", used for cymbals.
I'll add further edits and eventually bump this thread once other synthesis modes are better utilized.
A big difference in the code is that the original version was written in PIC18F assembly, and this one is being written in C for portability. So the natural thing to do, before I make the NES board later, is to test out the synthesis as a PC program. I also used 2 cross-platform libraries, SDL and portmidi, so I guess it will work on mac/linux if it's ever any use. It's also my first actual program in C (other than hello world type stuff).
So, for now I've focused on wavetable synthesis like I did on the older version, and mostly the same in that regard. One new feature is being able to cross-fade between 2 different waveforms (using linear interpolation). Features like that are what call for all those envelopes, heheh.
So to get stuff going with it, I've gotten MIDI input working. So now I can use windows control panel to select the Squeedo synth as my MIDI device and hear it wherever I want. Fun stuff. I'm currently cheating with the polyphony, and only allowing one note per channel (unlike MIDI). So most MIDIs don't play right. I'm also totally ignoring the 'drum channel' until I improve the instrument format some more.
Here's a few example songs:
http://membler-industries.com/squeedo/Squeedo%202010-06-29%20-%20Tron%20Theme%20by%20Wendy%20Carlos.mp3
played similar to the arcade game, but using 256 byte square waveform that I manually faded into a sawtooth wave as the song went on
http://membler-industries.com/squeedo/Squeedo%202010-06-29%20-%20Gauntlet%202.mp3
this one uses a 256-byte waveform (same one for every channel) that is a sine wave blended with a sawtooth.
http://membler-industries.com/squeedo/Squeedo%202010-07-10%20-%20Castlevania%20Wicked%20Child.mp3
this one is using a bunch of randomly assigned waveforms for each instrument. These are 32-byte waveforms. Everything is still using the same volume envelope though, so it's still pretty boring for now until I refine the instruments.
--------------------------------------------------------------
EDIT:
see all newer examples here http://membler-industries.com/squeedo/
--------------------------------------------------------------
EDIT (2) April 2013 :
I'm going to start linking to these directly. Note the following!
- These are Standard MIDI Files played through the Squeedo synth using a wavetable-based General MIDI instrument set
- I didn't make any of these MIDI files, I'll try to keep the source MIDI's here
- There are not any kind of "finalized" version, mostly I recorded them as a log of my progress on the synth and MIDI instruments, i.e. the instruments were not 'tuned' for any particular song
- These were recorded with the synth engine running on winxp and win7 PC, with Audacity through waveout, post-effect applied was normalization (some earlier ones were pre-amp'ed and clip, ugh)
- Song credit corrections are welcome
These songs demonstrate some 256-byte wavetable-based General MIDI instruments, 8-bit sample playing (a timpani drum is the only sample), and the MIDI drum channel. The drum sounds currently use LFSR pseudo-noise only, or an alternate "aliased noise", used for cymbals.
- Super Ghouls and Ghosts by Mari Yamaguchi.mp3
Street Fighter II - Vega by Yoko Shimomura.mp3
Faxanadu - Overworld by Jun Chikuma.mp3
F-Zero - Ending by Yumiko Kameya & Naoto Ishida.mp3
Dragon Quest 3 - Heavenly Flight by Koichi Sugiyama.mp3
Wrecking Crew by Hirokazu Tanaka.mp3
Simcity (SNES) - Megalopolis by Soyo Oka.mp3
Hostages (Embassy Mission) - by Alberto Gonzales.mp3
GG Shinobi - by Yuzo Koshiro.mp3
Star Solder - Powerup by Hudson Soft.mp3
Nectaris (Military Madness) - NEC_M04 by Jun Chikuma.mp3
Transport Tycoon Deluxe - Small Town by John Broomhall.mp3
Princess Maker 2 - Tournament by Masahiro Kajihara & Ryu Umemoto.mp3
Princess Maker 2 - Tournament Combat by Masahiro Kajihara & Ryu Umemoto.mp3
FoFT by Ben Daglish.mp3
Strider (Arcade) by Junko Tamiya.mp3
Goemon - Cat Kurobei by Konami.mp3
Actraiser 2 - Industen by Yuzo Koshiro.mp3
E.V.O. - Ocean by Koichi Sugiyama.mp3
Actraiser - Sacrifices by Yuzo Koshiro.mp3
Drakkhen Earth Night by Hiroyuki Masuno.mp3
I'll add further edits and eventually bump this thread once other synthesis modes are better utilized.