Comments (42)
APEv1and2tag.samples.zip
APEv1 and v2 tag samples, hand-made via hex editor, may be incorrect.
from sdl-mixer-x.
https://robert.muth.org/Apetag/
https://github.com/robertmuth/apetag.git
from sdl-mixer-x.
Oh, thanks, useful thing! I need to verify my code better...
from sdl-mixer-x.
Okay, I re-made some tags:
APEv1and2tag.samples2.zip
And yeah, here is a possible bug that causes MPG123 to try read a APEv1 tag as a frame, therefore it says "Bad frame, going to re-sync", so, I should fix that...
(APEv1 tags still hand-made because of no wrirers available, but, it's very easy to make it: remove header, and then, replace in a footer two bytes are meaning version, and voila!)
from sdl-mixer-x.
Okay, it's not a fault of tagger, it's a fault of music_mpg123.c as it's doesn't prevents library to access tag areas, therefore, MPG123 gets a fail to parse frame on a place of some tag. To fix this, I need to make the limitter that will don't allow mpg123 go more than given limit to avoid it see any tags.
from sdl-mixer-x.
So, the only one minor thing is left - make skipping of "LYRICSxxxx" tags
from sdl-mixer-x.
About Lyrics tags, after searching, I have found two specifications:
They are should be skipped
Also, @sezero , because of these lyrics tags, your MAD code can't find and skip them.
Also, some random code: jiajen/mp3edit@d4c845f
from sdl-mixer-x.
About Lyrics tags, after searching, I have found two specifications:
* http://id3.org/Lyrics3 * http://id3.org/Lyrics3v2
They are should be skipped
Also, @sezero , because of these lyrics tags, your MAD code can't find and skip them.
Also, some random code: jiajen/mp3edit@d4c845f
F... Is there no end to this thing??
from sdl-mixer-x.
What do you mean? If you mean more tags, I guess, there is no more should be more than this. By a specification, looks like it's very simple algorithm to skip them, will make a thing if I get my home.
from sdl-mixer-x.
MP3 format is a mess and therefore lots of alien tag formats ...
from sdl-mixer-x.
What do you mean? If you mean more tags,
Yes
from sdl-mixer-x.
Also, @sezero , because of these lyrics tags, your MAD code can't find and skip them.
AFAIK, libmpg123 doesn't handle those tags? Does it have issues decoding
any such mp3 files? (I don't have any such mp3 files myself.)
from sdl-mixer-x.
Try to play my examples with APEv1, both will make mpg123 to print out a frame error
from sdl-mixer-x.
Try to play my examples with APEv1, both will make mpg123 to print out a frame error
I meant mp3 files with that lyrics3 thing. (And I don't know if there really any APEv1 tagged mp3s are in the wild..)
from sdl-mixer-x.
Files with lyrics: some of files in my first samples pack, and probably, one of ID3V2.3 called as "obsolete" or may be another file, it's with a Lyrics3v2
from sdl-mixer-x.
It also causes mpg123 to print an error
from sdl-mixer-x.
I meant mp3 files with that lyrics3 thing. (I don't know if there really any APEv1 tagged mp3s are in the wild..)
I'll try to dig off my music collection, maybe some are? Btw, ApeV2 tags I have found in some songs of Mayumi Kojima.
from sdl-mixer-x.
Okay, for lyrics3 tags I made a skipper and it works on my samples:
Lyrics3-samples.zip
178e5f3#diff-be03c50dd3ee1164877fb642e43ac967R481-R483
I guess there are files around in a wild with these tags to verify the work better. Lyrics3v1 tag is very simple to create by hands: it needs two marks and any random text typed between them. Lyrics3v2 is a more complex thing that can't be made easily, but, I had some samples are used it.
from sdl-mixer-x.
You should test against files in the wild, not by hand-crafted ones.
To that end, I'm unsure whether we should really keep the extended
ir3v1 (TAG+) support in there.
from sdl-mixer-x.
I'm unsure whether we should really keep the extended
ir3v1 (TAG+) support in there.
The fact it exists a long time, we should support it at least to just skip.
You should test against files in the wild, not by hand-crafted ones.
I would dig around the world some of them, I bet there exist as these tags were in a standard. Lyrics tags are not for parsing: skipping only. For a MAD who is silly and won't correctly validate a frame, it's critically to skip all tags as possible to prevent a crash. MPG123 at the same time validates frames and prints out errors when finding certain frame is not a frame and something odd.
BTW: will fix your notices tomorrow.
from sdl-mixer-x.
Updated Lytics3 samples pack: Lyrics3-samples.zip I added few "invalid" files: with broken begin tag and broken end tags to verify error handling.
from sdl-mixer-x.
The change e7cb2d5 I made just now, should be fine:
- no more duplicated code because I using
tail_size
offset as a helper to allow same code read both at end and at before ID3v1. - handling ONE OF tags: endian APE, Lyrics3, and ID3+ in a condition that ID3v1 is presented.
Can you review current state of code?
from sdl-mixer-x.
@sezero, okay, just now I have found a BUNCH of files with a Lyrics3 tag are taken from the wild: I have found on my server's depths a ton of MP3 musics of my friend, and I downloaded all of them. I did a scan of them for some tags by grep, and I have found 11 songs are has this tag. I'll email them to you.
from sdl-mixer-x.
Oh, wow, one of them contains TWO Lyrics3v2 tag entries 🤔
from sdl-mixer-x.
Okay, I took a multi-tag (two Lyrics3 tags in the same file) from a wild file and I have updated Lyrics3 samples: Lyrics3-samples.zip
from sdl-mixer-x.
A little test for some players: APEv2mixLyrics3.zip I made a mixture of APE2 and Lyrics3, and VLC, Xplayer and Rhythmbox won't show tag of mixture files, but showing a tag of a normal APE tag. It's a confirmation of a think that these tags can't be used together in a same file as they are breaking their specification: each of these tags should be used before ID3v2 or at end of the file.
from sdl-mixer-x.
Ok. Give me some time to mess with this mess.
from sdl-mixer-x.
Ok, I'll don't do anything here right now I think, work/research as you need. 😉
from sdl-mixer-x.
- TAG+ example made with digged-up SpeedTAG software that you have mentioned in a email v1plus.mp3.zip
- SpeedTAG software itself http://download.dubroom.org/software/speedtag351.zip (attaching it here for just in a case: speedtag351.zip), it needs Windows 98 for a best experience. Works in Wine perfectly. Idk how it works on modern Windows, no guarantee it will work correctly.
from sdl-mixer-x.
Okay, while worked on ID3v1ext, I have found a minor bug in ID3v1 itself (last character losts) which I have been fixed:
from sdl-mixer-x.
Okay, all necessary tag formats are working fine, so, the issue has been completed!
from sdl-mixer-x.
Musicmatch tag (noticed while browsing the following page):
https://www.codeproject.com/Articles/8295/MPEG-Audio-Frame-Header#AddTags
A documentation (and a LGPL implementation) can be found in id3lib:
https://sourceforge.net/projects/id3lib/
Don't know if worth supporting
from sdl-mixer-x.
Musicmatch tag (noticed while browsing the following page):
Never heard about this tag format...
Looks like my nightmare dream has been predicated me another work on one another tag format. and:
F... Is there no end to this thing??
your quote about Lyrics3 you didn't knew, I would to say same about Musicmatch tag I didn't knew
Will check out some... Also, I'll try to check my MP3 tons for a hope to find this tag in a wild
from sdl-mixer-x.
Useful archive to test your parsing code:
https://github.com/JamesHeinrich/getID3-testfiles
from sdl-mixer-x.
Useful archive to test your parsing code:
https://github.com/JamesHeinrich/getID3-testfiles
Looks useful, thanks 🦊
from sdl-mixer-x.
Inside of an archive I have found this text file:
musicmatch.txt
from sdl-mixer-x.
Yeah, btw, in that getID3 the sample doesn't contains the Musicmatch tag example, or I should check it more careful, right now I gonna to sleep, will check some tomorrow.
from sdl-mixer-x.
Okay, I have found one wild example, I have sent it to you 😉
I'll work on this on my end later, right now I am tired and I gonna to sleep.
from sdl-mixer-x.
The MusicMatch tag skip support is in mainstream, looks fair for now.
Having more mp3 files to test would be really good.
Closing.
from sdl-mixer-x.
Attaching the MusicMatch tag extracted from the mp3 you sent to me.
We need more mp3 files with MusicMatch tags.
from sdl-mixer-x.
Possibly, it's existing in some other MP3 files... I should to grep them...
from sdl-mixer-x.
Okay, just now I have checked more files in my server, and it's no more Musicmatch samples I have found...
from sdl-mixer-x.
Related Issues (20)
- Disable GPL components by default HOT 3
- [Feature request] Support VGMStream format? HOT 3
- One GME issue on SPC HOT 13
- [BUG] Window freezes when playing via Native MIDI HOT 2
- Compatibility with Android? HOT 3
- Request to add wav gsm format support HOT 1
- "Gain / Volume Argument" for Tracker Music? HOT 1
- [MIDI] Ability to combine synthesizers on playback
- WAV File opens in SDL2_Mixer but not Mixer X HOT 31
- Cannot build `pxtone` due to invalid character when system codepage is 936 HOT 6
- Cannot compile under Archlinux. HOT 11
- /usr/bin/ld : cannot found -lSDL2_mixer_ext_Static : File not found. HOT 5
- Error when attempting to play .WAV files exported with the popular PS2 audio extracting program MFAudio HOT 4
- Support More File Format HOT 2
- Issue compiling on Asahi Linux HOT 1
- MixerX returns cryptic error when SDL2 is already included in the library HOT 3
- music->interface->GetAudio null dereference exception HOT 7
- Effect handler which changes buffer length HOT 1
- Do you have a library that allows you to drive a bunch of different soft synths directly? HOT 1
- Gain (Volume) parameter for stream musics
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdl-mixer-x.