History 3

From kJams Wiki
Jump to navigation Jump to search

Next Versions

Click Here

Version 1.0d39: September 3, 2005

  • Fixed a bug where you'd crash if you tried to delete a song when you had not played anything yet
  • Got Ripping hooked up to the LAME MP3 encoder, wow that is soo frackin' slow! Is LAME really that slow? that's pretty lame.
  • Now writing ID3 v2 tags to ripped MP3's
  • Prefs->Import->LAME Settings... dialog now hooked into encoder. Strangely, anything < 44KHz plays at the correspondingly too slow rate. ie: 22KHz plays twice as slow, 11KHz plays 4x slow. weird.
  • Separated out a new class: CDiscReader, in charge of reading a CD and it's table of contents, etc. The code for this used to be built into the CSongImporter
  • Created a new class CFreeDB, which now uses the new CDiscReader to get the CD info, so it can make the DiscID and send it to the FreeDB, so it can querry / send disc meta info
  • Friday: started experimenting with CFURL stuff, so I can interface with FreeDB via HTTP
  • Sunday: Got the FreeDB thingie working a bit, now I know how to use the HTTP CGI interface to get and submit stuff using CFNetwork. Now I just have to write a little wrapper and hook it into the browser info when you stick a CD in.
  • monday: Created an indeterminate progress bar dialog for when we're accessing the database, and the bar moves too, and the stop button actually functions! The FreeDB query will timeout in 10 seconds if it can't be contacted, and after 5 seconds if there's too much congestion.
  • tuesday: wrote a whole framework for the FreeDB thing, to get and submit on a timer thread in the background, currently, it executes it's command and shows the results in a dialog.
  • Thursday: filled in the framework, now we can get the disc ID, the genre & year (not used yet), the album's artist and the albums name. For each track, we can get track, title and artist, and NOW it shows up on the CD when you stick it in!! WOHOO!
  • now the Sites command works too, so I can query for all the possible places from whence to query the database.
  • Created a new CDiscInfo object that tries to find disc meta info by first checking the local cache, located in the new ~/Musc/kJams/kJams CDs/ folder, if that's not found, then looks in FreeDB online, if that's not found, uses the info that the Finder provides (same info you see if you double click the CD in the finder). Not implemented: Read from local cache
  • CD's now save their playlists in the new "kJams CDs" folder (aka the CD meta info cache), using a human-readable XML format.
  • Sunday: we can now read from our local CD meta info cache, so if you've ever already got meta info for a disc, you don't need to be online to re-get that info next time you stick the disc in. This also means, if you stick a disc in, change some info on it, (without submitting to FreeDB), then eject it, next time you stick it in, it'll remember that info. Also saves the browser state. (columns, sort-by etc)
  • Monday: Can now name a CD, and it sets the disc title for all tracks
  • The DB now stores disc Category (different from song genre), and disc Artist (may be different from song artist), as well as song Year and song Genre. You can't see these things in the UI, but the stuff is there underneath the hood.
  • Tuesday: I've now created a (multi) track meta info editing dialog, used to set ID3 tags, can set on multiple tracks at once, has prev-next button too! Lets you set the Year and Genre too. Does not yet set ID3 tags on already ripped items. (but it WILL set them if you name stuff on the CD then rip)
  • Wednesday: Re-built the LAME.component to give the user access to more settings, It's now like the AudioHijack encoder settings dialog
  • implemented a picker dialog if the query results returned more than one hit. ie: if you look up a disc and there is more than one entry, you now get a dialog where you pick the one you want from a list. If you pick one you find out that you don't like, you can just do Advanced->Get CD Tracks from FreeDB... again, and pick a different one. Haven't really been able to test that, cuz i haven't found a disc that returns multiple hits.
  • updated the kJams code to be aware of the new LAME compression settings dialog
  • made the LAME encoder marginally faster by forking it onto it's own pre-emptive thread. On MP machines, you'll get real benefit. (shaved 1/3 time to rip on a dual G5)
  • made a Disc Info dialog where you can set the disc Category and disc Artist and disc Year. This will pop up automatically if you try to submit info that hasn't been filled in yet.
  • implemented the Advanced->Get CD Tracks from FreeDB... menu item, it will replace any meta info you have with what it finds in the DB
  • re-wrote a buncha string and path handling code to be more UTF-8 savvy. Mmmmmm, CoreFoundation rocks.
  • Implemented FreeDB Submit, not yet debugged. Still workin' on it, this one's pretty hard.
  • debugged the "multiple matches" code, so if you have a disc for which the FreeDB has more than one match (either exact or fuzzy), then you'll get a dialog where you pick from a list
  • still working on Submit. The easy part is creating the submission, hard part is formulating the proper HTTP.
  • Okay, got Submit working, whew!
  • Now forcing user to name unnamed CDs / Tracks / Artists etc, before submitting
  • you can double click a CD to get info on it.
  • the FreeDB Site domain is stored in the prefs.xml file in case you need to hand-edit it. That is just until i put a nice pref pane on the whole thing.
  • Now forcing user to set meta info on songs before ripping
  • Removed the "always delete from iTunes" pref
  • disabled all but LAME in the import pref, enable General prefs for CDDB
  • now coping gracefuly if the user did NOT install LAME (fall back to iTunes)
  • removed the preemptive thread on the LAME thing, cuz i realize my Fork map is not thread safe. how ironic.
  • i can now cope if you already have an older LAME component installed

