Пікірлер
@Xer777Xes
@Xer777Xes 4 сағат бұрын
But how the midi music are made? only in bits or with a music instrument?
@jovetj
@jovetj 5 сағат бұрын
Sound fonts don't invent sound just as typographic fonts don't write letters to your mother. You glossed over the synthesizer and relegated it to a piece of hardware. But synthesizers don't have to be hardware-good software synthesizers exist today. Both kinds of synthesizers can utilize sound fonts.
@jovetj
@jovetj 5 сағат бұрын
I always pronounce is mee-dee. Not mih-dee.
@AJMansfield1
@AJMansfield1 7 сағат бұрын
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.
@MasKARJ0
@MasKARJ0 10 сағат бұрын
next, .mod/xm tracker files explained
@mtirado
@mtirado 15 сағат бұрын
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.
@nurmr
@nurmr 21 сағат бұрын
1:06 Easy Driver from Transport Tycoon. Originally composed by John Broomhall.
@thegermantomoeser
@thegermantomoeser Күн бұрын
Nice
@RayBellis
@RayBellis Күн бұрын
This is timely, as I've just been writing an SMF parser so that I could extract the sysex data from a preset dump that had been stored in SMF format. Something you've apparently missed is that the spec *requires* that the final event in every track be an "end of track" meta-event, encoded as FF 2F 00. Also, running status is only allowed for *channel* messages (0x8* - 0xE*) and not for system messages or meta events (0xF*).
@STA-3
@STA-3 Күн бұрын
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. ❤
@RollingHeat
@RollingHeat Күн бұрын
I previously made a MIDI decoder and synthesizer, but I am interested in the sound-fonts and if there are standardized formats and publicly available files for these.
@LukeVader77
@LukeVader77 Күн бұрын
I appreciate the monkey island soundtrack in the background
@Hereson
@Hereson Күн бұрын
An excellent explanation 🎉
@jcf_1760
@jcf_1760 Күн бұрын
I think the quantity of 32nd notes in a quarter note thing is primarily used to aid in tuple subdivisions, like playing 3 notes evenly across a half-note. I think it also aids in allowing nested tuples to be played. It might also be used by music notation software to help with time signatures. But that's just my theory.
@kono152
@kono152 Күн бұрын
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
@CoolJosh3k
@CoolJosh3k Күн бұрын
My guess for the negative frame rate, is due to the MSB being 1. If not masked out, then the sign bit would mean the integer byte represented is ranging from -128 to -1.
@yannickperret1586
@yannickperret1586 Күн бұрын
Yes, I'm pretty sure this is that.
@NicholasAndre1
@NicholasAndre1 Күн бұрын
Very cool! I’ve wanted to do more with MIDI it’s quite a nifty protocol.
@Zullfix
@Zullfix Күн бұрын
You've nerd sniped me and now I want to write a MIDI parser for fun
@squidmaster964
@squidmaster964 Күн бұрын
Insanely good video, keep up the great work!
@lohphat
@lohphat Күн бұрын
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.
@jmvr
@jmvr 2 күн бұрын
7:40 that's not pronounced "[eɪ] (like in lane)", it's supposed to be pronounced closer to "[ɒ] (like in lot)", jsyk
@PickentCode
@PickentCode 2 күн бұрын
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!
@gameslp7583
@gameslp7583 2 күн бұрын
when you said that python didn't have do while loops and you'll just make a while loop with an if statement at the end... you can just replace the "True" in "while True" with the condition......
@jmvr
@jmvr 2 күн бұрын
A do-while loop is a loop that will always run at least once. If you replace the True with the conditional, there's the chance that the condition will be False, resulting in the loop never being run at all. Using an if-statement at the end of the loop achieves the goal of a do-while loop. ``` while 1 > 5: print("This will never run") while True: print("This is guaranteed to run at least once, but due to the end if-statement, it will not continue") if 1 <= 5: break ``` (the above code will likely break due to YT comments being inconsistent in formatting)
@JamsODonnell100
@JamsODonnell100 Күн бұрын
Very impressive! As a non programmer but keen amateur musician this is the first explanation I have ever seen. Certainly the first that makes any sense to me. Cheers. I’ll need to re watch to properly grasp most of it! Could the irregular number of 32nd notes in a quarter note be down to making playback more human? - I can remember when drum machines were almost instantly recognisable because their timing was ‘too perfect’, and mechanical sounding…Humans can rarely play anything exactly in time
@Wutheheooooo
@Wutheheooooo 23 сағат бұрын
That's not how do while loop works.
@jogloran
@jogloran 2 күн бұрын
Excellent choice of sample MIDIs.
@jmvr
@jmvr 2 күн бұрын
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
@jasmijnwellner6226
@jasmijnwellner6226 2 күн бұрын
Yep, I'm pretty sure that's it. I'm guessing that someone thought that it would be more efficient to do an unary minus operation rather than toggling a bit. I don't know if and to what extent it actually mattered at the time.
@bryankadzban1159
@bryankadzban1159 Күн бұрын
Yeah, that's my guess as well: so that you can read that first byte as a signed char (in C) and if the whole byte is less than zero, the frame rate is just the byte value times -1.
@frasermips
@frasermips Күн бұрын
I believe that the minus comes from the first bit being set. Depending on the CPU's assembly instructions there is often a compare to zero, which avoids loading the comparison value into a register. The CPU can compare -30 to zero within a single instruction. This is generally faster than an & or | bit extraction followed by a compare.
@sokzpieprzu
@sokzpieprzu 2 күн бұрын
Great and informative video. Makes me wanna create my own MIDI editor/parser
@theashbot4097
@theashbot4097 3 күн бұрын
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!
@textnumbers22
@textnumbers22 3 күн бұрын
So if I remember correctly the number of 32nd notes per quater note is a backwards compatibility feature.
@ebin2222
@ebin2222 3 күн бұрын
14:23 You can tell this standard was made by americans for dedicating instruments to helicopter, applause and gunshots.
@hyoenmadan
@hyoenmadan 3 күн бұрын
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.
@tl880linux
@tl880linux 3 күн бұрын
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!
@tivonlitster2547
@tivonlitster2547 3 күн бұрын
Under appreciated video. You do an incredible job putting so much information into a linear stream of thought.
@rcnhsuailsnyfiue2
@rcnhsuailsnyfiue2 4 күн бұрын
Brilliant explanation, excellent graphics, keep up the great work!!! 🎹
@1337purpose
@1337purpose 17 күн бұрын
fantastic and very informative video thank you!
@vijaishankar3942
@vijaishankar3942 Ай бұрын
Why is the for loop having range dx+1 and not dx? 5:29
@treint6751
@treint6751 Ай бұрын
This is actually the best explanation I've seen. I have always found the explanations on various websites rather confusing
@itooh-gamedev
@itooh-gamedev Ай бұрын
After browsing countless articles about midpoint algorithm and still struggling to understanding it, this was the exact explanation and visualisations I needed. Thank you for this excellent work!
@NickNGC
@NickNGC Ай бұрын
I’m too stupid to understand this but cool nonetheless 😅
@ДанилаСтариков
@ДанилаСтариков Ай бұрын
This is the only adequate explanation i found on this algorithm, other sources just give the code without explaining why
@inxomnyaa
@inxomnyaa Ай бұрын
Sorry, but the center of coords vs the edge makes a big difference. It's a problem i tried to solve for years in my world edit
@martin77778
@martin77778 Ай бұрын
why do we need pNext value ?
@kamarton
@kamarton Ай бұрын
Xc=sum(x positiona) / count Yc=sum(y positiona) / count This formula is simplier than anything...
@elmonkeh
@elmonkeh Ай бұрын
Can you do an image rotation algorithm? Not those rotate by 90° but rotate fluently?
@grobo503
@grobo503 Ай бұрын
This is very old-fashioned, slow and won't result in a smooth circle. Just use a distance function (and a GPU).
@ajinkyax
@ajinkyax Ай бұрын
Thanks
@Roxas99Yami
@Roxas99Yami Ай бұрын
6:15 squaring a number is more efficient than multiplication by 2, especially for positive numbers (uint) like the radius, because it is done by bitshifting once to the left. the compiler is already optimized to do squaring in single-cycle cpu time
@poghuman8676
@poghuman8676 Ай бұрын
9:54
@thoughted6069
@thoughted6069 Ай бұрын
Would be cool to see it made for running in parallel for the GPU, or even using more threads in the CPU
@TheAimTrainer
@TheAimTrainer Ай бұрын
God I miss taking pre algebra in 6th grade
@Appendix177
@Appendix177 Ай бұрын
Can now we watch how to make 3d sphere with this?