BRR Samples Explained - SPC700 Series pt. 3

preview_player
Показать описание
What is a BRR sample, and how does the SPC700 utilize them to play music? It's all explained right here.
LINKS
Рекомендации по теме
Комментарии
Автор

I actually used the fact that a sample's loop point doesn't need to point to an address within the same sample when I created my SNES jukebox project. I set up a couple of buffers and loaded the contents of one while the other played, setting the loop points dynamically as each sample "looped" so that it plays as one continuous "sample." This allowed me to stream an entire song (converted to brr format, of course) from an Arduino.

michaelcalvin
Автор

9:37 a number of games rely on this overflow to make some percussion samples have more "pop", and many later konami and squaresoft games combine overflow behaviours with unstable looping for very space-efficient pitchable noise samples.
On the other hand, late-era konami games increasingly avoid using any filters, and clamp all "normal" samples to about 90% of the dynamic range seemingly to avoid overflows at any cost.

_aitchfactor
Автор

Wow, that's an impressive amount of hardware for a device from 1989. Just having a hardware multiplier in audio hardware was a pretty big investment.

I did work on a differential audio engine for an 8-bit retro computer, and got something pretty decent with a 9-bit adder, a single-stage funnel shifter, and a 56-bit lookup table.

Waccoon
Автор

It's also worth noting that the PlayStation 1 and CD-i use (mostly) the same ADPCM encoding (which makes sense because Sony designed the audio chips for all 3 🙂)

impiaaa
Автор

This is coming out on the same day I'm trying to figure out how to create .brr samples for Super Mario World ROM hacking... I can't think of a video that would be more relevant to my day today, haha. I'm gonna be trying to make some of my own too so I bet I walk away with a few useful tricks.

ImSquiggs
Автор

The timing of this video could not be better for me. I recently started reading "C Language Algorithms for Digital Signal Processing, " an old book which talks about the math behind and implementation of a bunch of algorthms, including ones similar to the one discussed in this video. (it was written around the time digital techniques were becoming the standard way to process signals, and was written for engineers who needed to learn C/DSP fundamentals to keep doing their jobs effectively). Having an easily understood explanation of one of the kinds of algorthms the book describes will be invaluable for understanding the math/implementation behind it, and as always, your explanation is excellent.

Thank you for making these videos with consistantly excellent quality, and thank you a second time for the timing of this video being so coincidentally good.

delta
Автор

The fact that you can make people understand this stuff is astounding. I learned assembly from you. Good job and thank you.

JohnGames-gzue
Автор

One funny thing, Nintendo has gotten a lot of mileage out of the ADPCM format—a lot of their current games continue to use it to store most, if not all, sounds and music. The BRSTM format also uses ADPCM, with some minor differences like not having explicit end/loop bits in the ADPCM data and listing the loop point in the file header.

paulsnar
Автор

What you're referring to as a "sample cycle"--that is, one of those 32 KHz processing steps--is conventionally called a "frame".

ThePerfectKiosk
Автор

It's so cool to see all of this after having done so much research on it to make my own music tools!

livvy
Автор

Thank you so much for making this! I still can barely believe it... it's tailor made to my interest, technical understanding and learning style. Perfect!

marrtyo
Автор

The presence of filter modes 1-3 is what makes it *differential* PCM (we're coding the difference from some predictive model instead of coding the sample itself), and the ability to change the shift and the filter per frame is what makes it *adaptive* differential PCM (the encoder can choose the parameters that give the best match for each little bit of audio).

The way the pitch register is integrated (and the fractional portion used for interpolation) basically amounts to "direct digital synthesis" (which has pleasing similarities to Bresenham's line-drawing algorithm, and the way that subpixel math leads to smooth movement in games like Mario). Carrying over all of those fractional bits is important not only for getting good accurate pitches (which many older consoles and computers weren't capable of), but for making vibrato and pitch-bends glitch-free.

hobbified
Автор

Nice vid! I hope we hear more about filter overflow at some point, since it's critical to some games' sounds like FF3 and CT. Circa 2002, I put a lot of effort into reverse engineering how this worked without getting noise in songs that aren't supposed to have it (e.g. CT's Johnny C Bad). Built my own flash cart, made my own test ROMs to run BRR samples and save the results to echo RAM, read it out and print it in hex on the screen, then undo the gaussian filter to figure out what the actual decoded BRR values were. It still kind of blows my mind that the answer was, it's allowed to overflow *exactly once* before being clamped; basically a hidden 17th bit. 🤔

bmartin
Автор

Beautiful! I have been implementing this in Verilog/FPGA and this was a fantastic depiction of the entire process. Yes, the decoders/DSP do A LOT of work!

jojodi
Автор

Thank you for this! I've been writing sound tools for all sorts of game consoles and home computers for a long time. This may be SNES specific but is probably the best illustration of ADPCM, a popular staple for all sorts of memory and bus bandwidth limited systems.

saxxonpike
Автор

Great explanation as usual, but for these topics I feel giving short audio examples to listen to could be useful for those who aren't too familiar with terms like octaves, perfect fifths and so on.

Iroh
Автор

You probably hear it repeatedly, but your animations are clean, simple and really well done. I appreciate the effort you put into them (and your clear explanations!)

HeadCodeMonkey
Автор

hell yea part 3. Can't wait til we get to the Echo and Filter since I just got a Super Midi Pak and I'm still trying to figure out the best way to utilize the echo and filter section.

GO-tqhs
Автор

27:23 The exact moment my soul left my body. What a screamer.

Mindthegame
Автор

One of the Youtube Channels I hold most dearest. Perfect timing, as I was exactly looking for this topic recently!

nintendoloverin
welcome to shbcf.ru