History 4
Version 1.0d40: Not released yet
- made the thread manager thread safe. duh.
- ripping with LAME now on a separate thread (for 1/3 speed increase on an MP machine)
- if you try to rip while already ripping, you'll just get a warning, not an assert
- I'm now forcing correct track numbers when you submit to freedb. Somebody submitted "Dolly Parton / CB90255" and had track 1 listed as track 4, so there were two track 4's.
- YIKES! There was a problem in 10.4 where ripped audio would truncate to 4KB (basically it seemed like the audio did not rip) FIXED!
- r1
- re-wrote a buncha the thread handling stuff to be better behaved in an attempt to get rid of the "bad joojoo". Also, corrected spelling to "juju". didn't get to any other bug, and may not have even fixed this one. Do you still get the juju bug?
- r2
- dam! it was an uninitialized variable. and guess which one? the error code, of all things. so I was *extremelylucky in *mytesting that it miraculously was set to zero (no error), that is why ripping worked just fine for me. But for the rest of you, it was set to some non-zero value, indicating an error condidition. And I realize i'm not handling an error correctly, leaving you in a bad, un-quittable state!! Wow!
- r3: Tested and functioning on 10.3 and 10.4!!! REALLY!!!
- and now you can rip more than one song at a time, really! Sorry folks, this is the first time i've ever used semaphores and signalling and mutexes and MP threads to any real extent where it REALLY has to be done right. It'll get better, I promise!
- r4
- now that I'm using more preemptive threds, I realize I need to make my logging thread safe. People have been crashing in the strangest places (places that never crashed before). I think it is probably due to using non-thread safe code inside threads. Well, now I can Log() to my heart's content from a million threads at once and it works just fine.
- fixed a possible problem sending an empty log file. now we won't crash if there's nothing there.
- when you stick in a CD, kJams will search your library for songs with identical names and albums. Used to be I'd skip checking track number. Now it'll only match if the track number matches too.
- The "Get Info..." dialog now does the right thing, and the "next" and "previous" buttons now work as expected
- if you try to delete a song that is currently loaded for playing (even if paused), you'll get a warning, and if you go thru with it, the song will stop playing, and actually get deleted. you're welcome.
- if you get an error deleting a song, you now get an error dialog, with possibly more info in the log file
- you can now consistently delete songs. and they really do get removed.
- upon loading your library, no longer will kJams delete a song that has no audio or .cdg reference, in preparation for the "play direct from disc" placeholder song feature (see below)
- after ripping, the new info on tracks is actually remembered when you quit and re-launch (eg: genre, year)
- YIKES!! Really bad bug where if you made a change and quit real quick, the change would not stick! Fixed!
- if you sorted a CD by other than track, quit and came back, the order was messed up. Actually all the meta info was scrambled! eeks!
- r5
- OOPS! Found a bug that would crash ANYONE who does not have AltiVec when they tried to rip. Doh!
- MP3's should have the default icon again (probably iTunes)
- MP3's should hopefully get encoded with the correct header info specifying number of packets, that should make them able to load instantly instead of making you wait 12 seconds sometimes?
- turned on PPC 7450 instruction scheduling. May make some things a teentsy bit faster
- When switching albums in the KJ Rotation, the pitch updates
- if you click Pitch but drag away, it leaves the pitch alone, rather than change it to like negative a million.
- version checker is now thread safe
- the audio player is now thread safe. I was accessing a "done playing" flag from more than one thread. If one was writing it at *exactly* the same time another was reading it, you'd crash. Rare, but it happens.
- the song importer is now thread safe. we're another step closer to background ripping and having a cancel button
- started writing a thread safe deque (where you push onto the end and pull off the front) for things like: play direct from disc, play from quicktime, play from mp3, ripping in the background, ripping, encoding, and playing simultaneously, things like that.
- r6
now really ACTUALLY writing proper Xing header on MP3 files i create, so you don't get that "Error playing Audio: Are you sure you ripped the audio into MP3 format?" dialog, and you also won't get that 12 second delay.The function (lame_mp3_tags_fid) crashes my machine every time.- I wrote this wizard new thing called the Spooler, that runs in the background, and spools "things" from one place to another, bit by bit. A "place" can be a CD, memory, a file, an MP3, a QuickTime, the video screen, the speakers, and eventually the network. Can you feel the goodness?
- Handling errors again, nicely, if your drive does not support ripping.
- no longer logging threads while ripping (would flood the log file)
- no longer causing the prefs to get saved merely by invoking the prefs dialog, nor by switching pref panes
- presf ACTUALLY get saved when you press OK! WOW! Can't believe nobody reported this. They'd get saved if you hit Cancel!!
- more work on the Audio Spooler, still skipping
Bugs I'm aware of that will be fixed
- it's insanely hard to get work done on a 1 CPU system while ripping. and sometimes you crash.
- sometimes deleting a playlist will crash
- can't enter unicode in meta info
- the album popup may crash under certain situations
To Do
- Problem: NOT dealing with UTF-8 very well. Must replace all std::str with ustring
- Set ID3 tags
- make a FreeDB pref panel, where you can specify your FreeDB server
- write Zip function so after you rip MP3+G they'll get zipped up together, with a canonical name, enable Zip after rip in the prefs pane
- When editing meta info on Zipped files: unzip files, set ID3 tags, then zip them up again, but leave a copy unzipped so you can get them easily again.
- During import of pre-existing MP3's, scan ID3 tags. Also, write a one-shot utility to both scan for bad zips and also read ID3's from valid zips, and re-canonicalize the names. Move bad zips to a new folder.
- Allow a 'placeholder' track to be input into a singer's "Tonight" list, that includes the disc name and track number, and when it comes up, the dialog comes up, says "stick in the disc", to let it play direct from disc, automatically picking the right track. Alternately, allow KJ to drag a track from a CD into a playlist. then, eject disc. when that song is coming up next, put up a dialog that says "please stick that disc back in" and it'll go play it from disc, Alternately, rip the song when it gets drug from the CD into the singer's "Tonight"
- play direct from disc (most of the parts are in place now)