History 1

From kJams Wiki
Jump to navigation Jump to search

Next Versions

Click Here

Version 1.0d24: November 28, 2004

  • mmmmm, turrrrrrrrrkeeeeeeey
  • No longer free'ing a pointer that didn't belong to me when you "Add to Library..."
  • "Add to Library..." song name interpret dialog buttons work again (oops)
  • Oh, AND the volume slider. (silly me, with the timecode updating on the browser window every second, i keep changing the port and origin out from under other things that are trying to get mouse clicks and/or draw)
  • Wow! I fixed the tempo changing finally, now it works to slow down the audio (without getting progressivly slower and choppy), AND the graphics now sync to the audio!!
  • the Source list now sorts correctly (library, rotation(s), singers, playlists)
  • Started work on the "KJ Rotation" playlist. In this one the KJ sees (one set of) all singers marked as "here" (even if they have nothing in their tonight list) and gets to drag-reorder the rotation. This is in addition to the regular "Rotation" list where you see the list of singers repeat until their tonight list runs out
  • When you change the duration of a song, the timecode counter now updates exactly one time per "second" (with the duration of the "second" varying according to your tempo-change), rather than always updating 2x per second, which was leading to the timer appearing to jump occasionally.
  • Completely re-wrote the offscreen management to be object oriented. Now, when I switch to CoreGraphics, it'll be much easier to port. Not to mention the code is much cleaner and easier to read.
  • Woops! Fixed a bug that, during ripping, the CDG files created on disc forgot to prepend the track number and post-pend the ".cdg" extension, totaly hosing your library. Sorry about that.

