Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 237
Posted: Mon Aug 15, 2011 3:36 pm Post subject:
Random Timbre Synthesizer Subject description: FPGA Synth
I've mostly completed a new FPGA MIDI synth project: A Random Timbre Monosynth.
Here is what that means for this synth:
Random waveshapes are generated using a 2 wavetable structure.
While one wavetable plays, the other is filled with a new waveform.
At MIDI clock (or a divide down of it) the synth will respond by generating a new random waveform in the "non playing" wavetable.
Variable time crossfade effect is implemented.
Crossfade time can be as slow as several seconds down to 1 millisecond.
The design also includes a lowpass filter to help limit buzziness if that is not desired. There are other controls that add or subtract from buzziness.
The system used was a Spartan-3E Starter Kit.
The synth also responds to MIDI note number and velocity, but that is not demonstrated in the samples. Portamento is implemented. Sample rate is 100 kHz with a 12 bit DAC.
Some example sound clips are below...
rts_rythmic_1ms.mp3
Description:
Random Timbre Synth Sample: Fast crossfade time with a rythmic change in timbre
Filesize:
337.99 KB
Duration:
0:22
Viewed:
2240 Time(s)
rts_slow_xfade.mp3
Description:
Random Timbre Synth Sample: Slow crossfade time with a rythmic change in timbre
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 237
Posted: Wed Aug 17, 2011 2:47 pm Post subject:
I will make the source available - when I get it finished. Right now, the synth itself works. I found I had 14 K of 18 bit wide block RAM left over, so I'm writing a delay effect into the design. It will go up to 143.36 mSec of delay (100 kHz sample rate), which will be looped. The output will be a wet/dry pan. pretty standard basic stuff, but it sounds nice and the RAM is just sitting there.
It needs a divider for the MIDI clock, right now it switches waveforms on every F8. That's easy, but I have to do it. And there's more testing to do, but I think the heavy lifting is finally over. The state machine has about 80 states in it, so it was "interesting" to debug.
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 237
Posted: Fri Aug 19, 2011 1:23 pm Post subject:
I don't know why I didn't do it in the first place, but I added response to "MIDI start" (0xFA) to synchronize the synth to the sequencer driving it. The MIDI start message resets the MIDI clock divider counter to zero. In the short sample below, you can clearly hear that the waveform changes are synched to the beat. The sequencer was run at 100 BPM. Except for the last note, all the notes are half notes and 4/4 time. The synth's MIDI clock divider was set to 6.
rts_sample_rythmic_using_MIDI_start.mp3
Description:
Sample demonstrates synth's response to MIDI start message.
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat?corruptio optimi pessima Last edited by JovianPyx on Sat Aug 20, 2011 12:21 pm; edited 1 time in total
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 237
Posted: Sat Aug 20, 2011 1:21 pm Post subject:
Source code.
The zip contains the Verilog source code for a Spartan-3E Starter Kit and VB.NET source code for the patch editor. Once expanded, you'll see a directory under "pub" called "Patch_Editor". There you will find the VB.NET source code for the patch editor. It works at least in Visual Studio 2008 VB.NET Express Edition (free). A cable is required to connect the DCE port of the FPGA board to the PC's COM port.
NOTE: The patch editor is a work in progress and was produced by modifying another similar program. The LOAD and SAVE buttons do not work. I believe there is no help file as well, so the Help button may give an error page. The portamento screen values are nonsense, but the slider does what it's supposed to do. Clicking the green SEND button will send the current patch to the synth. Make sure not to send patch data via the COM port while sending MIDI data through the MIDI port.
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 237
Posted: Sun Aug 21, 2011 3:44 pm Post subject:
I use the WebPACK ISE which is free. I am told that the pay-for-it version can get a few more percent of slice usage out of a given FPGA. But I've not had problems with "hitting the wall" that way. All of my synth projects were "compiled" with the free WebPACK ISE. The software is a big download. You have to register to get it. Also the embedded soft microcontroller I use is free as well - PicoBlaze. It's a 25 MIPS 8 bit RISC. The only cash I have invested in this is for the boards themselves. I had to build a tiny electrical interface to go from DAC to "audio out" and also a MIDI receiver. Those schematics are in the docs subdirectory of this project.
I actually like the DAC on the Starter Kit, it goes to 1.0 MHz sample rate. It's only 12 bits, but it actually sounds quite nice IMO, especially driven at high sample rates. The Starter Kit also has DDR DRAM which I've not yet used, but I must. Some 64 megabytes I think. ADCs too, but I've not used those either. 12 bit I think. _________________ FPGA, dsPIC and Fatman Synth Stuff
Time flies like a banana. Fruit flies when you're having fun. BTW, Do these genes make my ass look fat?corruptio optimi pessima
Joined: Nov 20, 2007 Posts: 1988 Location: West Red Spot, Jupiter
Audio files: 237
Posted: Thu Nov 03, 2011 3:03 pm Post subject:
I've made an improvement to the Random Timbre Synth. I've included an interface to the DDR SDRAM on the Spartan-3E Starter Kit that I use to implement a looped delay effect a bit over 20 seconds long.
A "snapshot" of the soundscape while using the synth is in the attached .flac file.
It's called One Note Samba because I put a weight on the sustain pedal and hit a low C. Delay time setting was something between 1 and 2 seconds, feedback was over 90%.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum