id3 library

ImDaFrEaK

Well-known member
Joined
Jan 7, 2006
Messages
416
Location
California
Programming Experience
5-10
Ah, I broke the code last night bro and now its ON. I will have my own ID3v2.4 tag reader/writer .dll out soon and it will be running from the .NET 2.0 framework. I finally got the crap figured out last night and now I am in the process of building the .dll. Anyone hit me up on Y! or e-mail if you'd like to get the latest on it. :)
 
cjard
how bizarre! i thought your intention was to create a library for others to use?

I feel like implementing it the way I am now is of better use and not only does it speed the process by some small switch by not checking for the null byte it also forces the merge. I think I have it written as to do so in a fashionably yet swept under the rugg typa thing.

also you mentioned that every time the property is changed it is wriotten to the file.. do you feel that doing more than one write is a waste of time? i.e. if i sequentially set album, title, artist, track,year, genre and comment i wrote to the file 7 times.. would rather do it once!

My experience was with tagreaders anytime you wanted information you had to set the song, read the song, get the info, then set the info, re-write the info. This is much easier and you can change propertys one at a time if you like and have it done just as fast as the track is written with no time. But as you mentioned this is pointless and when doing it programmatically it could greatly hinder performance. There are fly methods available as well and they basically do it all at once for you with just one command line and few arguments. There are also fly methods for retrieving grouped information, ect... there are extra features.
 
Last edited:
It sounds to me that cjard just misunderstood you about the null-byte, as if you didn't write it in when forcing v1.1 which in turn could be misinterpreted by other tag readers. From what I understood you just ignore the initial v1.0 or v1.1 identifyer and immediately force the file into v1.1, which I partly agree with, I do the same thing with my own personal music collection.
 
ImDaFrEaK said:
Yes I do feel like that is a waste of time to change one element at a time but too bad your reader can't perform as well as mine. I also have implemented fly methods that retrieve and write information overloaded with arguments that can be passed as an array to save time. Maybe I need to share the entire length of my readers abilitys and maybe not. I have it working so well I completely removed any error handling statements to try and get an error. None thus far has occurred.

Hangon while I review my posts to see if I can find anything in them that indicates I'm trying to get into a contest with you over who can spit farthest...

As far as I can see, there isnt, but then I dont know you, or have access to evidence on how you perceive the world, how old you are, etc.

I dont doubt your reader performs better than mine, given that the source for mine is on a CD I archived 7 years ago. I wrote it as a teaching point while i was at university, random file access in java. I dont currently have any need to use it given that I already use an incredibly efficient tagging software written by a friend. I dont recall making any performance claims that need disputing, but I'll hold my opinion that 7 random access writes to a file where one will do is not preferable. It's good to know that you have an overloaded method(s) that allow the entire tag to be written at once, and yes, too, you should be more verbose about the feature set in future; if you use my response for nothing else, you could consider that you need to more effectively advertise the features of the software you write. :)

It's a great achievement to write software that works flawlessly, and I know from my own experience that even something as simple as appending 128 bytes to a file could potentially be an operation that a programmer doesnt get right first time. Congratulations!

Also, my reader is performing backup work to help maintain the players resources and still read and write out hundreds of files in seconds.
was this in response to something i wrote?

And if your trying to beat me up over the 1.1 merge then whatever. Don't be ignorant.
If you take my presenting you with logic that has been fixed for the last 9 years (yes, that's how old id3 1.1 is - it's a well trodden path too, im sure you know) as me beating you up for not sticking to spec, then it's an issue for your perception. As for my ignorance; again, i wrote a program nearly 8 years ago that does what your library does today. Does knowing the format of an ID3 tag for (possibly) longer than you've been programming make me ignorant? That's a strange definition..