Version 1.0d23: Thanksgiving, 2004

  • It is time for a glass of wine!
  • Logging menu choices no longer gives garbage if you click a menu but then don't pick anything, also calls the app menu the "apple" menu, even tho it's not. (update: now it's called "kJams", like it should be)
  • We now (finally) prevent you from ripping more than one selection at a time. Used to be, you could start a rip, and while it's going, start another, that would be bad. You would crash. Crashy baddy. Not crashy goody!
  • Hooked up the new prefs: Auto Full Screen during Play, Clear Search Field when switching Sources, and Create Playlists of Imported Songs (now also works when ripping CD's, it creates a playlist with the same name as the CD)
  • Finally re-wrote the song ripping framework so that it uses the existing database. This code was left over from around d1. Now you'll see the currently ripping song be hilited (selected) as it's being ripped.
  • Play/Pause, Skip forward and Skip back no longer assert-crash if you invoke them on an empty playlist or on the singer list, they just do nothing.
  • Fixed a crash on startup, was clearing out the search field when there wasn't even one there yet
  • Fixed crash on Add To Library..., was passing in a fake selection that was a bit too fake.
  • Hackily fixed that "crash between songs" error, by, err, playing silence instead.
  • Don't crash if you search when you have a singer selected in the source list
  • When twirling up the list of singers, no longer build the library list like four times
  • When removing a source (by delete or by twirling up something), no longer select the Library unless you're removing the currently selected source.
  • Don't crash if you view the singer list and sort by name
  • Don't crash when you sort by date, and some dates are "----"
  • Not that you *really* need to, but now in the Rotation list you can sort by song name, song duration, or date sung
  • In the tryout version, non longer (memory) leaking each song you try to put into a list that doesn't make it (where it says, "You can't cuz there's already three items in there")
  • You can no longer add a song to your faves list more than once
  • the Index column defaults to large enough for '9999' to fit
  • If the video runs out before the audio, we just hold the last frame until the audio runs out (we were already playing silence if the audio runs out before the video)
  • TimeCode!! Yaaaay, you can see the timecode of the currently playing song.

Version 1.0d22: November 19, 2004

  • Lite: No longer trying to save Rotation & Singers playlists
  • If, when you try to Rip, we find that your drive doesn't support reading CDG's, we now put up a better explaination than "CD+G Not Supported".
  • When ripping tracks, the song importer used to leak a selection list.
  • You can again do meta info swapping from the edit menu, without crashing
  • When deleting songs from the library, you are again informed if the song appears in any playlist
  • Fixed the stupidly busted feedback page. It works now.
  • Eee-GADS! Oh the huMANity!! Just discovered that the Lite version was saving corrupted library.xml files. The 2nd time you run it'd say "sorry, your file is corrupted", which, well, sucks. Fixed THAT!

Version 1.0d21: November 18, 2004

  • no longer logging a million comparisons, only those that recurse > 2x
  • logging menu choices now inserts a CR afterward
  • Lite: Fixed the File and Window menu, sorry 'bout that.
  • You can again delete things from your library and not crash
  • Pro: Attempting to prevent adding Rotation & Singers more than once.
  • When starting for the first time, no longer get the assert about "i_have_bomB"

Version 1.0d20: November 17, 2004

  • I like Firefly, Phireflye
  • Fixed that: "Assert Fail: singerP, in file: 'CSongDatabase.cpp' at line 1402" Woops, sorry 'bout that folks.
  • When there's a new version available, the checkversion program will now download the correct edition of kJams (Both Lite and Pro used to always download Lite, but now the Pro version will download the Pro version)
  • Added more log file info to the "Assert Fail: i_pliVec.size() == i_indexMap.size()" so if we get it again, i'll have more debugging info.
  • Slightly changed the audio rendering, hoping to get rid of the "Error: -50 -> CAudioPlayer.cpp: 469"
  • The "go to next song" function is no longer invoked from the graphics thread. Now, when the graphics run out, I shut down the graphics pump, then I post a "go to next song" event and handle it in the main thread. safer and cleaner.
  • Updated the built-in eSellerate engine to the latest version
  • Now logging menu choices.
  • Implemented "File->Show Original File(s)...", operates on selection, reveals MP3 & CDG or ZIP file in the finder
  • Infinite recursion bug while comparing is now logged for better debugging.

Version 1.0d19: November 14, 2004

  • Up, Up! And away!
  • New "smart" playlists, see new section here. Currently: corrupted zip files, duplicates (list of all duplicates), culled duplicates (list of most recently added duplicates, leaving the first one behind) (Not fully functional right now)
  • New Edit command "Trash Original Files", does what it says, you have been warned.
  • New Edit command "Remove from Library", works on items inside playlists.
  • Zip files that were compressed with something other than "deflate" were being reported as corrupted. I meant to have Expander give them a shot, that was the bug. Now Expander gets it's shot at unzipping the files.
  • Found a bug deleting songs from the library, that would leave the library in a corrupted state. I now detect this and fix it, so you don't have to throw out your library. This is a stopgap until I find and kill the actual bug that causes this. (You'll notice if you see a dialog that says "Umm, sorry, but somehow I've lost track of...")
  • Ugh! Found it!! Fixed a longstanding bug that would cause indexes to increment by 2 when importing new songs, cause the database to get corrupted, and generally leave you in a bad state. Whew!!
  • Woops! That preference "Pause between songs" somehow got deleted!?! It's back.
  • Fixed a bug where double clicking on a song would not play that song, but instead play some other song.
  • When my internal unzipper fails and I launch Stuffit Expander to try, I now bring it to the front, so if THAT fails, you'll get a notification, rather than having it seem like kJams has hung.
  • We no longer cause Stuffit Expander to quit after it's done. Leaving it up means the next time we need it, it's already there and can start decompressing instantly.
  • (Saturday) Actually started working on the integrated eSeller engine again. Wanted to do it last week but didn't find any time, so I'm a week behind.
  • I started breaking up the app into "Lite" and "Pro" for real now.
  • If you're paused in a song, then Quit, we no longer start playing, so you don't hear 1/8th second of audio. That was annoying.
  • Actually for real started writing the "Singers & Rotation" feature.
  • Like a dork, I spelled "Triple" with two P's
  • New prefs: "Auto Full Screen During Play", "Clear Search Field when switching Source" and "Create Playlists of Imported songs" (Not implemented yet)
  • The search filter now searches on separate keywords (separate by spaces or commas), so now you can type "dead alive dk" and it will find the "DK" version of "Wanted, Dead or Alive"
  • The volume control key shortcuts now work, plus mute. Same shortcuts as iTunes, cmd-Up or Down arrow for volume, cmd-opt-Up or Down to Mute/Un-Mute
  • Wrote a script for use with Romeo, so you can remotely control kJams with your BlueTooth phone, now available in the Downloads section no longer available. Play, pause, next, rewind, previous, volume up/down, mute, change pitch up or down, all from your couch (or the stage, or while seated in the audience), while your computer is over by your TV.
  • When the DB changes and auto-saves, we also save the prefs too, so things like window positions, volume etc are saved
  • Actually for real: Singers and Rotation. Make a new singer, give them a name. twirl them down, see "Tonight", "Favorites" and "History". Wow! Add stuff to their "Tonight" list. Now drag that singer into the rotation: Holy Karaoke Batman! Repeat for other singers, they are interleaved in the Rotation playlist! Yowza!
  • Now, to Rip songs, you can drag them from your CD into your Library.
  • During ripping, as artist names are fetched from iTunes, they are updated in the Browser window (keep your CD selected to see it) (The pause while displaying the fetched name is the time we querry iTunes for the FSRef that contains the path to the MP3 file, so we dont have to look it up later) This makes it painfully obvious how slow it is to querry iTunes for track info one at a time. Soon this will all be a thing of the past as you'll be able to 1) Rip audio in kJams and 2) enter / edit / get and submit (from freedb) ID3 tags for CDs and their tracks. By the way, please write to kjpro and insist they open their DB up to online querries of all disc meta info (keyed off a DISC_ID)
  • When ripping you can see the endpoints of the progress "bar". This "ascii graphics" is just 'till I get the nice graphical progress going. Priorities!!
  • Key shortcuts in menus now have all been corrected. You can now see nice glyphs like arrows and delete, and modifiers like shift and option. Take a look at the new menus to see them.
  • Did one simple optimization when loading the DB. With 4000 songs, it used to take 18 seconds to load, now it takes 4. Don't worry, for the 1.0 release I plan to make it such that, even if you have 60,000 songs, it will take only a couple seconds to load. (Save too)
  • No longer crash between songs. Haha!
  • Here's a good one: if you've got an external library (say on a portable hard drive), and you've "Add to Library..."'d them, then later you run kJams and that drive is NOT connected, 1) you'll start up with normal speed and 2) you won't LOOSE all those references. If you try to play a song it'll just tell you "could not find" audio or video.
  • When you're in the search field, you can still play/pause from the keyboard by holding or , or both, then space, left or right arrow
  • To add someone to the Rotation Que, drag their singer icon into the Que, OR select the "Singers" playlist and check "Here" next to their name. Likewise, to remove someone from the Rotation, uncheck "Here"
  • You can't reorder the Rotation que yet (you will be able to), but you can fake it by removing everyone from the que and adding them back in in the order you want.
  • Lite and Pro are ready to go. The holdup now is eSellerate, for some reason the software seems to be delivering a corrupted file when you upgrade from registered Lite to Pro.

Version 1.0d18: October 24, 2004

  • Lions and Tigers and Bears!
  • Got rid of the "this needs 10.4 to burn" message at startup
  • Found a couple places I was CFRelease()'ing where I shouldn'ta been, (the app bundle for example (!?!)) This could be the cause of your crash on startup
  • Re-org'd the key shortcuts for the graphics window & pitch bending. Take a look.
  • If the graphics window was partially offscreen on startup, it is moved onscreen.
  • You can now key-shortcut your graphics window to half size
  • Re-tuned the load library.xml routine, more robust for errors
  • Now, if your library file is old or corrupt, I just give you a button to over write it and continue without quitting
  • In the log file, it used to print "Parsing folder of 37648273 files", now it prints the real number
  • Fixed a bug where the browser buttons would draw in the wrong place
  • Woops! Pressing the back button was broken.
  • Fixed a crash/hang bug where if the audio ran out before the video was finished playing you'd get a buffer overrun. Now we just play silence until the video finishes

Version 1.0d17: October 23, 2004

  • Changed "Rip / Import... cmd-I" to "Rip Selection... cmd-R"
  • Changed "Open / Add to Library... cmd-O" to "Add to Library... cmd-O"
  • Changed "Get Info..." to "Get Info... cmd-I
  • "Add to Library" will now deal with zipped files that are inside /artist/song/ folder names.
  • Fixed a crashing bug related to having one song in the Q, which is stopped, with nothing selected, and going to previous or next song
  • Started making a real prefs file (xml, of course) so we can remember program settings between launches
  • Changed the "Corrupted Zip File" dialog to a message on the graphics window. Don't worry, eventually it'll be in the status readout area on the Browser window, NOT in the graphics window. I just felt a dialog was too invasive.
  • If you get the "Corrupted Zip File" message, we now dispose the zip object (so you don't get the "Assert: i_zipFile == NULL" warning) and we also don't bother to try to play the song.
  • Started making a prefs dialog, actual preferences :D
  • Started making the "Offscreen" class object, so that I can 1) double buffer if I need to and 2) make use of picture resources with alpha, so I can eg: make the nice buttons and the "readout" window in the browser window
  • Finished the preferences dialog. You can now set: Automatic Version Checking, Pause Between Tracks, Auto-Save, and Enable Logging. And yeeehaaaa, they all actually WORK!
  • Finished the Offscreen object, can now load graphics with alpha from the resource files
  • Started implementing the real buttons in the browser window (back, play/pause, next)
  • Started making the status window pane (ie: LCD display, for status, timecode, progress info etc)
  • The real buttons now work! And the status window now works!
  • Finally got rid of the old-skool buttons at the bottom of the graphics window. Now, it's JUST for graphics. Also, made it arbitrarily resizeable, but it keeps it's correct aspect ratio with black borders.
  • Moved the "Corrupted Zip File" message to the status window
  • fixed a crasher switching to next / previous song if the next song couldn't be found.
  • The volume slider now remembers it's position between launches
  • Volume slider now actually works!! Wohoo! Digital audio is cool. Just multiply each sample by volume (0..1) and you're done!
  • Added new "Graphics" menu, for sizing the graphics window back to normal, double or tripple size, and moved "Full Screen" here from the controls menu
  • You can no longer name a playlist by a reserved name. These names are: "Tonnight", "Favorites" and "History". I'll remove this restriction later.
  • And for my latest trick, window positions are now remembered. And if you position eg: the graphics window on a 2nd monitor, then quit, then remove the 2nd monitor, then run, it *should* re-position the window back on your main monitor
  • the buttons in the browser window will hilite depending on what you're doing
  • the pitch bender will reset to "normal" between songs, AND won't go to the wrong pitch the first time you use it after you've changed a previous song
  • Status messages that appear on the graphics window will also appear in the LCD readout
  • The volume slider is now logarithmic, rather than linear. (used to be, sliding to half way would only reduce the perceived volume by around 13%, now it will properly reduces the volume by 50% )
  • You really REALLY can't "Add to Library..." anything inside your "kJams Music" folder, if you do you'll get a warning
  • Now using standard window handler for Graphics window, which means I can draw the window before I show it, so now it comes up black instead of flashing white.
  • Saving now also saves the preferences file(s)
  • pitch is still changed when you change it the first time during a song, if you changed it for a preveous song