Version 1.0d38: August 6, 2005, the one year anniversary of 1.0d3, wow!

  • Going to Maui? Stay here.
  • I got married to my Soul Mate
  • Attempted a blind fix for the "application reverts to tryout mode" bug, so that shouldn't happen any more. (Also: remember the �"enter serial number" dialog no longer takes for ever to check a wrong serial number� bug i fixed last time? well, it's back now. my fix for that is what broke the whole thing)
  • r2, July 18
  • check version dialog now reports current version (duh)
  • fixed the version check xml file on the web site (oops)
  • fixed a BAD bug where songs COPIED (not moved) out of iTunes would be truncated by 1MB. Sorry folks, you'll have to hand-delete just the bad .mp3's out of the kJams library folder, and re-copy from iTunes using this procedure. (follow only steps 1-12) To delete bad songs from the kJams library, locate the bad song, select it, and choose File->Reveal In Finder...", then just put the song in the trash (and empty trash). Next time you play the song, kJams should search in iTunes for the missing song.
  • r3, July 20
  • The "esc" key and cmd-"." now work in the "Some of the selected items are referenced by other playlists. Are you sure you want to delete all references?" dialog
  • When you rename a playlist, the "Sources" list will re-sort
  • You can now search by index (type the number in the search field)
  • You can now press the [Enter] key to do a find (in addition to [Return])
  • Re-Fixed the song-cutoff bug where, if the graphics ended before the audio, it would skip to the next song, now it just hangs on the last frame and finishes out the audio, before going to next
  • r4, July 21
  • if you're playing a song from a singer's playlist (tonight, faves, history), and you change the pitch, it will work, and update the pitch in the song's popup. Same story for tempo, tho there's no visual feedback.
  • You can no longer (accidentally) double click on a song from inside a targeted playlist and have it add another copy to that same playlist. You might run into this if you eg: change the pitch via the popu menu on a song, but maybe you missed the right setting so you immediately click the popup again (to set a new setting) but that 2nd click was registered as a double click, so it adds that song to the targeted playlist, which is the current list, which is probably never what you wanted.
  • Fixed a bug with the relatively new pref "Advanced->Automatically un-mark singers not here". The intention of this pref is to remove a singer from the rotation (mark them as not "Here") when they have no more songs in their Tonight que. There was a bug that, when this was enabled, it would cause the rotation order to go all skwewey when they were removed from the list (basically, causing the next up singer to suddenly be last in the rotation)
  • r5, Jul 24
  • If you press Cancel in the song name parser dialog, you don't get asserts then a crash. duh.
  • Oops, i seriously broke playing from the Library or any other non-singer, non-rotation playlist. Fixed.
  • I now report the result of the Purchase call if it fails
  • If you delete the current venue from the finder (while kJams is quit), the next time you run it'll default to the first one in the folder
  • If you make a new venue, you can see the old venue in the menu, without having to quit and restart
  • When switching venues, if the singers folder is twirled down, you no longer get an assert for each singer that is twirled down.
  • Started implementing automatic bug reporting, not done yet.
  • r7, July 24
  • if your kJams Music library does NOT have both audio and graphics files in it (ie: it has at least some places where there are only .cdg files) then you don't get the "The world is about to end" nor the "this file may be duplicate" dialogs over and over.
  • Now recognizing "PowerPC G4 (1.1)" chips in the log file
  • Fixed the Help menu to say "Enter Serial Number..." instead of "Manual Activation", that was a bug in the first place. Manual Activation means something totally different.
  • Got that automatic crash reporting going, but it only gives the crash report, it's *supposed* to give the log file too, we'll see what tech support says. Better than nothing, but NOT what I wanted.
  • r10, July 25
  • Oops. I crashed on Tiger attempting to invoke the crash reporter (how ironic). Now fixed. Okay folks! Go crash, and when you do, click the "send" button and i'll automatically get the crash report and the log file!!
  • r11, July 26
  • You can now use an alias for either "kJams" folder (inside the ~/Music/ folder) or for any folder inside that folder.
  • The applescript to launch Stuffit Expander, under Tiger, was malformed. This has been rectified, we are still compatible with Panther.
  • r12, July 29
  • In the bug reporter, I now ask you to tell me your email address, else how can I follow up with you?
  • Updated the bug reporter to have a custom icon, and better help screen (press the little question mark). Also, moved the resources into my dev tree and added to perforce, in case you care.
  • I've implemented my own ability to send myself the console.log file, when you have not crashed. So if you ever get in a situation that asks you to send it to me, I make it easy for you by copying the interesting info into a temp log file and attaching that to an email message using Mail.app. If you don't use Mail.app, then i just reveal it in the finder and hope you'll somehow send it to me. One day i'll actually just send it directly to my SMTP server using the HTTP framework, no email client necessary.
  • if you sort the singer's list by times sung, it is now correct
  • the TAB key will now get you out of rename mode in the Source column. (still have to fix the tracks column)
  • When ripping, you can't rip. Also you can't eject the disc unless you first cancel the current rip.
  • After you rip, even if you have the "play a sound when you're done ripping", if you are currently playing a song, it won't play the sound.
  • If, during a rip, you eject the disc from some other application, kJams cleans up and gives you a warning. (Rather than leaving you in a bad state)
  • r13, July 30
  • fixed a bug that would pretty randomly stop Ripping before it even started.
  • Fixed a bug that could cause problems including assert fail when you get the "Song or Album name mismatch" dialog. The dialog is now much more explanatory *and* has a help button that leads here.
  • If you attempt to quit during a Rip, you get a warning dialog that you can cancel out of.
  • When creating a new venue, we now save the database in case there's any out of date info (eg: new singers, renamed venue etc)
  • If you're editing text when you make a new venue, it will finish the text edit before continuing.
  • If you change the name of a venue in the finder (while kJams is quit) then kJams will pick it up correctly next time you run
  • Fixed some problems with creating Venues, hope I got them all. Not sure.
  • r14, Aug 2
  • if you're editing a name or something, and you switch out, it ends the rename mode
  • Unix errors now get full english explanations. You *should* never see them.
  • Now weakly linking against the LAME.framework. If it's installed, it'll link, else, no matter. I need to get OneStepRipping done ASAP, so I'm not going to wait 'till I completely overhaul the audio engine to use QuickTime. Using LAME i can get going right now. You'll have to manually install the LAME.framework, for now. What does this mean for you? Nothing. Just that you know i've started working on it.
  • Turned off "Log Threads" as default

