Theo Verelst Local Synthesizer Page

Latest update: may 26, 2005

My latest audio (music) synthesizer experiments from the local server, ready to read.


Mainly currently I've been doing work on  Analog BF533 DSP based MIDI synthesizer in a 19 inch rack unit which is in working state with starting audio generator algoritms burned in flash memory and a Xilinx CPLD board custom connected to the processor bus to give the DSP outside world signal access such a infinite turn knob, switches, displays, and in this case the fully working MIDI-IN interface..

The unit is based on the Blackfin DSP EZ-LITE board from Analog Devices, which is programmed in C from the VisualDSP++ development environment. Apart from the audio pass-through example all the synthesis and effects code is completely my own, even without using books or internet pages as source.

My first experiments now the board is built in the enclosure and now the midi interface works well, with the official opto-coupler to prevent grounding loops and high voltage hazards unlike PC interfaces, have been organ type of notes, with attack and release (in organ jargon 'sustain') curves, with currently 8 notes of polyphony, and with very high additive synthesis quality (24 bits output, over 100,000 long lookup table).

Also, an analog input is available on the back of the unit (with standard stereo Jack) which feeds to the chorus/lesley effect unit, which is part of the software I wrote. The modulation wheel can currently control the lfo's frequency (there are three delay lines with independent high quality sinusodial length modulation), while the main front pannel knob controls modulation depth in 16 discrete steps.

Connected to the high quality audio system, with the 15"subwoofer, that sounds pretty good, as 'clean' but strong organ. See the updatebelow for audio examples.

Some pictures:

 

                Front panel view of the 4 unit high 19" rack unit, the second knob from the right is a clicking infinte controller,
                upper left corner knob is on/off, under the display there are two pushbuttons.


 

                Back side with lid removed: 8 stereo Jacks (of which 3 stereo out and 2 stereo in for the DSP board)
                 The DIN standard MIDI IN plug, an easy to reach fuse, and standard eurocord grounded connector.


 

                The inside with on the left the high voltage parts and the switching supply, in the middle the 16x2 character display
                 and the Xilinx board on the bottom plate, the little MIDI optocoupler input circuitry, and on the right the DSP board
                 with the audio connections, the flatcable coming from the bottom to the Xilinx and in this case a USB connection.

Both the Xilinx and the EZLITE can be programmed from  a PC in-circuit, even pretty easily and quickly. I've used the display before, but currently it is as yet onconnected. Of course it will get a nice interface over the Xilinx. I've given that board various LED displays as experiments already, see for instance my Xilinx and DSP pages.