Version 1.0d16: October 18, 2004

  • Used to be, if I got any error expanding a file, i'd hand it to Stuffit Expander. Now, I only hand it off if it wasn't compressed with the "Deflate" method. Any other error and I just say "Corrupted zip file". This will weed out some corrupted zip files which hang Expander (and your whole computer) when you try to decompress them.
  • If the artist name starts with "The ", then it's moved to the end, so "The Beatles" becomes "Beatles, The"
  • During "Add to Library..." if you specify an unzipped song is in a folder labled "song name" and THAT is in a folder labeled "artist name", I will presume the rest of the items in the uppermost folder have the same format.
  • When you play previous or next, the little onscreen message tells you what song it is.
  • If no song is playing you can press right or left key and not crash, but actually play the next or previous song.
  • re-fixed the re-broken "rewind" function, was always "Previous"ing
  • If you sort by Artist, we now sub-sort by Song Name, not Album Name
  • we now remember your scroll position when changing playlists
  • when you delete an item from a playlist, the indices renumber (the column of numbers on the left)
  • cmd-F will switch to the Library and search
  • you can press return to exit the search field

Version 1.0d15: October 16, 2004

  • You can now cmd-S to save the database. (you no longer have to quit and restart just to update the xml file)
  • Right arrow key skips to next song. Left arrow key will rewind the current song, or skip to the previous song if you rewind within 3 seconds of start.
  • cmd-F will get you into the search field. While in the search field, [Return] will get you out.
  • Double click to start a new song. There is no notion of "stopping" a song any more, now it's just pause.
  • The pitch bender is reset to zero at the start of each song. (soon it will reset to your last setting for that song)
  • When you double click a song, you're also setting the current playlist. When the current song finishes playing, the next song that automatically plays is the one in that playlist. If it is the library, it will be the next one visually, ie: you can sort and filter the view, and the next one to play is the one right after the one that is playing, as you see it on screen. If you don't see the song that is playing (eg: you filtered it away), then the next song to play will be the one at the top. If there are no songs (ie: you filtered them all away) then playing stops. All other playlists will pick the next one by index, regardless of sort order or filtering.
  • If you used Edit->Swap on a song's name, you could crash, cuz I released a string ref then used it again, or you may have seen the wrong string sometime later because I didn't swap the string all the way
  • I had pretty well busted the "Open / Add to Library..." function, it would sorta work, but give you strange results in places. Now fixed again.
  • Fixed that crash between songs where a blank dialog comes up and hangs the program!
  • cmd-E will eject the selected CD (or you could just select it and press delete)

Version 1.0d14: October 14, 2004

  • Holy missing bug reports batman! I totally broke the code that rips the CDG stuff and manages getting the meta info. So you might crash on startup if you have a CD in the drive, or you might get blank meta info, or you might get the dreaded "Can't find audio" message
  • Fixed the audio playing of the "greetings" sample file from TriceraSoft (na TyrannoSoft) (says it's 44k, but it's really 22k, no more Chipmunks)
  • Noticed that cmd- keys STILL don't work. Why didn't anybody tell me that?? Fixed it again, for real this time, I hope.
  • Sorting on multiple criteria was busted (eg: when you sort by artist, it should sub-sort by album, then by track), and sorting on nuber-based criteria was backwards (was sorting reversed, ie: sorting 0->9 came out like 9->0)
  • Fixed key events in dialogs, you can tab thru buttons again, and press space bar to pick the current one, and press ESC for cancel etc.

Version 1.0d13: October 13, 2004

  • Fixed the "use for all songs in this import" feature, it should work as advertised now.
  • Perhap's I've fixed the pitch bender code. (The way I was doing it was rather clueless, I have since gotten a clue from the SoundTouch Library author). Maybe it works now? Try it out folks. In the Controls Menu, it's "Pitch Up", "Pitch Down", and "Original Pitch"
  • I'll now stop you if you try to "Open / Add to Library..." your "kJams Music" folder. That's a no-no.
  • fixed the song importer to cope if you have songs that do NOT start with a track number (eg: ones you manually place into your library folder)
  • Set up a preliminary eSellerate store, with shopping cart etc. for Lite and Pro versions. I went with them over Kagi cuz it seems they're a more comprehensive solution, plus you can activate instantly from within the application.
  • Friday: Working on getting eSellerate activation / purchasing integrated into kJams. Bleh, this is so boring, I'm just itching to do the Rotation feature.
  • Sunday: Okay, i've got the eSellerate engine integrated, and I've made a nice C++ wrapper for it (so it doesn't seem so 90's). It can handle purchasing (going from trial to paid) and upgrading (eg: going from 1.0d14 to 1.0d15 for free, or from 1.0 to 2.0 for a fee, or anything in between). It's still not entirely production ready yet, I need to figure some stuff out first.
  • Now, during Import, you can see the song names fly by in the graphics window, just so you can see that *something* is happening.
  • Monday night: Optimized the "Open / Add To Library..." function so hopefully it won't get slower and slower as you add more songs during an import session. (tested up to 44,000 songs)
  • Started limiting features in the "Tryout" versions of Lite and Pro
  • Removed / Disabled all the eSellerate and Tryout stuff to make another free release

Version 1.0d12: October 3, 2004

  • kJams requires 10.3. If you have < 10.3, we no longer crash while attempting to tell you this.
  • No really, I actually did fix the delete key. It really does work now!
  • Okay, ejecting a CD no longer asserts then crashes. Duh. This is why I need testers.
  • Fixed a buffer overrun (crash) with applescripts (fetching song info from iTunes, or unzipping with Expander)
  • Can now extract songs with bizzarre characters in their names (would report "Can't find audio")
  • the zipper object (that manages the zip files in the temp folder) is now better about cleaning up after itself. You should no longer have lots of files left open in thie temp folder.
  • When adding to library, we are now a bit smarter about figuring out the name format, and we don't present choices that aren't applicable. (Basically, we now parse where the track number is, if any, automatically)
  • the Add To Library song name interpretation dialog now lets you cmd-'.' or [esc] to cancel the import.
  • if you delete something from the library that was in a nother playlist *selected* you don't assert-crash when you go back to that playlist.
  • Finally nailed that bug in the audio player where it would crash at the end of a song (reading past the end of the IO buffer)
  • Pretty much completely re-wrote the library importer. I now support a much wider variety of song name formats.
  • If I parse only 2 strings out of the .zip file name, only present name/artist choices
  • No longer using the user's (visible) temp items folder. Now I'm using the system's (invisible) temp items folder
  • upped the xml file version to 1.1

Version 1.0d11: September 29, 2004

  • don't crash or assert on startup
  • don't die if your kJams folder ain't there
  • no million asserts about a missing *plP0
  • no crash when you click the menu bar
  • detailed logging when importing humungous directories
  • cmd- keys (and delete) work again when the browser window is forward
  • Yikes! No longer have ID clashes between songs and playlists. Symptom: run kJams, make new playlist, nothing happens. Or random crashes, when importing after you've just run, or deleting a playlist)
  • When deleting a song out of the library, if it was referenced by any playlist, you are warned.
  • detailed logging when naming a song file from a zip or cdg file.

Previous Versions

Click Here