Where’s the quantize when you need it the most? ;)
Proto 5 has a first ASR (attack sustain release). The MCP42100 (the programmable potentiometer from a previous prototype) generates the enveloppe. Sounds pretty ok, though the attack is a little off which made the playing difficult ;). I will start working on a logarithmic scale instead of a linear scale.
This is the third prototype of my DIY synthesizer. I’m using a 82c54 16-bit timer chip for the voice (one chip has three timers, so three voices should be possible). This chip divides a master clock signal (usually in the Mhz range) through a programmable 16-bit value to create a audible frequency.
An Arduino Duemilanove interprets the midi (CNY17) and feeds a divider value via a shift register (74hc595) to the 82c54 voice. The crystal oscillator clock ticks at 8Mhz so for a 440Hz pulse waveform (central A) the division value is 18182. This prototype cannot produce notes below midinote 47 (B) because of it’s maximum divider value (16-bit = 65.536). Future prototypes will use a clock divider (arduino itself?)
Oh, my synth-playing-skills are well below par ;)
Very much inspired by the Roland Jupiter / Juno series.
This is the prototype from the previous post, with the midi in hardware solution from tetracon (arduino forum).
Timothy Twillman has developed a great Arduino midi library. Very easy to implement, exactly what I needed. Check it out.
The second prototype uses a 74HC595 shift register to adress the datalines of the 82C54. It is now possible to send different divider values to the 82C54 and thus creating different pulse waveform frequencies.
Just now I finished the first prototype using one counter on the 82C54 programmable 16-bit interval timer. This timer divides the masterclock by a programmable 16-bit integer (0-65535). When dividing a crystal masterclock, a very stable and precise pulse waveform can be achieved.
This first DCO prototype uses the Arduino 16 bit timer (timer1) and the midi-in solution from Kuk on the Arduino forum
The Arduino has a hardware 16 bit timer (timer1). This timer offers 15 different counting modes. One of these modes is the so called “Clear Timer on Compare Match (CTC) Mode” (Mode 4):
It is going to be very difficult to get a decent and stable frequency out of the prototype. I even tried removing the MCP42100 (which is obviously not created for this purpose, will use it later again in the filter), which only resulted in a little more stability. Still drifting around 3 hz when tuning at 440hz. Not acceptable for me, so I’ll go the DCO road. Inspired by the Roland Juno 106:
The prototype is making noise and I’m tuning it to musical notes. Unfortunately the drift of various components is to high to maintain a stable tuning :( For example my 440hz A tuning:
The ppm (temperature stability) of the XR2206 is 20ppm/C, fine. The ppm of the DAC is 0.16ppm/C, even better. The ppm of the digital potentiometer (mcp42100) is 800ppm/C! That number explanes the variation in tuning. Off to find a solution!
When using the Arduino board with midi in, it’s necessary to set the baudrate to the midi standard of 31250. Unfortunately, this is a non-default baudrate so the Arduino Serial Monitor cannot display this serial data. Other solution are also dependent on standard baudrates (here) so these won’t work either. One way of working with this limitation is to switch baudrates during development, not very friendly.
The XR2206 sinneb 6v is making semi-controlled noise! Check these design schematics and the sounds. Very nice I think ;) The current prototype is a combination of the XR2206 prototype, microprocessor (Arduino) controlled by the MCP42100 and MCP4912. Right now I’m working on a prototype PCB to explore the musical capabilities of the 6v… Keep you posted.