Author |
Message |
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
Posted: Fri Dec 05, 2014 4:10 am Post subject:
VitaSynth: Modular platform based on FPGA. |
|
|
Hi!
I'm launching a hardware platform project for creating digital and analog synthesizers. Each project consists of modules, which one can use as blocks to create the required synthesizer (mono synth, poly synth, organ, etc). In my project each module is created hardwarily within the chip FPGA (digital Field Programmable Array).
I've created enough blocks to assemble a simple synthesizer (MIDI_IN, DCO, ADSR, DCA).
I do not use external(or internal) MCU. All work on the FPGA.
Plan to create and internal blocks for FPGA and external analog blocks, controled from the FPGA (VCF, VCA, PAN, MATRIX).
Already done modules:
- MIDI_IN. Scheme and module. Already supports MIDI messages: channel messages Note ON, Note OFF, Polyphonic Key Pressure, Control Change, Program Change, Channel Pressure, Pitch Wheel Change. SysEx not support yet.
- DCO. Based on DDS. Parameters: a 32-bit accumulator(result) and Adder.
- Note2DDS. Note (0..127) to dds32 adder converter. Uses a table and a little math.
- Note+pitch2DDS. Note (0..127) + pitch (0..8192) to dds32 adder converter. I spent a lot of mathematical experiments (direct calculation, polynomial approximation). In the end, decided to use a table for integer values of notes and linear interpolation between them on the pitch value. Range -1200.. +1199 cents (+-1 octave) when pitch 0...8192.
- DCA. Didital VCA. Calculated within the FPGA. Signal list: in_sig(8bit), in_control(8bit), result(16bit). The formula is simple: result = in_sig * in_control.
- ADSR. Envelope generator (aplha version with some bugs). Input A, D, S, R - 32bit, OUT - 32 bit. To convert the СС values 0 ... 127 in a 32-bit value is used converter lin2exp. With a maximum of attack, the rise time of 12 seconds.
- Audio OUT. I decided not to output sound through one DAC for all voices, but each voice individually. Now I use PWM DAC for each voice. The sampling frequency of 195 kHz, resolution 8 bits. I'm working on modules with the best parameters (deltasigma etc). However, if not to use the digital VCA, the 8 bits for the generation of pure tones must be enough dynamic range (nearly 60 dB). After analog filtering VCF and VCA singhal will already have a normal shape and dinamic range.
- VCA. Analog VCA based on the analog switch. Controlled by PWM signals from the FPGA. Is in the state of testing and debugging.
- VCF. Analog VCF based on the analog switched capacitors. Controlled by frequency signal from the FPGA. Is in the state of development scheme.
- etc...
I've created enough blocks to assemble a simple synthesizer (MIDI_IN, DCO, ADSR, DCA).
As a development platform, I chose Altera. HDL language - Verilog. In my case it's Cyclone 4. But I have to go any other FPGA, which can be fit logic. Text modules simple and is not tied to Altera, so maybe it will work on Xilinx(I do not have the possibility to check).
The idea is to take devboard and attach it to the synth module. Recommended FPGA with the number of cells is not less than 4000 and a hardware multiplier (Cyclone 1-4 series).
For the development board synthesizer I use a homemade board for wire wrapping, wire and special tools.
Tools:
Synthesizer has no external controls. All control is for MIDI commands. To do this, i make VSTI plugin based Ctrlr.com.
Links:
Project page in Russian
Page source and a small documentation in English
A few examples of the sounds (sorry, I'm not a musician):
SAW 220 Hz
Square 440 Hz
Stereo Noise
SAW 200 Hz and SAW 1 Hz to DCA (Digital VCA)
Mixer test (poliphonic sound)
Pitch Wheel Test
I would like to hear your suggestions for the development of the project.
Thanks! Alex.
ps. The project needs your help:
|
|
Back to top
|
|
|
engineer
Joined: Mar 31, 2014 Posts: 11 Location: Frankfurt / Germay
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
|
Back to top
|
|
|
blue hell
Site Admin
Joined: Apr 03, 2004 Posts: 24079 Location: The Netherlands, Enschede
Audio files: 278
G2 patch files: 320
|
Posted: Tue Jun 09, 2015 6:29 am Post subject:
|
|
|
Interesting project!
And nice to see someone still using wire wrapping :-)
Too bad I cannot read Russian. _________________ Jan
also .. could someone please turn down the thermostat a bit.
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
Posted: Tue Jun 09, 2015 6:38 am Post subject:
|
|
|
Blue Hell wrote: | Interesting project!
And nice to see someone still using wire wrapping
Too bad I cannot read Russian. |
Thanks!
My english is very bad.
There is little information in English on GITHUB
https://github.com/UA3MQJ/fpga-synth/wiki |
|
Back to top
|
|
|
Nardu
Joined: Feb 28, 2011 Posts: 62 Location: Braila, Romania
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
Posted: Wed Oct 28, 2015 7:37 am Post subject:
Yamaha YM2149f |
|
|
Im connect sound chip Yamaha YM2149f to FPGA.
YM2149f - is more popular in Russia clone of AY-3-8910 (General Instruments).
This MC is used in the computer ZX Spectrum 48k or highter. Also it was used in gaming arcade machines.
This is not FM chip! Chiptune! 8 bit sound!
More info --> https://en.wikipedia.org/wiki/General_Instrument_AY-3-8910
My sketch of the internal structure of the chip
My MC im mine in old pcb:
It is also necessary to make an additional frequency generator at 1.75 MHz.
Connect FPGA <-> YM2149f
The hardware part is ready. The theoretical part of the program is also studied. It remains only to programming.
So will sound channel of percussion instruments.
https://www.youtube.com/watch?v=cNuJZH2G-00 |
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
|
Back to top
|
|
|
UA3MQJ
Joined: Dec 04, 2014 Posts: 12 Location: Russia
|
Posted: Thu Mar 03, 2016 12:49 pm Post subject:
|
|
|
I use I2S DAC for output signal waveform to analog.
TDA1543 VS WM8716
TDA1543 - 195 KHz - SAW 1000 Hz
WM8716 - 195 KHz - SAW 1000 Hz - with oversampling 128x
The filter based on SVF and switched capacitors was not working.
The main problem in the analog keys 4066. For work i need the power bipolar and bipolar control. I have tried several schemes of converters TTL to BIPOLAR. The best results were obtained with this scheme.
But sheme is not stability. Not allowed an intermediate state of the circuit, or burn out the transistors. At high frequency, the transistors do not have work in switch mode, the keys stop working as switch and overheat.
When all problems are solved, it still does not work because of the crosstalk in 4066.
To solve this problem i search keys dg411 witch bipolar signal power and ttl power for TTL switching of keys.
Also a more simple solution to create a filter, the filter is the use of SVF on integrated IC - MF10ccn.
https://soundcloud.com/vitasynth/vitasound-dco-i2s-dac-vcf-mf10ccn
http://www.youtube.com/watch?v=-cE9PZ33cfg |
|
Back to top
|
|
|
|