element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Project Videos
  • Challenges & Projects
  • element14 presents
  • Project Videos
  • More
  • Cancel
Project Videos
Documents FPGA MIDI Music Synthesizer -- Episode 388
  • Documents
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Project Videos to participate - click to join for free!
Related
Recommended
Engagement
  • Author Author: tariq.ahmad
  • Date Created: 2 Mar 2019 6:37 PM Date Created
  • Last Updated Last Updated: 5 Apr 2019 7:24 AM
  • Views 7175 views
  • Likes 10 likes
  • Comments 21 comments

FPGA MIDI Music Synthesizer -- Episode 388

image
FPGA MIDI Music Synthesizer

element14 presents   |  Andy West's VCP Profile |  Project Videos

 

 

You don't have permission to edit metadata of this video.
Edit media
x
image
Upload Preview
image

Have you ever wondered how digital synthesizers work? In today's video, Andy shows how to build one with just a handful of parts. He'll use a standard MIDI interface and line-level output for maximum compatibility, and an FPGA for maximum fun!

 

The documents for the code is attached below.

 

Bill of Materials

 

Product Name Manufacturer Quantity Buy Kit
P0082 - Development Kit, FPGA, DE0-Nano, 2x GPIO Headers, 32MB RAM, Accelerometer TERASIC TECHNOLOGIES 1 Buy Now
BBP-32701 - Power Supply, BB Series Breadboards, Dual Voltage, 3.3V, 5V, 0.7A BUD INDUSTRIES 1 Buy Now
Breadboard, Solderless, ABS (Acrylonitrile Butadiene Styrene), 8.3mm, 54.5mm x 83.5mm MULTICOMP 1 Buy Now

 

Additional Parts

 

Product Name
I2S Stereo Decoder - UDA1334A Breakout (Adafruit product 3678)
4-channel I2C-safe Bi-directional Logic Level Converter - BSS138 (Adafruit product 757)
ubld.it MIDI Breakout Board Kit
Attachments:
fpga-synth-master.zip
  • programmablelogicch
  • fpga
  • vcpfpga
  • andy west
  • element14 presents
  • e14p_AW
  • programmable logic
  • e14presents_andywest
  • episode 388: fpga midi music synthesizer
  • friday_release
  • Share
  • History
  • More
  • Cancel
Actions
  • Share
  • More
  • Cancel
  • Sign in to reply

Top Comments

  • andywest
    andywest over 6 years ago in reply to celcius1 +5
    Yeah, there's lots of things I'd like to add. Polyphony, pitch bending, velocity, and so many cool effects are possible. Oh, and ADSR envelopes, definitely.
  • celcius1
    celcius1 over 6 years ago +4
    I would love to see this project revisited in the future to expand on its functionality, I also have a huge soft spot for MIDI devices!!
  • DAB
    DAB over 6 years ago +3
    Very cool project. I have always wondered about MIDI formats and use, so I found this episode very interesting. Well done. DAB
  • 01737harish
    01737harish over 3 years ago

    Hi Andy, 

    Instead of using separate might for single cycle wavetable can't we read through multiwave as well?. It would be helpful to know in that case whether we could read or cycle through multiwave format wavetable sample using rotary encoder to interpolate between them. 

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • albertabeef
    albertabeef over 4 years ago

    Excellent project image

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • andywest
    andywest over 4 years ago in reply to viennaaudio

    You can message me here in the community, but I suspect there are people here that are far more knowledgeable. If I remember correctly, this was only my second or third project using an FPGA. You can always ask specific questions in the FPGA Group.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • andywest
    andywest over 4 years ago in reply to viennaaudio

    I suspect the answer to this is "yes", but I don't know for sure without actually attempting it. I haven't had much time for FPGAs since I did this project.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • viennaaudio
    viennaaudio over 5 years ago in reply to andywest

    Do you think that would be possible to implement poliphony as well as an external cv input using the same board?

    Would be possible to drive an external adc?

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • viennaaudio
    viennaaudio over 5 years ago

    This project is really making me see light after a long tunnel, and guess will do also for the many who see fpga programming unreachable,

    very well explained. Hope you can give me some hint to go on in my project. How could i get in touch with you?

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • justusjohnston
    justusjohnston over 6 years ago

    Just out of curiosity, has anyone else here tried actually putting this together? I did, and it didn't work right out the box for me.

    When I looked through a logic analyzer, it seemed like the bits were being read from the Rx line consistently a few hundred clock cycles too early. It may have something to do with the fact that I'm generating my MIDI signal from DAW software via a FireFace800 (old firewire sound interface from 20 years ago). When I looked at the generated Rx through the LA, the bit period was...not exactly predictable. It should change bits every 32 us, but mine seems to vary by like +/- 3-4 us. Anyways, when I looked at the code in MidiByteReader.v, it seemed like it was trying to read the bits exactly every 1600 20ns clock cycles (+ the 10 clock cycle "debounce") which would mean it's trying to read bits right around the bit boundaries of the signal. So, I changed the "debounce" holdoff to 800 clock cycles, so that now it tries to read bits exactly in the middle between two bit boundaries instead, and...voila, it worked!

     

    I was just curious if anyone else had the same issue that I did or not.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • mdicosmo
    mdicosmo over 6 years ago

    did you guys checked this out? A subtractive music synth fully implemented in FPGA

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • airbornesurfer
    airbornesurfer over 6 years ago

    Man, I really gotta dig into FPGAs soon! So many groovy things you can do with them!

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • jzkmath
    jzkmath over 6 years ago

    I literally just made a project that is very similar to this. It takes the MIDI and drives 32 stepper motors to play music.

    It was also deigned for the DE0-nano and I fully documented the project and have my Verilog (and PCB designs) there too.

    It is here: https://sites.google.com/a/vt.edu/amp_lab/projects/stepper-synth-v2

    It was fully funded by my university too!

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube