FPGA MIDI Music Synthesizer

Поделиться
HTML-код
  • Опубликовано: 3 июл 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

  • @sharedinventions
    @sharedinventions 5 лет назад +2

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

  • @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.

  • @winfr34k
    @winfr34k 5 лет назад +17

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

  • @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. :)

  • @darrenmackay2536
    @darrenmackay2536 3 месяца назад

    Lots of inspiration!

  • @ulf8468
    @ulf8468 5 лет назад +2

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

  • @davidf8749
    @davidf8749 5 лет назад +4

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

  • @Digithalis
    @Digithalis 5 лет назад

    great tutorial captain, awesome!

  • @Fantasma25
    @Fantasma25 5 лет назад

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

  • @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!

  • @THE_ONLY_GOD
    @THE_ONLY_GOD 2 года назад

    Nice. Thanks!

  • @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?

  • @FindLiberty
    @FindLiberty 5 лет назад

    Very nice

  • @abudukelimuwuerkaixi1142
    @abudukelimuwuerkaixi1142 3 года назад

    pretty useful video

  • @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!

  • @parusogtz
    @parusogtz 5 лет назад +1

    Gran proyecto midi para todos weeee

  • @RamonChiNangWong078
    @RamonChiNangWong078 5 лет назад

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

  • @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.

  • @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.

  • @maxpolaris99
    @maxpolaris99 5 лет назад

    very cool

  • @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.

  • @stevelitt
    @stevelitt 5 лет назад

    love it

  • @clipsonthespectrum
    @clipsonthespectrum 10 месяцев назад

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

  • @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.

  • @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

  • @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??

  • @claudiostano
    @claudiostano 5 лет назад

    this is cool!!!! =)

  • @samuellafond6086
    @samuellafond6086 2 года назад

    Now lets recreate the OP-1!!

  • @_who_cares_1123
    @_who_cares_1123 5 лет назад

    Which software did you use?

  • @aminchawi978
    @aminchawi978 5 лет назад +2

    👍👍👍👍👍👍

  • @anonemouse1470
    @anonemouse1470 3 года назад

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

  • @user-yr1uq1qe6y
    @user-yr1uq1qe6y 3 года назад +1

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

  • @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.

  • @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

  • @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?

  • @XxxXxx-rc2nw
    @XxxXxx-rc2nw 5 лет назад

    good idea.really))

  • @LittleRainGames
    @LittleRainGames 5 лет назад +1

    Ahhhh, fresshh.

  • @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?

  • @firehandszarb
    @firehandszarb 5 лет назад

    fpga is cool im buzzed to buy dev board.

  • @urdnal
    @urdnal 5 лет назад +2

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

  • @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.

  • @odissey2
    @odissey2 5 лет назад

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

  • @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?

  • @cristiantgful
    @cristiantgful 5 лет назад

    Haber usado el Icestudio.

  • @MatthewSuffidy
    @MatthewSuffidy 2 года назад

    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.

  • @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 :)

  • @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.

  • @summerlaverdure
    @summerlaverdure 5 лет назад

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

  • @MrKelaher
    @MrKelaher 5 лет назад +1

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

  • @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 4 года назад +1

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

  • @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.