Since I currently make open source software, here are the xilinx files and the DSP project files (I'll make schematic diagram too, hang on):

VisualDSP+ DSP files:
Initialize.c
ISR.c
main.c
Process_data.c
synth.dpj
Talkthrough.h

Xilinx CoolrunnerII demo board (by Digilent) files:
top2.sch
top2.ucf
dotmatrixdriver1.sch
display1.vhd

I've made captures of the schematics of the Xilinx burnt in circuitry, all completely made by me:

  click here for big version
readable size (big) schematic parts:
upper left     upper right
lower left     lower right

All materials are copyright by me but may be freely used for non-commercial purposes, with mentioning of the original author, and of course I'd prefer the decency of being informed how the materials have been altered and used.

Want a course ?


April 4 2005 Update



Well, the machine is a lot more advanced again, I've updated the DSP program to contain:

   - full regular MIDI messages implementation (though not all options work yet): note on/off with veolocity,  modulation wheel to chorus depth
   - polyphonic key/oscillator assignment with intelligent reassignment (during release) and flexible 2 to 1 oscilator revoicing
   - additive synthesis based oscilators (currently 24 part saw tooth) causing no aliasing errors with over 24 bits accuracy
   - ADSR volume envelope generator with good exponential (unapproximated) behaviour.
   - a well-sounding 4 pole IIR filter implementation, with cutoff frequency coupled to ADSR and seperate cutoff control
   - A 3-way, 3 independent high Q sine LFO strong stereo chorus unit
   - an analog input mixed to the chorus unit
   - a linear 2 button controlled step-trough parameter access program for the LCD display
   - a infinite knob entry program module to change parameters in 256 steps in real time with 2 automatic response speeds
   - a display routine which can respond with decimal numbers on the display on MIDI events.
   - only ONE (1) sample delay of the 48KS/s processing
   - this also holds for all midi control: after the midi message is clocked in, one sample later the notes are started or stopped or changed

so very real time behaviour and latency strictly determined by the theoretical midi protocol speed, with no added variable delay, which makes for very fast and slick and stable playing, almost like on a directly analog keyboard.

On the analog/digital hardware side, I've added:

   - a very high quality audio pre-amplification stage to boost the EZLITE audio outputs (based on OPA627)
   - volume contol for that, also usable as headphone output
   - a +/- 12 Volt regulated supply based on a small toroid transformer
   - the midi-in circuitry (a optocoupler and plug)
   - a 5 volt supply for
   - the LCD display and backlight, with Xilinx connection
   - LCD contrast control knob
   - update of Xilinx programmed circuit with MIDI interface and LCD driving from blackfin bus

  


All this was succesfully tested last friday by dragging the machine (in a bag) to the Cultural Centre of Delft Univerity and demonstrating its current operation and sound quality in the midi studio. Stay tuned, I might be doing a (part of) a workshop shortly about synthesis and DSP algorithms and programming (introductory) demonstrating this machine.


                                             

I've recorded some audio examples with my USB AD/DA converter (see Audio page) from the audio out lines of the synthesizer, just a straight wire from the output of the rack unit to the AD-in of the converter with 44.1kHz / 16 bits (The Blackfin DA converter is 48kHz/24 bit), the unedited wav files are best (though not as superior and prestine as the synth out sounds directly), the mp4 are for slower links:

bass example sound file :       (2.5 MB) wav fomat         (345kB)  mpeg-4 format
brass example sound file:       (3.1 MB) wav fomat         (296kB)  mpeg-4 format

For people wanting to build (parts of) this open source synthesizer themselves, the latest programming files are in this zip file for free downloading. The programs therein for Xilinx and DSP are the same as the ones making the sounds in the audio files, except for programming the parameters.

The connections to the Xilinx/Digilent CoolrunnerII demo board, according to the normal (manual) pin numbering, connector A through C from top to bottom with looking into the connector view, names corresponding to the Blackfin Bus names (and the LCD display and my own midi and knob names) from the official CPLD programming names:

 

Butl/r are push buttons, B(l)X are not used for the synthesizer. This diagram was automatically generated from the design files.


Anouncements for a demonstration of the synthesizer at the Cultural Centre of Delft University, Midi Sound Studio, on the board of the for me well known EE building nearby (where I graduated as EE, and worked):





Also, the synth has been demonstrated (and made sound of course) on the biggest dutch musicians fair, see mile2005 page.



I've found out there are some things different fromt he actual design file in the Xilinx Coolrunner II on the board, so here is a design file set which I recently tested by downloading it in another Digilent/Xilins CoolrunnerII demo board, which I then connected up to the synth hardware and the EZLITE DSP board. This file set works fine (including the .bit programmer file for ISE 7.2 I think):

   Xilinx programming files 3b.zip
   DSP source and programming files 3r.zip

I've recently used the DSP project in Visual DSP++ 4.0.4.0 from Analog Devices, which worked good, from a windows XP machine over the USB programmer cable. IMPORTANT NOTE: to compile like I did, the optimizer must be OFF for all files during compile (link phase doesn't matter) except for the Process_data.c compile phase, there the optimizer MUST be on, or the main DSP routine won't run fast enough. The way to do this is to set optimize off, compile everything, then set it ON, en (re-) compile the Process_data.c file by right clicking, and make the project again after that, without opting for rebuild when the optimizer is on. The remake will link in the one optimized file together with the unoptimized .o files from the other c sources, and create a new executable or flash loadable file.

The connections from the DSP board to the Coolrunner board are according to the DSP manual schematics connector page, part of Databus and Addressbus, NOT-Writeenable, NOT-Readenable, NOT-Asynchronous_memory_select_bank-3.


   








UPDATE Aug 14, 2008
I've added some more necessary materials I forgot to mention here to my recent local diary page 50 , like the ldr file for the wavetable. It should be possible to built the whole machine yourself from all this info, too, though you'd need more than average DIY skills...

 home page [2]       email: theover@tiscali.nl [2]        message directly to site maintainer