MIDI Files Explained - Music Transcribed in Binary

preview_player
Показать описание
In this video we're taking an in-depth look at how the MIDI standard works, and specifically how MIDI data is stored inside of files. This includes the basic structure of a MIDI file, tracks, events, and more.

- Useful Links

- Chapters
00:00 - Introduction
01:06 - What is MIDI?
02:37 - General Structure
09:44 - Variable Length Quantities
11:03 - Running Status
13:16 - MIDI Event Types
17:33 - Timing
21:54 - Challenge Yourself!
22:35 - Code Snippets
25:34 - Conclusion
Рекомендации по теме
Комментарии
Автор

This is great! About four years ago, I was working on a MIDI visualizer similar to Synthesia and I remember there weren't many videos explaining MIDI files. Thank you for making this!

PickentCode
Автор

As a musical artist, I always wondered how computers actually manage to read those files and how DAWs read them too.
This video explains it insanely well. You got my sub. ❤

STA-
Автор

I truly hate when specification documents don't store their snippets and samples with a monospaced font. Is like saving formulas in a math document as anything but the formal notation.

hyoenmadan
Автор

5:30 The framerate value is stored negative because that lets you ignore the whole '7 bit' thing -- the full byte with the leading 1 has the exact same negative value, already sign-extended to 8 bits. This saves some of the bit-fiddling you'd otherwise need in order to mask or apply that leading bit when encoding or decoding this value.

AJMansfield
Автор

This explains why if a computer crashed playing a video game, there was a probability that a note would just play and play. The computer didn't get to read and execute the stop note signal

SotraEngine
Автор

5:26 My guess is that you can just easily read the whole byte, since negative integers have that first bit set to 1.

But I don't know for sure

jmvr
Автор

omg this came in at the perfect time ive been trying to wrap my head around the midi file format to make my own midi player as well

kono
Автор

Love how you challenge me to code it myself! I know that is the best way for me to learn, but I really appreciate you helping those how might now know that!

theashbot
Автор

Dude this is great! I went on a similar journey with MIDI even down to hex editing test files. My focus is more on realtime MIDI, so if/when I ever get that video out, I will point people here for the technical details of MIDI files. Looking forward to the Soundfont video!

mbcodeandsound
Автор

this video helped immensely! documentation is great, i'm glad it's freely available for midi, but high quality videos with accompanying visuals can help even more people understand how things work.

defaultdan
Автор

Very good explanation. I worked on my own MIDI parser a few months ago, so this would've been very useful; specially the explanation about the Running Status, as I was confused why I wasn't able to parse events correctly.

Another catch is that some MIDI files treat a note ON event with a velocity of zero as an OFF event.

mtirado
Автор

You've nerd sniped me and now I want to write a MIDI parser for fun

Zullfix
Автор

This video is a fantastic in depth explanation of MIDI file format. Great job! 👍
I first watched this video months ago and found it really complicated. At the time I wanted to use a home made computer to make MIDI based music. I needed a way to write music, not in a DAW or a MIDI sequencer but in a standard readable text file. I utilised the power of a typical Z80 assembler software running on a PC to do much of the work of converting human readable words and numbers in to data the hardware interface sends out as MIDI data.

In my setup MIDI timing is not measured in delta time but by adding blocks of time together. For example.. a triad chord of one beat duration would look like this...

midi ch3, vel, 100, note on, A3M
Midi ch3, vel, 100, note on, C3M
Midi ch3, vel, 100, note on, E3M
t, t16
t, t16
t, t16
t, t16
Midi ch3, vel, 100, note off, A3M
Midi ch3, vel, 100, note off, C3M
Midi ch3, vel, 100, note off, E3M

The Z80 assembler does all the work of converting the readable words and values in to the data to be sent to the MIDI interface connected to the computer and then this is sent out as conventional MIDI serial data the synth will understand.

NickT
Автор

Under appreciated video. You do an incredible job putting so much information into a linear stream of thought.

tivonlitster
Автор

Great and informative video. Makes me wanna create my own MIDI editor/parser

sokzpieprzu
Автор

Brilliant explanation, excellent graphics, keep up the great work!!! 🎹

rcnhsuailsnyfiue
Автор

Insanely good video, keep up the great work!

squidmaster
Автор

Thank you for this video!
I'm currently woring on a microcontroller that can read MIDI files to play them on a Tesla Coil
Your video really helps with my project!

RS
Автор

SMPTE colloquially pronounced SIM-tee

Society of Motion Picture and Television Engineers

Like the IEEE, SMPTE sets the technical standards for all things video and audio over all media. e. g. The new ST2110 SMPTE standard defines how to handle realtime video and audio and timing data over IP networks vs using baseband SDI cabling.

lohphat
Автор

Your video is insanely useful, thanks. I am using it as documentation guide. I am trying to make a midi parser first then later a midi player and lastly a midi writer.

qyMC
welcome to shbcf.ru