The goal of this project is to provide open source DIY build of FPGA based digital Theremin
Unlike analog theremins, digital theremin is in general capacitive sensor which measures distance from hands to antennas, and digital synthesizer which generates sound.
There is one well known digital theremin on market, Moog Theremini.
Due to high latency, it's mostrly unplayable, just a toy.
There is a good digital theremin project, Open.Theremin but it still uses too poor hardware (Arduino UNO) as a base.
Dewster's D-Lev FPGA theremin project is in development since 2012. Good FPGA based design, produces realistic sound without latency. Although, currently used hardware has not enough resources. Build project for this theremin with professionally made cabinet.
In this project, we will try to provide easy to build DIY theremin design with potentially unlimited capabilities.
Digilent Cora Z7 board (either 7007 or 7010) is inexpensive solution which mets all hardware requirements for this project.
For audio playback / recording, we need some audio codec board(s). Digilent PMod I2S2 and AMP3 were selected.
It makes sense to add touch screen LCD for rich GUI functionality and advanced controls. Waveshare 4.3inch display was selected.
Even with touch screen, it makes sense to have hardware controls: encoders, buttons, pedals.
|Xilinx Zynq 7007/7010 based development board
The Digilent Cora Z7 is a ready-to-use, low-cost, and easily embeddable development platform designed around the powerful Zynq-7000 All-Programmable System-on-Chip (APSoC) from Xilinx. The Zynq-7000 architecture tightly integrates a single or dual core 667MHz ARM Cortex-A9 processor with a Xilinx 7-series FPGA. This pairing grants the ability to surround the processor with a unique set of software-defined peripherals and controllers, tailored for the target application.
Arduino/chipkit shield connector and 2 Pmod connectors
512 MB DDR3 memory
17,600(14,400) LUTs, 35,200()28,800 Flip-flops, 270 KB(225 KB) block RAM
|Digilent store $99/$129||Reference manual|
|24bit I2S 48000Hz stereo Line In / Line Out||Digilent store $21.99||Reference manual|
|24bit I2S 48000Hz stereo Phones Amplifier||Digilent store $9.99||Reference manual|
|5V, 2.5A||Digilent store $12.99||No reference manual|
2x20 2.54mm pin header or FPC connector
Touch screen controller accessible via I2C
|Waveshare store $27.99||Wiki
Theremin cabinet and antennas may vary in wide range.
Proposed cabinet construction may be found on separate page.
|Board||KiCAD Schematic||Gerber file|
Connected to Cora Z7 board using Arduino/Chipkit connector.
Two on-board PMods of Cora board are left unused for future extensions.
Contains additional microSD card socket.
Used to connect other boards
Two identical oscillator boards are needed for theremin: Pitch oscillator and Volume oscillator.
Oscillator output is 3.3V digital signal with frequency which depends on coils (0.3..2MHz).
Each oscillator requires air core inductors with L 0.5..3 mH with high Q (most likely manual winding is required)
Board with audio jack 6 connectors for expression pedals (potentiometer based)
Provides 6 analog inputs to ADC.
Breakout board for mounting of Line In and Line Out
Used to mount two (I2S2 and AMP3) PMods on top of shield board, leaving on-board PMod ports of Cora Z7 board unused for future extension.
Adapters on shield board with PMods:
|No schematic. It's just for mounting of Waveshare 4.3inch 800x480 touch LCD|
This is FPGA PSOC project. Source code consists of two parts: PL (FPGA) and PS (C++ code for ARM core).
Source code is available on GitHub
Design of FPGA IP (SystemVerilog modules) and standalone drivers can be found on separate board related pages