The XFM2 Synthesizer Module

The XFM2 Synthesizer Module is the second generation of the XFM DIY Synthesizer Project. XFM2 is a 64-voice, 2-part, 6-operator FM Synthesizer with built-in effects processor, built on an FPGA chip.

82940548_10213084820194329_1373900380894658560_o.jpg

FPGA power-up
Stepping up from the Xilinx Spartan-6 used in XFM, XFM2 is based on the Xilinx Artix-7 35T FPGA chip. With almost four times the capacity of the previous one, this new chip offers plenty of space for a more complex build.

24-bit DAC
Also stepping up from XFM, the simple 16-bit digital-to-analog converters have been upgraded to a 24-bit dedicated chip, with high-end output filters. The analog outputs have then greater dynamic range, higher S/N ratio and lower distortion.

Simplified build
The build is based on two pre-assembled development boards: the Digilent CMOD A7-35T (FPGA, USB, SRAM) and the Adafruit UDA1334A (DAC). This combination allows to get the module running in less than 10 components (about $99 total cost).

Feature Set

  • 2-part, 64-voice polyphony (32-voice for each part)

  • Polyphonic/Monophonic Legato modes

  • The two parts can work as individual synthesizers, or layered

  • 6 operators per voice

  • 2 independent oscillators on each operator

  • 8 waveforms per operator

  • Variable modulation algorithm (extended from XFM to allow for multiple feedback loops)

  • A 7-segment, loopable Envelope Generator for each operator
    (DAD1D2SR1R2, with time and level controls for each segment)

  • 7-segment loopable Pitch Envelope Generator

  • Per-voice LFO with Triangle, Square, Sine, Random waveforms

  • Per-operator adjustable LFO sensitivity for pitch and volume

  • Per-operator adjustable velocity tracking, keyboard tracking

  • Polyphonic /Monophonic portamento

  • Pitch bend range adjustable independently for up and down directions

  • Extensive MIDI implementation (pitch bend, mod wheel, aftertouch, sustain pedal, breath ctl, foot ctl, volume, pan, chorus, reverb, delay, tremolo, etc.)

  • Four per-program assignable Performance Controls, which allow any parameter to be controlled by MIDI continuous controls messages.

  • All synthesizer and effects parameters (300+) adjustable via MIDI system exclusive messages.

  • Two complete stereo-in/stereo-out effect processors (one per part), including:

    • Decimator

    • Bitcrusher

    • Filter

    • Chorus/Flanger

    • Phaser

    • Amplitude Modulator

    • Delay

    • All of above effects can be run simultaneously, for both parts

  • Stereo Reverb with individual sends per part

  • Arpeggiator

  • 128 programs memory (EEPROM)

  • MIDI in, optional thru

  • Samplerate-grade modulations

  • 24-bit stereo analog out

  • Optional Stereo, 24-bit SPDIF digital out

  • Battery friendly, low power operation

  • Fully programmable (connecting it to a PC via USB)

  • 256 microtuning scales

  • Nearly zero latency (< 0.5ms)

  • Extremely fast boot time (< 100ms)

 Schematic

BOM

Wiring (top view)

XFM2_Board_1_02.png

Installation

Once the build is complete, the synthesizer firmware and data has to be installed into the module. A computer (running Windows) is required for this installation. Here’s the procedure:

  1. Download and Install the Digilent Adept 2 software.

  2. Connect the CMOD A7 to the computer USB. Run Adept, and add the board as new device.
    (Device Manager -> Enumerate -> Select CmodA7 -> [enter any name] -> Add Dvc -> exit.

Adept 1.PNG

4. Select the board in the “connect” drop-down, browse for the image loader file CMOD_A7_Loader.bit, then select Program.
A progress bar will track the loading process, which should complete in few seconds with the “Programming successful” message.

Adept 3.PNG

5. Right after completion, the CMOD A7 automatically enters the “image loading mode”.
While in this mode, it’ll receive the firmware image and write it permanently into the board flash memory. Make sure the board remains powered on until the next operation completes.

6. Open a Command window in the folder with the extracted binaries, and run the XLoad utility with the following options (just drag the image file into the window to avoid typing the file path). This operation will take a few minutes to complete.

XLoad 1.PNG

7. Load the alternate tunings definition file, using the following command. Should take a few seconds to complete.

XLoad COM7 -t XFM2_Tunings_100.bin

XLoad 2.PNG

8. Just one more file. Now load the factory test program bank, using the following command:

XLoad COM7 -w XFM2_Factory_Bank_100.bank

XLoad 3.PNG

9. Final step, set the MIDI Channels for both module units. Using any terminal set to 500,000 bps, 8-bit, no parity, 1-stop bit (RealTerm in the example), send the commands (decimal numbers):

42 10 <part 1 MIDI channel>
42 11 <part 2 MIDI channel>
42 12 0

In this example, we set both units to respond in MIDI CH1 and CH2, with no layering.

RealTerm 1.PNG

10. Unplug and plug the CMOD A7 board, plug the audio and MIDI connections and enjoy your new synthesizer module!

 Troubleshooting

XFM2 is an easy build, but those are the worse! to help debugging and finding out what went wrong, the following blog posts might help you.

Wiring the components together

Testing sections (with special test files)

The MIDIScope

Creating User Interfaces

Digital-only build?

Troubleshooting COM port issues

Da blog: general news and updates about the projects