Hello FPGA lovers! Engineering traditional synth machines using development platforms like Arduino and FPGAs is becoming quite the trend now. Today’s post however takes a twist from the traditional synth machines where sounds are produced by either flicking switches or pressing buttons. The synth machine under discussion is a photosensitive synth machine which uses LDRs interfaced with FPGA in place of button switches and this gives an almost touch screen like feel to the device.
The Hardware required is a FPGA board (adaption may be required), 16 LDRs, 16 high value resistors, a speaker, adequate jumpers and 2 breadboards. The entire project has only 2 sets of hardware implementation off the FPGA board. A speaker is directly wired to the FPGA board besides 16 LDRs which function as the photosensitive keyboard. These LDRs work as a 16 bit Keyboard that inputs signals to the FPGA board to convert to sound signals. The connection diagrams and screen shots are given here.
The coding used for the project has been done in VHDL and the author has given the codes in different modules. The note decoder module on Step 2 is one of the most crucial modules in the whole code as it assigns a particular frequency for the 16 bit value from the LDR keyboard. The sound generator module on Step 4 is the next crucial module as it sends the respective frequency (pitch) values to the speaker interfaced with the FPGA.
Through this link you will find the ucf files for the project. This can be modified according to your convenience in case you would like to add more functionality like sustain buttons and other effects.
Hello FPGA lovers! Today we are going to share another instalment of our YM 2151 post series.
According to the author of the original article (in Spanish), the best way to produce sound using the YM 2151 is to use the 6809 assembler which is a cross targeting assembler seen usually in Motorola and Hitachi Devices. The author has made use of a MAME or a Multiple Arcade Machine Emulator which is the best platform for recreating arcade hardware since conventional FPGA Tools are unavailable for this project (in Spanish).
The author has simulated a project in MAME and has shared the code and registry values along with its explanation. This is more than a blessing in disguise since there is very little documentation regarding the actual simulation and synthesis of sound with the YM 2151 available on the Internet.
The Registry values, name and a short description regarding the function of each register is given in a comprehensive table by the author. The most important of these registry value combinations are:
Registry $60- $7F with Value $ 00 for volume.
Registry $20 with value $C for Left Right output control.
Registry $48 with value $4A for the notes and transposing it through octaves of 8 notes
Though there are a number of other registers given by the author of equal significance, the most important of these is the above quoted three registers as they play a pivotal role in sound production.
The author has also shared the asm 6809 assembler code. The table of registers executed in the code (in Spanish) can however produce a sound just once. To repeat these sounds and modulate frequencies to get a set of notes to play actual music might seem a bit tedious as there will be a need for repeated execution of the source code with some variations in registry values to produce different sounds.
The 8 step Synthesizer is a set of 8 switches with a time line that flows from left to right. A button determines the frequency (higher and lower octaves) of the note. Pressing another button can alter the frequency. This way you can build your own 8 note theme to groove to. This project is highly based upon the Tone Matrix game.
The FPGA board suggested is the Nexys 2, but you can perfectly adapt this project to fit your FPGA board. You may use this other projects as a guide to make your own 8 step synthesizer with your Papilio board. The other 2 things you will need are a speaker for output and a computer for coding/uploading. The board already has all other necessary requirements addressed.
The code for implementing this project is available from the page and it´s divided into modules. The coding language is VHDL (.vhd). I strongly suggest (and the author does it too) you also create a UCF file according to your pin assignment conveniences.
The modules are divided based on functionality and each module is crucial. The clock divider module, for instance, converts the 50 MHz cycles of the FPGA board and gives a smaller frequency which holds the note for an audible time. The square wave module organizes the notes in 8 steps from 440 Hz to 1046.5 Hz which is the scale.
The circuit diagram showing how the components are connected is provided. The significance regarding Frequency incrementing, Play and Pause, Flip Flops and the Mux-Speaker arrangement are well explained. A detailed step regarding Speaker interfacing with the FPGA board is also given in the page.
This project is very straightforward and it will be a fun experience for hobbyists and FPGA learners, for sure.
Synthesizer fans are usually fond of programming them. In the following article, you’ll find out about the author’s approach to program every instrument at a time. Moreover, when reproducing the complex sounds of a particular instrument, the author breaks up the formulas into several articles and details how he got the results.