Version 1.0d37: May 30, 2005

  • We're getting Mauied!
  • When you have "Create playlists of imported tracks" and you rip something from a cd, then rip something else from the SAME cd, you don't get more playlists, they all go into the same one.
  • Much better error reporting when you are trying to rip and it doesn't work.
  • There were some computers that, you'd start to rip and it would just not do anything. No report, no nothing. Now, I detect that situation, and try a couple different things, which seem to work. Also, if it *really* won't work, i'll tell you, so you're not left hanging wondering what happened. Effectively this makes more CD drives capable of reading CD+G discs!
  • r5
  • okay, about that "create playlists of imported tracks" thing? Well, I'd go find a playlist by the same name and append, but duh, the original CD has that same name. Well, this made it go and append it to the CD. That's no good. So now it skips CDs when looking for that playlist by name.
  • Some messages like "ejecting disc" and stuff are no longer printed in the lyrics window
  • exporting a song list (via copy-paste or xml) now includes the song ID (index). Can't print a song book without a unique id for each song right?
  • Pro version: the width of the "sources" column has been fixed, and no longer fluxuates when using disclosure triangles (twirly arrows)
  • r6
  • When you hover your mouse over the column header dividers, you now get "resize" cursors
  • You now can copy the singer's list, it just copies the singer's names for now.
  • Now, if you drag and drop a playlist's selection into a text document, you get the same info you would if you copy/pasted
  • You can now double click a CDG in the finder and it will import and play, or drag and drop a cdg or mp3 onto the kJams icon, same thing
  • You can now drag and drop files / folders from the finder into the library playlist and they will import. If you only drag one, it will start playing
  • If you Edit->Copy a playlist, you now only get the selected items, so if you want the whole playlist, you have to select all first
  • I've gotten rid of many of the global variables used for a/v playback. This means we're closer to the "cue" feature where you will be able to pre-load the next song, that way you can either cross fade into the next song or just play it instantly when you're ready. Still some work to do to get this going however.
  • fixed a bug in preferences, if you switch out then back in, the button bar would become unresponsive (unless the window was placed precisely over the tracks list)
  • Fixed a crasher when you double clicked a song. Was trying to add to the "target playlist", which was uninitialized. oooooh my brain. does anyone want to trade me for a younger brain?
  • okay, about that "create playlists of imported tracks" thing? The one I said I fixed for r5, then said I *really* fixed for r6? Well, it never got fixed. Now it is REALLY REALLY fixed. Sympotm was: you rip a disc, eject, and all the music from that disc disappears from the library. If this happened to you, you'll have to either re-rip (to preserve your existing playlists/singers/venues), or, if you're willing to throw out all your singers & playlists, just chuck your "kJams Library" folder, and the library will rebuild with the songs you've ripped (into your "kJams Music" folder).
  • r7
  • fixed a bug introduced in r7 that gave a "control error -39" at the end of a song and did not stop playing or go to the next song.
  • if you target a singer's tonight list, that singer appears targeted. (you already knew you could target a singers tonight list by double clicking the singer right?) That way you don't have to twirl down the singer.
  • when slurping audio tracks "from iTunes", I'll now slurp it even if it's not in the iTunes folder (cuz iTunes can reference files from anywhere, actually).
  • r8
  • Okay, after like five months I finally made a way for a user to enter their serial number.
  • r9
  • fixed name parsing bug when rebuilding your library, if you ripped songs either without track numbers or with both track and album numbers. Also it seems you can now "Add to Library..." a folder that is in "kJams Music" folder format, but only if there are track numbers
  • There's now a pref to play a sound when done ripping
  • r12
  • You can now "Add to Library..." a folder that is in "kJams Music" folder format, even if there are no track numbers, or if you have disc#-Track# prepended to song titles
  • During Import, there's now a pref to move the �The� to the end of the artist name, eg, �The Beatles� becomes �Beatles, The�.
  • r13
  • You can now delete tracks and skip the annoying "Are you sure...?" dialog by using cmd-del. Be forewarned: this will move original files to the trash without asking!
  • After a successful purchase, you are now informed of success and that all features are enabled.
  • The "enter serial number" dialog 1) no longer takes for ever to check a wrong serial number and 2) reports whether you succeeded and 3) if you did NOT succeed, presents the dialog again
  • The ending time of the current playlist is now shown at the bottom. EG: if it's 9:30pm and your playlist is 2 hours and 10 minutes long, the end time reads as 11:40 pm. Note it's only updated when the playlist changes, it's not "realtime", and there is no fudge factor for segue or bumper music
  • The audio encoder type is now stored as a 4-char code rather than an integer (so you can actually read it if you open the prefs.xml file)

