Last time I was telling about one Elby Designs module. So, let’s continue the Australian equipment subject with interesting product manufactured under same brand; AVR Synth. This is the virtual analog synthesizer working on AVR-family microcontroller. The firmware of this synthesizer is written in Assembly language. The code is open-source and schematic is also open. I’m going to tell about the original, 16-bit version and about few forks of this project.
Makers and History
The AVRSYN project was started by Polish experimentalist Jaroslaw Ziembicki in the year 2002 as the experiment of making a complete synth on single chip. I’d like to say that slavic people are talented with low-level programming and can get 250% efficiency from obsolete technologies. Initially, the synthesizer was built around 16-bit Atmel AT90S8535 MCU. In 2005—2006 project was continued by Paul Maddox and Laurie Biddulph. Eventually, they developed the PCB, the program code was ported to modern ATMEGA16-8 and the comments were translated to English. At the same time, Biddulph started to sell synthesizer as the Elby Designs product that is still available today.
The project was developed to number of forks like 32-version made by Daniel Kruszina. His version has extended functionality, partial MIDI-control and even the wavetables. This version is also available at Elby Designs. In 2010, James Grahame with a few friends and also, supported by the original developers, made a completely new project, that is called MeeBlip. it differs from the original dramatically and have resonant filter, variable pulse width, ADSR envelope, different switches and pots functions. It also has all controls placed on the same board width the logic part. The further modification with analog filter, MeeBlip Anode was made quite later. But let me get back to original AVR Synth.
How it works
The synthesizer is completely digital, so don’t be confused by terminology used in this article. Wave ariphmetics is 24-bit with 31.25 kHz sample rate. The panel knobs adjust the voltages being fed to MCU’s ADCs. Switches are being scanned by simple matrix circuit. The most of CPU time is used by MIDI messages processing, switches scanning, voltage measurement, etc. Depending on controls state, the main program calculating immediate PCM sample to be transfered to 16-bit parallel R2R resistor ladder DAC. The built-in timer makes interrupts 31250 times a second. During this interrupt routine, a next bit of MIDI stream is being read and the output ports are being updated with the next calculated sample. The virtual structure is quite simple:
- Two oscillators with a pulse and sawtooth waveforms. The second DCO may be detuned by ± 8 semitones or can by switched off. There is octave switches: the common switch and individual switches for each of the oscillators. There is also special cross-modulation mode in which the samples of both oscillators are logically XORed.
- LP filter. The simple filter with no resonance. Can track keyboard. This filter’s equation is amazingly simple. (See the source code for comments explaining the equation)
- LFO. It works in two modes: Cycle or Random. In the cycle mode it generates a pulse or a triangle waveforms. In the random mode it generates a sample and hold waveform or some sort of glided S&H. (Note that respective switch on the front panel has incorrect label: “AR/ASR”!) You can adjust LFO speed and depth and choose between two destinations: DCO or DCF frequency. LFO depth is also controlled by modulation wheel (MIDI CC0) but only when a key is pressed. (I wil explain later why it’s important)The LFO can be reset by a key press.
- AR/ASR Envelope generator. It has two operation modes: Attack-Release (more likely Attack-Decay) or Attack-Sustain-Release. The EG can also loop, like an LFO. The available destinations are main volume and DCF cutoff frequency. It is one of two sources that can affect volume. The second one is raw Gate.
Active MIDI-channel can be set by 4 switches as the binary number (like on the Altair 8800). 16th channel is not available because the value 0 is reserved for MIDI OMNI and all remaining 15 channels correspond to human-friendly channel numbers, starting from 1.
The Kit consists of one PCB, a plastic case, two control panels, component/hardware kits, 40-way ribbon cable and few single wires. The items are well-packed. The components of each value is separated into individual marked packets, and complete kit is kept inside the case. The case itself is well-made and has metal mountings, that make it possible to join the case parts by regular M3 screws. All semiconductive components are packed into anti-static packet. The Alpha potentiometers has very precise path angle, well-aligned with the panel drawing. The panels are made of glass epoxy by the way. The ribbon cable is a half-meter long that is enough for everything.
The kit also has a number of disadvantages. The wires intended to connect back panel and the main PCB are about 10cm that is too short for comfortable wiring. (I had to use my own wires) PCB is well made but all labels in the overlay are designators and not a values, so you always have to check them in the BOM. However, schematics use very little number of various values. By the way, the layout of the current PCB revision has two leads of the MCU mixed up and DIP-socket is pre-installed with one leg bent and tiny wire soldered around.
As is the case with Chaotica, the main disadvantage of DIY-kit is poor documentation. It becomes a huge problem because synthesizer has a bunch of controls to be wired by hand. Documentation includes some schematic diagrams giving required minimum of information, but there is no simple wiring diagram like is present in every Ray Wilson’s project, so I had to spend about an extra hour just to reconstruct it. (And even more to digitize it. If you need to, you can download it) And the whole idea to use hand-wiring in this kind of project is questionable because one additional board adds some value, but saves a lot of time during assembly. This is the same reason why I don’t like the Elby Designs ASM synth, almost perfect in every other aspect. At least, it might be an option!
The second problem was stripping and dividing the wires of the ribbon cables. Imagine ATA-cable? The insulation is very thin, the leads are also thin, you have to do a perfect cuts in a single take or you have a risk to blow up the entire work. Also you need to make some labeling system because a beard of wires can mess up in a moment.
A first impression
The AVR Synth controls are self-explanatory. If you have every component soldered right, any incoming MIDI message will cause LED to blink. If the right channel or Omni is selected, the synth will sound with any setting. The sound is relatively acute because of aliasing, but it has its spirit. The most original sound can be retrieved with the XOR-distortion turned On. It sounds similar to ring modulation. Knobs are sensitive, they work smoothly within the whole range. Unfortunately, that’s all good what I can say about this instrument.
Can you believe it? The synth has no simple volume control, even a simple analog attenuator. There is plenty of space on the back panel, so why do not put MIDI channel switches there and put a damn volume knob on a panel? I don’t know why. The modulation wheel works only when a key is pressed. So, if you’re using a Release stage of the envelope with Mod. wheel turned up, the modulation will disappear as the key is released. LFO and ASR can not be synchronized with the MIDI Clock, which is very unfair for a digital instrument. Filter sounds quite boring without any resonance and it’s only LP. Finally I can hear a little buzz when synthesizer do not sound.
But what disappoint me mostly in the original project is the fact that this synthesizer is virtual, but current firmware does not support any presets. Of course it’s pleasant to twist a knobs in a real time, but why don’t add some way to store presets at least as the series of MIDI CC settings? Maybe it happened because assembler was chosen as the project language. It’s really tricky to make unbuggy complex routines in this language.
In a question of eternal confrontation between digital and analog I must say this. The advantage of the digital is a possibility to virtualize any sophisticated structure and raise complexity limited only by computational resources. Digital also gives ideal tuning, almost noise-free sound and of course, presets with any number of parameters that can be recalled immediately! At the same time, advantage of the analog is very wide frequency band, no head-ache with the Nyquist frequency, almsot unlimited operation speed, non-quantized control, soft dynamics and lot of non-linearities. The presets are also possible with analog devices, but programming support sacrifices the cost and simplicity. (See Buchla or Moog synthesizers)
Concerning AVR Synth 16 as the project itself, undoubtedly it deserves respect as great experiment, but it has no lustre, typical for popular commercial products, so it yet can’t be honestly sold as equipment. 32-bit version is very different and right now I regret that I didn’t choose the 32-bit modification that costs just 6$ more. Concerning Elby Designs model, it is decent, well-made product, but DIY-kit version is spoiled by poor documentation.
Maybe, it would be interesting to construct a digital oscillator or a polyphonic synthesizer based on this concept. But right now it’s better to buy something like Arturia Microbrute
Modularsynth rating: 6/10
The actual rating should be 4/10, but we should keep in mind that it is 9-years old project. There was no yet Monotron, Microbrute or any other cheap analog synthesizer of the present. So, AVR Synth 16 is simply obsolete.