News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

A (possibly) useful tool: WAVE file info displayer

Started by NoCforMe, February 17, 2025, 10:13:39 AM

Previous topic - Next topic

NoCforMe

First of all: man, this place is dead! Hello??? Hello??? nothing but echoes ...

OK, here's something: a li'l program to show the header contents of a WAVE file.
Works on all the ones I have here.
I wonder if y'all could run this against whatever .wav files you have, see if it works for you.
I'd be interested to know if any of them show a non-zero value for the "extension size" field (which I'm still not sure what means).

(Motivation for this: I have both .wav files that I've recorded myself using my sound card and an old version of SoundForge XP, and other files that I've ripped from CD using Micro$oft Media Center. Problem: I can't load any of the latter files in SoundForge, since it's so old it doesn't understand any of the "INFO" chunks that Media Center puts in. So next project will be a .wav file stripper to remove all that stuff, which I don't care about anyhow (artist, genre, album, etc.).)
Assembly language programming should be fun. That's why I do it.

stoo23

Being an Audio guy, I figured I Should look at this and try it  :smiley: but interestingly, I do NOT see "Extension Size" listed in the returned Data, at all !!??



Well, further investigation, revealed the display of some "Extension Size" data, from some music recorded by the son of a friend of mine.
It would have been recorded via ProTools and made available via BandCamnp, see here:



I have checked Other music recorded by my friend along with other recording, so far, with NO Extension Size data being shown,.. and having checked various examples of CD's I have 'Ripped' with either MS's Media Player or (Mainly) with EAC, NO Extension Size data is shown ??

NoCforMe

Hey, thanks for trying this out.

That field ("extension data") is just an indicator that some additional values are stored in the WAV file header. Nothing that important.
Glad this worked for you (and didn't crash!).

Looks like none of your files have additional "chunks" like IART (artist), INAM (track name), IGNR (genre), etc.
Assembly language programming should be fun. That's why I do it.

stoo23

NO Probs, ... Nah, No 'Crashing', it works fine  :smiley:

QuoteLooks like none of your files have additional "chunks" like IART (artist), INAM (track name), IGNR (genre), etc.
No, ... it would seem Not, which is slightly Odd, as both the MS player and EAC do have 'Containers' for that info' within the interface, apart from merely the Track data:





Mind you, I really don't particularly care for, use stuff like CD Performer, Genre, etc, etc, I kinda know and really care less for some theoretically defined 'Genre'  :rolleyes: plus I don't really need all that 'Song-List' - 'Play-List' Tag stuff that so many people seem to desperately need, for their iPod players and Roon systems,.. LOL I simply listen to What I want, when I want, from my 'known' collection of Artists music  :wink2:

I don't Make 'Play-Lists' for the Car or journeys or when out and about and I have NO music on my phone  :tongue:

WAV files are historically and notoriously bad with 'Tags', which is why so many people who do seem to require ALL that Extra Data, use other file formats.

Apart from some files in different formats and a few I Only have in mp3,... ALL my stuff is in WAV or similar format, with storage no longer being an issue per se, I have no need for other more Compact 'Lossless' formats and having spent half my life Working Hard, with as good equipment as was available, to Make stuff sound as good as possible, the whole idea of throwing Half the Baby out with the Bathwater as with mp3's, is in all honesty complete anathema to me  :wink2:  :tongue:  :rolleyes:  :sad:  :biggrin: 

NoCforMe

Could you do me a flavor? Make a .wav file that has some of that metadata (artist, genre, etc.) in it, then run it through my program. It should show that info.
Assembly language programming should be fun. That's why I do it.

sinsi

Some reading about extensions
Wave Formats
WAVEFORMATEXTENSIBLE structure
Pretty important if you have WAV data that's encoded.

Program works fine here, but I don't have many WAV files, and what I do have seem to be standard PCM.

NoCforMe

Yes, I'm aware of those files that have compressed audio and other formats.
However, those are pretty much "pro audio" files, and I have none of those.
Since I'm not creating a pro audio tool, I'm just pretending those formats don't even exist.
Assembly language programming should be fun. That's why I do it.

stoo23

QuoteMake a .wav file that has some of that metadata (artist, genre, etc.) in it, then run it through my program. It should show that info.

Hmmm didn't seem to make a Lot of Difference ??


BugCatcher

WAVE info for file "C:\masm32\examples\GetWaveFileInfo\TAUNT009.wav"

File size:      199,348 bytes
WAVE format      1
# channels:      1
Sample frequency:   22,050 Hz
Data rate:      44,100 bits/S
Block alignment:   2 bytes
Bits/sample:      16
WAVE data size:      198,034 bytes

NoCforMe

Quote from: stoo23 on February 17, 2025, 06:49:55 PM
QuoteMake a .wav file that has some of that metadata (artist, genre, etc.) in it, then run it through my program. It should show that info.

Hmmm didn't seem to make a Lot of Difference ??



Stoo, could you do me another flavor? Download the attached program (a hex viewer) and run it against one of those .wav files that's supposed to have that metadata embedded.
Then post a screenshot, just the first screenful will show enough of the .wav file header to see what's in there.

Thanks!
Assembly language programming should be fun. That's why I do it.

stoo23

OK,.. well regarding that last file, I'm unsure Anything really changed as far as the Info' stored is concerned.

Perhaps it is the way EAC is configured, although I did look to see if I had Disabled Any (Personally) un-required Options. The Only thing I chose Not to include, relates to the Addition of the Artists Name in each Track listing ie:



As the Output from that previous example seemed pointless to include (as NO extra Data was included, to display), I went searching through my collection, in case I could find any 'Rips' I had made previously using Windows Media Centre or even via any Linux tools  etc,... sadly perhaps with Nothing really to 'show'.

So I had a look at some stuff I knew had been created by other people/sources and found an example from some stuff I got from the "Audiophile Society Sampler", which DID show extra Data  :thumbsup:




NoCforMe

Hmm; looks like your file starts with the standard "fmt" chunk (18 bytes), followed by a "bext" chunk (of 632 bytes) which I have no idea what it is. That includes the text shown at the bottom. Apparently this is a custom chunk put in by your software.

Maybe scroll through the file, see if you can see any data that starts with "LIST", "INFO, "IART", etc. These are standard sub-chunks that my program knows about.
Assembly language programming should be fun. That's why I do it.

NoCforMe

Aha; it's a "Broadcast Audio Extension" chunk. Some info here.
Assembly language programming should be fun. That's why I do it.

stoo23

QuoteApparently this is a custom chunk put in by your software.
NO, Not MY Software.
That track was Direct from: David Chesky's - Audiophile Society

No "LIST", "INFO" OR "IART"  :sad:

NoCforMe

#14
I found the spec for the bextchunk. It contains the following items:

  • Description*
  • Originator
  • OriginatorReference
  • OriginationDate
  • OriginationTime
  • TimeReference (1st sample count since midnight)
  • Version
  • SMPTE UMID (array of 64 byte values)
  • LoudnessValue
  • LoudnessRange
  • MaxTruePeakLevel
  • MaxMomentaryLoudness
  • MaxShortTermLoudness

* This is completely blank in your sample files.

Question is, is it worthwhile for me to display this info? Seems this is really only of interest to audio-engineer types (i.e., people like you, Stoo).

Wouldn't be all that hard to do.
Assembly language programming should be fun. That's why I do it.