My TagReader DOES WORK with ANY program and WILL not cause an error. I simply force character 30 to read as a track. Then at run time if your user dosn't like the track number, that is if they are still playing an mp3 with v1.0, then they can change it.
yes, but why would they? What i was questioning was:
The logic of deciding whether a tag is 1.0 or 1.1 is simple and easy to implement transparently to the user. Why would you not do that?
Instead of answering my question, you claim I'm belittling you and launch straight back into me. Fortunately (as there is no limit to my patience in situations such as thsi) I can operate in ignorance of this.

I have a well engineered tagreader and it's very efficient requiring minumum resources. I am very pleased with it and it's currently being tested with close to 200 beta testers.
I can tell youre pleased with it, but the way you respond to questions posed over the logic that you've indicated it possesses possibly indicates youre more pleased with yourself for implementing this particular wheel.

NO ONE has had a problem with it thus far and I don't think they will.
As you may state, generally, there is a compelling reason to move to 1.1 globally, and yes.. so many years have passed since the standard became defacto, that its likely all v1 tags are 1.1, but it's a dangerous assumption to make when the safety check is so simple. Would you expect a car manufacturer to say "oh, we've never had one of our cars throw a wheel off in the first 1000 miles so we are taking the 'check all wheel bolts are tight' out of the running-in service check' "

ALso, I have been using it primarily with my own collection of 4k songs along with my wife and friends and don't allow anything else to be used on my pc to perform testing. NO PROBLEMS YET>
Sir, writing 128 bytes to the end of a file is such a simple, atomic operation that it would be hard to see how it could be gotten wrong. In all the time i've been using taggers, i've only seen one break an ID3 v1.1 tag (mp3Tag something or other by analogX software) and I cant even remember what the bug was. Something to do with putting a null byte on the end of every field, or not putting the null in comment[28]. It's a little self-conflagellating to say that you wont allow anyone elses software to be used on your PC, but i can understand how youre proud of your library :)

I don't appreciate you dogging what I am doing.
If asking you questions about your adherence or not, to a defacto standard, is dogging then I'd rue the day I had you as a technical document writer in my company. If you fly off the handle every time a programmer asks you a thought provoking question, or seeks an answer to a missing part of the puzzle, i wouldnt expect you to persist very long in a professional environment.

I am glad you write your own crap so stay outta mine. I freaking bought 1 tagreader and downloaded about 5 other popular ones that all glitched on me and my users from time to time. This one so far has not glitched, if and when it does I will know how to fix it.
It's perhaps the motivation in every programmer to write his own software - there's just too many cowboys making too many assumptions out there, isnt there? I wrote my own because I just couldnt find one that I really liked. Not so much in writing and reading the tag, but the accessory facilities - facilities of the UI, getting the tag from the name etc.. I had some really neat features there that I havent seen anywhere else and if I were ever to re-implement the UI in .net then I'd probably use a tagging lib such as yours to avoid reinventing that particular wheel. In light of this, I thought I'd ask you some questions about your lib, see if you knew what you were talking about etc etc. The response was appreciated, even if it was a little rude..

Forcing 1.0 into 1.1 is not a bad thing. I fear your angry for not having done so yourself.
You dont need to worry about my feelings as to the evolution of the ID3v1 standard; it died when ID3v2 came along, and I mean that in a de-facto way. Try to find a player that is v1 only. Try to find a player that prefers v1 over v2 - Its usually the other way round. 8 years ago, ID3v2 was starting to appear, there really was no sense in arguing about v1 in internet forums, no sense in forcing 1.1 over 1.0, no sense in pushing v1 instead of v2. 8 years on, that hasnt changed - there's just a collective of old programmers who prefer v1 for their own reasons, and they are a diminishing minority in a sea of coders who dont actually care because someone else already wrote the libraries to save them reinventing all the wheels

