Check out this amazing FPGA project from Cornell University students. The music lovers created a synthesizer sequencer in their final year project at Cornell university, the project was inspired by other musical pads like Monome and Sembeo.
They gave the name of their device is BPGA (Beat Programmable Gate Array); It has some improved features from inspirational devices like ability to sample, compose and store music.
For their project they have used Matlab for GUI creation, National Instruments A/D convertor and Altera DE2 Fpga board with Cyclone II FPGA, Addictive Synthesis is used because of its versatility of generating different types of sounds in an effective manner. In this project National Instrument A/D convertor takes inputs from Matlab GUI and sends it to FPGA via Altera DE2 Board input port. Programmed FPGA reads the input data sequence and send it to 2 points one is sampled instruments stored into ROM and other is additively synthesized instruments. Total 8 Instrument Samples are collected and Send them to Audio Range Compressor, and output of Audio Range Compressor Send to Audio codec which will generate musical sound for humans. It works as described in below flow diagram
Automatic Gain control is used in the project just to ensure that it should not produce inaudible or unpleasant sound output in case of overflow. Matlab can be replaced by touch screen display by using NIOS-II but that makes the project very complex and students have no intentions to make this project as product for commercial purpose.
University Students implemented this in hardware because of its capability to synthesize multiple electronics instruments parallel which at the same time is tough to achieve in software. So there are various debates are going on to make such things inside the hardware but this is a biggest fact it always improves the performance and usability however it is little complex.