Version 1.0d36: April 30, 2005

  • And they have a plan...
  • Ooops. Paths to songs and song names and even singer names can really actually now have non-roman characters in them, even stuff like this: "���". And the default encoding is now determined by the system, not hard-coded to macRoman, so it *should* work on eg: chinese and japanese systems.
  • Don't crash on startup if we do some repair on a song's meta data (causing it to wish to refresh it's display in the window, which hasn't been shown yet, it used to try anyway, causing a crash)
  • You can now delete playlists and singers and skip the annoying "Are you sure...?" dialog by using cmd-del
  • Pleh! Fixed yet another bug in the pitch bend controller that wouldn't let you set it back to zero (original pitch)
  • You can now delete singers & playlists without having to empty your trash (we uniqify the name before deleting it)
  • If you try to play when there is no selection (eg: a singer is selected), you don't crash
  • I know i should be working on other things, but I just WANT this feature so bad: Now, in all playlists except Library, the "Album" field has a popup. So, you can pick which album a particlar song comes from. eg: a singer gets up, and 5 bars into the song, they realize they HATE this version of the song, they meant to pick the same song but from another album. Simple, just pick the album from the list and keep going.
  • You can now delete multiple singers at once by clicking on the venue name (default name is "Singers") and selecting them in the list on the right, and press . If you want to skip the "Are you sure..." dialog, press cmd-del.
  • Threads (both preemptive and cooperative) are now wrapped with exception handling, so I won't crash if a thread throws an exception.
  • fixed a nasty bug that would assert and/or crash when you delete a singer
  • fixed another nasty bug where the rotation would get screwed up if you removed a singer from the rotation who happens to be the current singer.
  • fixed another, not so nasty bug where it would foget the current playlist item across quit / run. This is bad if you crash in the middle of a rotation, you want to pick up with the current singer, NOT the beginning of the rotation
  • If you crash or quit in the middle of the rotation, you can now skip back to previous singers (and not crash)
  • r2
  • Ratings!! You can now rate your songs! There's a notion of "global" ratings, made in the Library, and "Singer Ratings", which inherit from the global library until set by the singer. Each singers' ratings are remembered separately. KJ: Don't set the user's rating from the Rotation or KJ Rotation unless they tell you to. If you want to rate a song, do it in the Library. Bonus: The "Album" popup will show the rating of each song in parenthesis (0-10).
  • r3
  • I'm now flushing key events at startup and right after "pause between songs" to ensure no stray key events accidentally trigger the music to play
  • Real Preferences! Yeah! You know, the kind with the icon bar across the top, and you click the icon and the dialog whooshes to the new size and shows the controls on that panel? It's neat! Wow that took me all day! Remembers it's position on screen too.
  • For you programmers out there who care: I now derive the dialog class from the window class. I know it's a no-brainer, but they started off as branches from different projects. So now I get all the goodness from windows inherited into my dialogs.
  • If you play a song from inside a singer's playlist that is NOT the "tonight" list (eg: the "Favorites" or the "History" list) and their "Tonight" list happens to be empty, you no longer crash at the end of the song. How nice.
  • Finally added a pref for you to set your music library location. So it's easier now to move your library to another computer. Best of all, if you merely drag and drop your library from one user to another, even on a different machine, if you use the standard location everything will "just work". All your ripped music is now stored relative to the library location. This also means if you have a very large library of ripped music, your library file (Songs.ktd) will be smaller and quicker to load. You can also pick an alias as your library locaion and it will NOT be resolved until an actual song is requested.
  • r4
  • oops, fixed a bug that prevented zipped files from playing
  • if your library was over about 2 gigs, you'd get wrong numbers for it's size. fixed.
  • if , in prefs, you changed your library location then hit cancel, you no longer get utterly screwed.
  • r5
  • Sorry if you got the "rating > 10" assert, you shouldn't get that any more
  • Several dialogs with the "Cancel" button as the default did not also respond to cmd-"." or [esc], now they do.
  • if you sent a singer home, (uncheck "here", or delete from KJ Rotation) when there was nobody currently singing, you woulda crashed without warning. Now, I warn you. Just kidding. Now you don't crash.
  • If you popped a CD in, and you clicked the albums popup, you would crash. I was trying to querry info on other albums, and they just don't exist for CD's. I've now removed ratings and the album popup from CD tracks.
  • Fixed uninitialized variable (potentially causing crash) when accessing version tracker.
  • Logging has slightly more info on startup
  • r6
  • the "browser selecting source" log message now logs the item you're selecting, not the one that just got deselected
  • There's a new advanced pref, "Automatically un-mark singers not here" that, when a singer sings their last song, they're removed from the rotation.
  • if an album name has a "/" character in it, you no longer have a problem ripping it (specifically: linking it to the audio .mp3 from iTunes)
  • when ripping, we now verify you can link to iTunes before ripping. If it doesn't link, we don't rip. if it DOES rip, we automatically pull the .mp3 out of iTunes
  • There's a new pref under Importing: "Always delete audio from iTunes", when checked will always actually remove the .mp3 file from the iTunes library when you rip or when you "Edit->Special->Pull all audio out of iTunes...", else it leaves a copy behind.
  • ejecting a CD no longer causes a crash or assert fail
  • Now do more robust Table of Contents scanning on CD's, when ripping, so you don't get the assert about the TOC not matching the track length
  • hiliting of selected items, noteably the album name, is now correct for when the window is not active
  • Fixed an infinite recursion problem attempting to compare a name to itself over and over.
  • r7
  • if you have the "update search results while typing" turned on, it works again. sorry i busted it for a second there...
  • You can edit song, artist, album names from the library. Not sure why this wan't allowed before. You have to enable this in Prefs->Advanced.
  • Drag and drop into playlists works again! Sorry about that!
  • r8
  • fixed the "Automatically un-mark singers not here" pref, which would just crash. Now it actually works.
  • if you set something's name to "", it does not get accepted
  • When a rotation is playing, a double click on a song from a list will NOT stop the rotation and go to that song. (How many times have I accidentally double clicked something while browsing?)
  • There's a new notion called "Target Mode". When you double click on a playlist, it gets a little target symbol. After that, any song you double click on will go into that playlist. This helps people who don't want to deal with drag and drop. For example, a singer "signs in" by double clicking their name (this sets their "Tonight" list as the target), (or just double click the playlist you want to append to) then they proceed to double click songs from the library, or any playlist. Then they "sign out" by double clicking the targeted playlist again to un-set target mode.
  • There is now an eject button next to CD's. And you can press it too! And it works!
  • You can again edit the names of albums in any playlist, not just the Library
  • drag and drop from a playlist now shows the album name and ratings in the drag image. I know you're siked about that.
  • New export capability: "Edit->Special->Copy All Playlist Files to...", then select a folder, and kJams will copy all the files (zips, mp3s, cdgs) into the destination folder, including going up 2 directories from each file. Lets you more easily copy files between computers. eg: if you've ripped some new songs since last updating another computer, go to the library, scroll all the way to the bottom. the new songs are the last ones in the library. make a new playlist, and copy the new songs into that playlist. now select that playlist and "Copy All Playlist Files to...", there you go!

Previous Versions

Click Here