I freakin don't know much but when you jump my case over what I have accomplished then your stepping on the wrong dude. With what I do know I am the best at it and it will stay that way.
You dont know much, but I'm the ignorant one? Sorry to bring that up again, but you levelled it at me and it was a little harsh. As noted above, i didnt feel I'd stepped on you, but I have seen similar responses from other people when I start asking them questions. I'll nudge a reality check in here, that to be the best at something you have to doubt that you are. Nothing else will drive you to improve. If you finish and pat yourself on the back and congratulate yourself for being the best there is, then you wont be very flexible or open to criticism on it. You wont even be very good to talk to about it. I would say i'd love to see you appreciate what i'm saying here, but you already proved unapproachable in that regard. I wish you luck with being the best and staying that way - there's a lot of room for complacency in such a statement, and bigger men than all of us have thought the same only to fall harder than we ever will.

I love what I do and I understand what I do. I have a long way to go. To share some resourcful critism would be appriciated but to clunder my achievement and logic with no evidence and or purpose in mind ticks me off.
So it would appear. I personally felt that nothing in my comments would illicit this reaction; i was merely asking you to explain the modus operandi you had chosen. I was attempting to satisfy myself that your code would be worth using. I'm actually satisfied of something else.

I don't duplicate code, I better it, if not why would i even build a music player to start with?
I see nothing in my comments that accuse you of plagiarism, if that's what youre defending here.. As to why you'd build a music player - yes.. why would you? With over a hundred such apps, what does yours bring? What compelling reason is there for using your app over WMP, iTunes, Winamp, Deliplayer, Apollo, Foobar2000 (in reverse order of quality)? Will you even answer this question without launching into me for deriding your software?


I really do appreciate all the help I have recvieved on this site and in the forums but this is the first I've been beatin up on and for somthing so stupid. We know 1.0 uses 30 bytes and 1.1 uses 28, null 1, then 1 for track. What's really so bad about forcing the null byte and setting the track number? Give me a break man, whatever.
I progressively ask you questions, you progressively beat yourself up til it culminates in having a go at me, and you complain that youre beat up.. ? I apologise if it really was my doing; i havent seen how it is thus.

Nothing's really so bad about forcing the null and setting the track - youre thus saying that your tagger is only capable of read/writing 1.1. I ask why you would program it in such a restrictive fashion when the unrestricted mode is so easy to code in, and you explode. And it's my fault? How rude!
 
K, I got some issues at the house that's got me beside myself. You guys don't need to know my personal life, wife leaving with kids, ect. So, I was not and are still not in a great mood but we'll see how it goes. BTW, she not leaving for good, nm.

Anyways, I have edited my post earlier to barely anything and targeted it specifically to what got me pumped. PLease re-read it.

Also, you may have been programming longer than me but I cut my time in half on this forum since I do it as a hobby unlike some may do so you can double what's posted if your basing it off of years of knowledge. I base it on time imbedded. I think you still got me since you said you teach it.

No, I don't see appending the end of a file a great accomplishment. Whoopydoo, but I still failed to find any simple reader that didn't glitch and or required far too many resources to use. I am much happier knowing exactly what is going on and assisting it whever errors occur. NP here, that's any good programmer.

I guess thee thing that got me was I really do program to better things and I did think the merge through. I still prefer to keep it how i have it now, even though you re-emphasized that there is a null byte there. But, you were pointing out common mistakes I guess you thought I made one. Anyways, I took it wrong, got offended, but appreciate the help anyways.

You said it was a good thing that I supplied overloaded commands and what not and this is just common since to me. When I write programs I try to put them on the professional level as any other leading applications and libraries. I assumed that anyone reading my post would ask me for more information and or realize that that was not completely it. There is also a lot of background work being done in the reader itself. I use a method that is probably not reckomended and if you like I will share that in an e-mail not on post, but it works very proficiently and helps to prevent error. It does slow the process of my reader down slightly but not as slow as some I have come accross. I think I optimized it to a great value and I will continue to optimize whenever I can. Thanks for the help, sorry to be a burden, I plan to be the best, God willing, and I think I have the gift and understanding to make it happen.
 
Back
Top