FPGA MIDI Music Synthesizer

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ส.ค. 2024

ความคิดเห็น • 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.

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

  • @winfr34k
    @winfr34k 5 ปีที่แล้ว +17

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

  • @darrenmackay2536
    @darrenmackay2536 5 หลายเดือนก่อน

    Lots of inspiration!

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

  • @ulf8468
    @ulf8468 5 ปีที่แล้ว +2

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

  • @sharedinventions
    @sharedinventions 5 ปีที่แล้ว +2

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

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

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

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

  • @davidf8749
    @davidf8749 5 ปีที่แล้ว +4

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

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

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

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

  • @clipsonthespectrum
    @clipsonthespectrum ปีที่แล้ว

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

  • @Fantasma25
    @Fantasma25 5 ปีที่แล้ว

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

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

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

  • @parusogtz
    @parusogtz 5 ปีที่แล้ว +1

    Gran proyecto midi para todos weeee

  • @Digithalis
    @Digithalis 5 ปีที่แล้ว

    great tutorial captain, awesome!

  • @RamonChiNangWong078
    @RamonChiNangWong078 5 ปีที่แล้ว

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

  • @THE_ONLY_GOD
    @THE_ONLY_GOD 2 ปีที่แล้ว

    Nice. Thanks!

  • @user-yr1uq1qe6y
    @user-yr1uq1qe6y 3 ปีที่แล้ว +1

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

  • @romiolover6852
    @romiolover6852 5 ปีที่แล้ว +1

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

  • @angeliquerobaye8351
    @angeliquerobaye8351 5 ปีที่แล้ว

    Perfect, very good, thanks 😘

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

  • @abudukelimuwuerkaixi1142
    @abudukelimuwuerkaixi1142 3 ปีที่แล้ว

    pretty useful video

  • @anonemouse1470
    @anonemouse1470 3 ปีที่แล้ว

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

  • @harishkumaru589
    @harishkumaru589 2 ปีที่แล้ว

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

  • @samuellafond6086
    @samuellafond6086 2 ปีที่แล้ว

    Now lets recreate the OP-1!!

  • @urdnal
    @urdnal 5 ปีที่แล้ว +2

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

  • @FindLiberty
    @FindLiberty 5 ปีที่แล้ว

    Very nice

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

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

  • @maxpolaris99
    @maxpolaris99 5 ปีที่แล้ว

    very cool

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

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

  • @avigetsbored
    @avigetsbored 5 ปีที่แล้ว

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

  • @stevelitt
    @stevelitt 5 ปีที่แล้ว

    love it

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

  • @_who_cares_1123
    @_who_cares_1123 5 ปีที่แล้ว

    Which software did you use?

  • @odissey2
    @odissey2 5 ปีที่แล้ว

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

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

  • @MrKelaher
    @MrKelaher 5 ปีที่แล้ว +1

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

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

  • @aminchawi978
    @aminchawi978 5 ปีที่แล้ว +2

    👍👍👍👍👍👍

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

  • @claudiostano
    @claudiostano 5 ปีที่แล้ว

    this is cool!!!! =)

  • @firehandszarb
    @firehandszarb 5 ปีที่แล้ว

    fpga is cool im buzzed to buy dev board.

  • @cristiantgful
    @cristiantgful 5 ปีที่แล้ว

    Haber usado el Icestudio.

  • @XxxXxx-rc2nw
    @XxxXxx-rc2nw 5 ปีที่แล้ว

    good idea.really))

  • @LittleRainGames
    @LittleRainGames 5 ปีที่แล้ว +1

    Ahhhh, fresshh.

  • @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 4 ปีที่แล้ว

    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.