Giter VIP home page Giter VIP logo

map588 / digital-synthesizer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from laura-regan/digital-synthesizer

0.0 0.0 0.0 2.38 MB

Digital music synthesizer designed for the Zynq FPGA+SoC. Audio synthesis and digital signal processing is performed in hardware modules designed in VHDL. Control of the modules and communication with external MIDI equipment is handled by the ARM processor.

Python 0.01% C 7.61% Tcl 31.31% VHDL 55.16% SystemVerilog 4.71% Makefile 0.43% CartoCSS 0.76%

digital-synthesizer's Introduction

Digital Synthesizer

This repository contains the Xilinx Vivado and SDK project files for a digital music synthesizer implemented on a Xilinx Zynq 7020 SoC+FPGA. The project was developed using a Zedboard development board and a I2S2 PMOD from Digilent.

Audio synthesis and digital signal processing is perfomed in the programmable logic part of the SoC. The synthesizer was designed to be modular, all DSP functions are implemented as individual modules and communicate with eachother using the AXI Stream protocol, allowing modules to be easily added and removed as well as connected in different ways. Modules each have a AXI4 Lite interface so that their parameters can be configured by the ARM processor.

The Zynq's ARM processor was programmed to use the on chip XADC to sample the dials of a custom interface and configure the corresponding modules in the synthesizer using the AXI4 Lite protocol, an analog multiplexer PCB was designed to multiplex between the multiple dials. The ARM processor also uses a UART core along with a custom designed MIDI interface PCB to communicate with external MIDI equipment such as MIDI keyboards. A I2S transceiver was designed to transfer audio samples between the synthesizer's modules and the 24-bit DAC on the I2S PMOD. All hardware modules were written in VHDL.

To aid in the control and testing of the synthesizer during its development an application was developed using Qt to act as a virtual interface.

The current synthesizer implementation includes three numerically controlled oscillators, three LFOs, two ADSR envelope generators, a numerically controlled amplifier, a digital implementation of the Moog ladder filter and a mixer. All modules have a polyphony of 128 independent voices. The audio sampling rate of the design is 96kHz and the data size is 24-bit.

Block diagram

The following block diagram displays the connection between the different modules.

digital-synthesizer's People

Contributors

laura-regan avatar map588 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.