FPGA MIDI Music Synthesizer

Поділитися
Вставка
  • Опубліковано 29 лип 2024
  • 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! Connect with Andy on the element14 community: bit.ly/2TS8tp5
  • Наука та технологія

КОМЕНТАРІ • 79

  • @Chriva
    @Chriva 5 років тому +12

    You know it's gonna be a good one when Andy is involved. You rock, dude

  • @kjade1506
    @kjade1506 5 років тому +3

    9:24 There is no need for debouncing midi signals. Midi is a serial communication protocol transporting the key note value so the debouncing of the actual key press have been done in the keyboard before sending it.

  • @sharedinventions
    @sharedinventions 5 років тому +2

    We have got a very detailed explanation. Thanks! I will definitely revisit this video some days.

  • @juschu85
    @juschu85 5 років тому +22

    7:29 As long as we're not talking about MPE the MIDI channel has nothing to do with polyphony. You configure different sound modules to listen to different channels. It doesn't matter if they are monophonic or polyphonic. So the channels make the sound modules addressable.

    • @andywest5773
      @andywest5773 5 років тому +2

      You're right! I hadn't thought of that. Just having two Note On messages without a corresponding Note Off is enough for polyphony. Sorry, I'm new to MIDI. :)

  • @ulf8468
    @ulf8468 5 років тому +2

    Very cool project. I would really love to see how you implement ADSR, velocity and so on

  • @winfr34k
    @winfr34k 5 років тому +17

    "That's all for today" :D
    Pretty nifty little project.

  • @davidf8749
    @davidf8749 5 років тому +4

    Great amount of info. I'm going to have to research the de0 nano. Awesome. :) :)

  • @darrenmackay2536
    @darrenmackay2536 4 місяці тому

    Lots of inspiration!

  • @Fantasma25
    @Fantasma25 5 років тому

    Nice! I'm currently working on a similar project, but using the Zybo from Digilent.

  • @Digithalis
    @Digithalis 5 років тому

    great tutorial captain, awesome!

  • @angeliquerobaye8351
    @angeliquerobaye8351 5 років тому

    Perfect, very good, thanks 😘

  • @jkuebler89
    @jkuebler89 5 років тому +1

    Wow this is really badass! I might have to take a break from arduinos and figure out some of this FPGA stuff!

  • @romiolover6852
    @romiolover6852 5 років тому +1

    nice project, what about a Hammond organ on the fpga ?

  • @AJMansfield1
    @AJMansfield1 5 років тому +2

    Why do you need a separate level shifter? It should be possible to do that just with the optoisolator by feeding it 3.3 rather than 5V.

  • @avigetsbored
    @avigetsbored 5 років тому

    what would you have to do to make it a polyphonic synth?

  • @harishkumaru589
    @harishkumaru589 2 роки тому

    Hi, what should we do if we have a multi-wave sample and how do we cycle and read through them??

  • @jerricabenton842
    @jerricabenton842 5 років тому +3

    this is super sweet! Now i can use my DE-10 nano for more than just playing video games. :D
    next time will you show us how to build an analog synthesizer with an FPAA?

  • @THE_ONLY_GOD
    @THE_ONLY_GOD 2 роки тому

    Nice. Thanks!

  • @parusogtz
    @parusogtz 5 років тому +1

    Gran proyecto midi para todos weeee

  • @FindLiberty
    @FindLiberty 5 років тому

    Very nice

  • @user-fd6fx1tb5k
    @user-fd6fx1tb5k 3 роки тому +1

    MIDI signal is one of the "harder" protocol i think, it is annoying as the message length can vary and is not notified at the start of the message

  • @harishkumaru589
    @harishkumaru589 2 роки тому

    Does this code run with artix-7 dev board. Or do I need to look up and tweak register value related to artix-7 board using this same piece of code?

  • @Giblet535
    @Giblet535 5 років тому +6

    Hey, that's a nice FPGA board you have there. It'd be a real shame if someone loaded it with an integer based FFT to listen to a music stream and convert it to MIDI. Pretty much exactly the same thing you did here, only completely different.

  • @stevelitt
    @stevelitt 5 років тому

    love it

  • @abudukelimuwuerkaixi1142
    @abudukelimuwuerkaixi1142 3 роки тому

    pretty useful video

  • @_who_cares_1123
    @_who_cares_1123 5 років тому

    Which software did you use?

  • @stevenclark2188
    @stevenclark2188 5 років тому

    I've done FM on an fpga board, hit deadline before I got the UART for MIDI reinvented. Seriously what IS up with I2S timing?

  • @RamonChiNangWong078
    @RamonChiNangWong078 5 років тому

    cool project, I think we can create some FM synthesis with this

  • @DimitarHMarinov
    @DimitarHMarinov 5 років тому

    I just wanted to suggest something - when you solder heat up the pad and the pins before you apply the tin wire. This will the "ball" formation that can be seen on the pins at 2:34. Of course don't overheat cuz you may damage the components or the pads :D. Otherwise - nice project!

  • @maxpolaris99
    @maxpolaris99 5 років тому

    very cool

  • @anonemouse1470
    @anonemouse1470 3 роки тому

    Everyone in this comment section is a legend... y'all like synthesizers and FPGAs! My people.

  • @MasterRBertLink
    @MasterRBertLink 5 років тому

    How about an FPGA MIDI module that I can use with old computer games that use the MT-32, SC-55, etc. ?

    • @andywest5773
      @andywest5773 5 років тому +1

      You could definitely use this as the starting point for that type of project. The code is freely available for anyone who wants to try.

  • @coolelectronics1759
    @coolelectronics1759 2 роки тому

    wow this is dope.
    Imagine if he reverce engineers the yamaha dx7 next and clones it onto some fpga device that would be so cool or like the roland d50.

  • @MAYERMAKES
    @MAYERMAKES 5 років тому +8

    you slowly evolve into FPGAndy

    • @Davedarko
      @Davedarko 5 років тому +1

      hahahaha - I thought "man, good to have an FPGA guy in the group" - but this tops it :D

    • @andywest5773
      @andywest5773 5 років тому +4

      Nice, ha ha! I didn't plan it that way. There's just so many things you can do with FPGAs.

  • @odissey2
    @odissey2 5 років тому

    I wonder, assuming some familiarity with fpga and Verilog, what is time budget to develop such project from scratch?

  • @clipsonthespectrum
    @clipsonthespectrum 11 місяців тому

    my guy just remixed yung lean at the end like we wasn't gonna notice hahah

  • @gabef9538
    @gabef9538 5 років тому

    Nice, I use that language. Which cross compiler is that?

    • @anonemouse1470
      @anonemouse1470 3 роки тому

      looks like he's using altera so prob that, quartus prime?

  • @akasickform
    @akasickform 5 років тому +2

    "Is it still 'eighty' if its not in decimal".
    I'd say, it is, but "hex" needs to be stated to differentiate which base the number is in (unless its a decimal number).
    Eg. 80 hex / 0x80 / hex 80 / (80, hex)

    • @koenlefever
      @koenlefever Рік тому

      I usually write it as 80₁₆ (on paper or blackboard) or as $80 (assembly programming), I often read it as 80H in reference tables.
      When I speak hex, I say the digits separately, so "eight zero". Otherwise we get things like "efty-nine" for F9, which is fun the first time but impractical when you have to distinguish between AH, 8A and H8.

  • @theslvrbullt
    @theslvrbullt 5 років тому +3

    Uhh... Bit rusty with my binary and hex, but... At 7:10 I think you got the first code backwards. b10010000 would be 0x90

    • @andywest5773
      @andywest5773 5 років тому +2

      I see what you mean. 0x09 (or 0x9) refers to the message type (first four bits), but the way I wrote it makes it look like that's the entire byte value. I think people can figure it out, though.

    • @jago3798
      @jago3798 5 років тому

      @@andywest5773 This is not obvious at all. You wrote Status Byte 0x09 10010000, which doesn't make sense. If you write it this way, the nibbles are reversed.

    • @theslvrbullt
      @theslvrbullt 5 років тому +2

      @@andywest5773 Fair enough. Sorry, OCD kicked in. Still a good video :)

  • @claudiostano
    @claudiostano 5 років тому

    this is cool!!!! =)

  • @urdnal
    @urdnal 5 років тому +2

    8:21 The problem with pronouncing %x80 like %d80 is that it sounds just like %xA0

  • @user-yr1uq1qe6y
    @user-yr1uq1qe6y 3 роки тому +1

    “Hi, I’m Troy McClure and today we’re going to take a look at FPGA and MIDI”

  • @Barnaclebeard
    @Barnaclebeard 5 років тому +2

    You wrote your bits out least to most significant? That's pretty confusing.

    • @andywest5773
      @andywest5773 5 років тому +7

      Bits are written to the DAC most significant bit first, which is what I2S requires. But Audacity can only save RAW 16-bit PCM data least significant byte first. So the byte swap is necessary.

  • @cristiantgful
    @cristiantgful 5 років тому

    Haber usado el Icestudio.

  • @KiR_3d
    @KiR_3d 5 років тому +1

    Hello!
    Do an FPGA board has enough IOs to maintain a 8 note MIDI-CV device with Note on, gate, velocity and modulation parameters (at least). 25 is a minimum here (or i can be wrong). Does it have enough DACs or I'll need DAC ICs?

    • @poofygoof
      @poofygoof 5 років тому +1

      i2s is a bus and can have multiple devices on it iirc. For CV you could probably use much slower DACs though.

  • @PhoneRecords
    @PhoneRecords 5 років тому +2

    ADSR, FM, hmmm let's go waveform :), nice work. FPGA sampler/looper?

    • @anonemouse1470
      @anonemouse1470 3 роки тому

      ah yes now you need to write the RAM controller, super fun that, lemme tell you

    • @anonemouse1470
      @anonemouse1470 3 роки тому

      I think an fpga approach would be great for a wavetable based synth ala serum provided you had ample flash and ram

  • @aminchawi978
    @aminchawi978 5 років тому +2

    👍👍👍👍👍👍

  • @samuellafond6086
    @samuellafond6086 2 роки тому

    Now lets recreate the OP-1!!

  • @XxxXxx-rc2nw
    @XxxXxx-rc2nw 5 років тому

    good idea.really))

  • @firehandszarb
    @firehandszarb 5 років тому

    fpga is cool im buzzed to buy dev board.

  • @MatthewSuffidy
    @MatthewSuffidy 3 роки тому

    I got here because I was wondering if fm snyth chips were analog inside such as the opl2. My guess is yes. Modern analog synths may be truly digital.

  • @LittleRainGames
    @LittleRainGames 5 років тому +1

    Ahhhh, fresshh.

  • @MrKelaher
    @MrKelaher 5 років тому +1

    Cool project :) "no for me" to the 80 question. eighty is only for decimal :)

  • @summerlaverdure
    @summerlaverdure 5 років тому

    thats cool and all but i think ill just keep buying them

  • @mozamboni
    @mozamboni 5 років тому +3

    Andy - that voice requires a beard. Make it so... #Riker

  • @SteveDaviesCPT
    @SteveDaviesCPT 5 років тому

    At the beginning, you’d get better results on a midi controller if you actually plug into the midi port

    • @andywest5773
      @andywest5773 5 років тому

      Not sure what you mean. The midiplus AK490 has two MIDI out ports. I used the correct one.

  • @jeroenjeroen
    @jeroenjeroen 5 років тому +1

    I miss the old format.
    You take a niche subject and address the people watching like beginners.
    I think you are missing the boat as we say herr

  • @sekritskworl-sekrit_studios
    @sekritskworl-sekrit_studios 3 роки тому

    ok... WTF does FPGA even mean?

    • @anonemouse1470
      @anonemouse1470 3 роки тому

      Field Programmable Gate Array. It is a tool used for prototyping and small scale runs of architectures that aren't cost effective to run as an ASIC, ie a fabricated chip. The HDL hardware descriptive languages used describe the layout of the logic circuit. HDL is very dissimilar to programming languages in many ways and is harder for the newbie to understand because you not only allocate the memory you describe how it works as well. Neat stuff though.