CDJ Revision Log

This file is an outline of changes that have occurred in CDJ by date.


fixed maximized window restore
door open / close now counts as player activity, delaying autosearch
location is now reported in playlist_item[ ] automation
mode command issuance now smarter
S-Link / IR receive granularity reduced - extended IR signals no longer block processing of S-Link signals
IR messages truncated to 1 second
Fixed problem with reading old text libraries


turned off autosearch default


fixed transfer text menu links


fixed offset error in group names


Library compaction
Fix in search drag n drop
New transfer text menu items


Fixed missing search list icons
Made CDJ release include debug PDB


Got rid of group listbox in details since there is no way to write this data


New CDJID system which is better than old CDDB IDs
Task manager
Use of location valid flag
Auto search feature
Fixed fading GUI for multiple font sizes
Playlist always maximized


Fixed double playing item notifications


Redo of message logging


Removed lyrics functions


Added list_players command


Added BugBuddy


Redo of album deletion


Changed default CDDB sites


Changed mapping for CDJ responses so that user maps get executed before subsequent CDJ activities.
Added edit button to maps options tab.
Remove DDE code causing CDJ to have interlock startup problems on close/reopen with SlinkeServ.
Some exit code fixes.
Fix bug which caused access violation when shuffle mode is selected with no library


Put safeties on docking window sizing to prevent crashes when CDJ restarts


CDP-CE505 recognition


Multiple Slink-e support in device edit window


BMP, GIF, JPEG,  PNG support in image window


Invalid date info now blank in views


Fixed bug which caused some device events to contain extra spaces, making them unrecognizable. This could account for some people's problems locating players.


Added automation interface for disc searches.


Drag and drop for MP3s in album and track views.
Fix problem with bad release date info in MP3 ID3 tags
Fixed problem remembering your selected font
Improved support for CD-Text. Still can't get the artist info...



Added ability to turn off app icon animation
Fix MP3 skipping
Fix storage of "Never Play" option


Fixed bug causing crash in text upload on 300-disc models


Fixed MP3 track deletion problem
Reduce COMCTL32 warning severity


Added more automation
Fixed playback bug which caused player to be stuck on pause if the next track to be played had the same track number on a different disc on the same player
Remove NT/98 dependencies which were causing problems in 95
Fixed some of the database conversion assistance code.


Improved defaults for first time users
Added new automation commands
Improved S-Link viewer window
Improved reliability of player identification


Added tip of the day.
Added tip of the day and help toolbar items.
Icon is now animated. I may use this to indicate some sort of status in the future.
Restored the playlist save function. Also added an automation command to save playlists to the default filename.
Added a playlist file browsing window.


Added new searchable fields. See the documentation for details.
Fixed bug in Release Date field editing
Fixed bug in same-disc fading


Fixed bug causing crash when using notify_playing_timecode[on] with MP3's
Added support for the CX300,CX333ES, and CX350  300-disc changers which use Control-A1 II
Small improvements to search for discs dialog
CDJ now supports x-10 via SlinkeServ (only)
CDJ now reports nomatch() events while in SlinkeServ mode


Added some more automation commands
Fixed bug in parsing of self titled albums from CDDB
Modified sleep and awaken states so that starting a playlist will automatically awaken CDJ.


Added option in random play tab to exclude tracks shorter than a specified time from shuffle plays. This is useful for keeping those annoying 1 second tracks out of your playlists which are often seen on goofy 99 track albums. This is easier than going through and checking the "never play" option for all of these tracks.
Added ping-pong response to CDJ automation to check if CDJ is running
Fixed "skim mode" disc search so that it doesn't make unnecessary multiple passes


Added new automation commands to sleep and wake CDJ, as well as query the playlist. Track information now includes the CDDB ID so that additional fields can be looked up easily in the Access database.
To transfer your library from the old format to the new one, go to the library / images tab and type in a valid library database filename with a .mdb extension and select the "Use database file" radio button. Back in the menu bar, select library | save all to write out the current library to the DB file.


The database components of CDJ have been compiled to use ADO 2.1 and the MS Jet 4.0 Database Engine. You must have these installed to use the DB features . There should be links on the site as to how to get these.
Audio files can put into an audio file album by drag-and-dropping them on the audio file album of your choice in the album library view.
You can also delete files from an album by highlighting them in the track view and hitting delete. I will eventually support drag-and-drop re-arrangement of the order.
Because library information changes every second now, you should enable the autosave every N minutes feature, otherwise you will experience large delays when writing out the library on exit and won't have up to date info for other program sharing the database. The autosave will probably become mandatory soon.
Once auto save is checked, the lib will also auto-save on exit.


A general note: Since the toolbars are customizable, there is a problem where as I added new buttons, you won't see them on your toolbar. Using the "Reset" button in the customize toolbars dialog quickly add these new buttons.
If consecutive tracks in a playlist are consecutive tracks on the same album, they will be played through without any stopping.  This also means that using the >>| CDJ player or  remote control button will allow you to advance to the next track without interruption
A warning is now issued if the search discovers two identical discs
CDJ now uses a real database!
CDJ allows you to use the old text type database or the new .mdb Access-compatible format.
CDJ has reload and save all library menu items to allow you to easily load a library of the old text format and save it out in the new database format.
CDJ will now prompt you before creating as new text or DB library file.
CDJ now tracks the time you added a disc, time you last played it, amount of time it was played, and the number of times it has been played. These fields are only saved in the DB version of the library file, not the text one.
MP3s and other audio music files are now stored in "albums". You can create these by using the new toolbar and menu items


Fixed recently introduced bug which caused a greater incidence of playing through to the next track
Added a View | Options toolbar button. You will need to add the button to your toolbar using the customize feature if you are already a CDJ user.
Changed player search yet again to improve speed / reliability


Fixed bug preventing slave upload on CX270 / CX90ES if the slave player did not support text
Changed CX270 / CX90ES upload so that extra tracks are not cleared on the current disc
Added explode and condense playlist options which allow the same item to remain playing. You will need to add the condense button to your toolbar using the customize feature if you are already a CDJ user.
Changed icons for explode and condense


Added new automation features for playlists
Added new search mode which checks for missing discs in locations the library thinks are occupied


Added *.bmp and *.jpg to image file selection dialog
Made fix to slink-e code to improve slink-e location with newer UARTs
Added library corruption and repair feature for libraries whose CDDB items are unsorted


Fixed (I hope!) the playlist skipping problem with CX270/90ES
Added extra serial port diagnostics to the device view


Fixed automation bug which caused cdjr commands to not work with maps when not using SlinkX
Fixed bug in disc search which caused hang when cancel was pressed
Added text uploading for the CX250
Fixed bug causing crashes in Disc Info window when a missing item was selected
Added monitor to keep players out of remote mode


Added group uploading to CX270/90ES
Improved player control release when CDJ is not playing from a playlist or "play now" selection
Upgraded Xaudio player to ver. 3.07
Added a new event-command mapping system. This supercedes the old events options dialog.


Added the beginnings of an automation interface
removed some old options from menus
forced full path on sample.lib
no group downloading by default


Added auto-save option for library
Switched field editing to double-click from single click
Improved speed / robustness of disc search when player doesn't report back properly
Fixed errors in column sizing persistence in list views
Fixed bug when hitting ESC in field edit
Double-clicking an album or track (in a non-editable area) causes CDJ to play it immediately
Double-clicking an item in the playlist causes it to begin playing if stopped
Double-clicking the playing item causes it to pause
Double-clicking an item in the playlist causes the pointer to move if playing or paused
Improved uploading for the CX270 and CX90ES players
Multiple selection in uploads now supported
Automatic support for text uploading of slave changer of CX270/90ES
Progress bars now have estimated time to completion
Fixed bug which caused misidentification of non-CD S-Link hardware at startup


Added support for text uploading to the CX270 and CX90ES players. Finally.


Added multiple docking / customizable toolbar support. You can set this up using View->Toolbar or by dragging tool buttons using the Alt key.
Added some basic persistence to the 4 docking windows. They will now remember if they were left open or closed and what size they are. THIS ONLY WORKS IF THEY ARE DOCKED TO THE SAME SIDES AS THEY ARE DOCKED TO BY DEFAULT.
Made the fonts for all of the list views customizable via the View->Options->Appearances tab. This will have more options (such as background) later.
Did some things to simplify generating libraries for 1st time users. No need to create a new library and restart - CDJ will automatically ditch sample.lib and make you a new library - user.lib - as soon as you try to do a disc search.


Fixed a bug which caused multiple players to not be recognized in terms of their disc capacity which in turn created a number of problems.


Added some extra fail safes to recover from a bug in the CX270 / CX90ES which causes them to occasionally play the first track of a disc instead of the requested track
Improved the speed and CPU load for locating players by not loading player devices for the player search, only after they have been located.
Added a potential fix to a problem which causes players not to be located at startup using SlinkX.
Fixed a bug causing playlist playback to occasionally get stalled with a player paused.


Fixed bug which caused an shift in the current playlist item when discs were exploded
Added playlist timer control features. I don't plan to make this to fancy - Advanced user will eventually be able to control CDJ via an automation interface.


Fixed a bug which caused multiple tracks on a disc to have the same playing time when reading the TOC data from the player. This had manifested itself into errors in the CDDB lookup. These discs should be deleted and re-identified using the disc search to correct the problem.
Fixed an error in the boolean search parser


Added printing for library, playlists and searches. Printing matches the list layout, so you can customize it by customizing the list columns and sorting.
Changed player search at startup - hopefully this will resolve some problems on slower computers.


Fixed bugs in editing of fields in all of the list views
Fixed bug causing sorted search view to transfer incorrect items to playlist
Fixed bug causing hang on invalid search query


A powerful search feature has been added. Look in the help to learn how to use it
Made changes to improve operation with SlinkX - particularly searching for players at startup.
Fixed bugs: Playlist Save menu item enabled, Lyrics View lookup button fixed


Many things have changed!

CDJ has a number of windows which utilize versatile and customizable list views, including:

The Album List
The Track List
The Player List
The Playlist

Each of the lists supports some or all of these features

Multiple selection using ctrl-click and shift-click
In place editing of text
Expansion of truncated fields when you hover over them with the mouse pointer (like a tool tip)
Sorting by column
A very flexible column management system which is stored each time you use CDJ, including
Drag and drop re-ordering of the columns
Add and remove columns using the column manager (access by right-clicking the column header)
Resizing columns

The library tree-view is now gone.

Coming soon: A boolean search view!


Started switching to a new docking view architecture - currently there is no persistence - the states of the docking views are not saved
Known bugs:
If a view item has the focus (blue) and is switched from docked to floating, the menus and toolbars become in accessible
Views sizing / docking not saved


Improved disc / track queries to compensate for flaky responses of CX270/90ES
Fixed bug causing library save prompt not to be shown on exit in some cases
Changed HTTP methods to avoid crashes in Windows 95


Added JPEG support in image window
Added an Add/Explode/Shuffle/Optimize item to the CD Library drop-down menu. This allows you to quickly add and shuffle new discs in the playlist.
Fixed bug in drag and drop of currently playing playlist items


Fixed a bug causing crashes during CDDB and lyrics lookups
Added a new, static playlist which allows much greater control over playback. To many changes to describe - try it!
Improved playback engine to prevent mis-queueing. Still due for a major overhaul...
Playlist selections now show up in music info window.
Added a CD Library popup menu - you can now play disc / tracks immediately instead of using a playlist.


Started to make changes to the UI - some windows are now docking, tabbed toolbars.
Improved lyric lookup hit rate by automatically stripping "the" from the artist name
Fixed player startup routines which were causing some players to be left in remote mode.


Repaired changes affecting CX90ES players
Fixed bug which was causing lost data when multiple S-Link busses are simultaneously active
Fixed bug causing "queue discs" option in the search dialog not to function
Added support for operation using the SlinkX ActiveX control! It seems to work fine with DCOM... You may experience too great a latency over the internet though.


List views (Playlist, Players) now support re-arrangeable columns. Eventually you will be able to save these.
Added recognition of CE515 5-disc player
Put in code to take players out of block mode at startup and also keep players on while CDJ is running
Fixed bugs in disc search routines


Lyrics server support added! You can look up lyrics for a track, disc or your whole library (you will get shut out of the lyrics server for 24 hours if you do too many requests) Beware that having lots of lyrics noticeably slows you library load time at startup in the current version.
MP3 support added! Drag and drop MPEG audio files into the CD library to add to your collection. The MP3 player is integrated in with your CD changers so you can make mixed playlists. You can also add MP3s by using the "MP3" button on the CD Library toolbar.
Changed Player view a little to make it more general
Improved S-Link communications so that CD changers do not drop data during intensive communications with CDJ (e.g. uploading text)


Added work-around for the 200 query (100 disc) lookup limit imposed by the CDDB servers. CDJ will now switch servers when the quota has been exceeded.


Changed cross-fading increments from 3 seconds to 1 second for finer control. Note that the smallest non-zero fade up or fade down rate is 3 seconds. This is a limitation of the Sony players.
Fixed problem which caused some players to be missed during the player search. Also cut approx 1 second off of the player search time.
Fixed date and added build numbers to the about box.


Fixed CD library and other views so that they can be opened or closed. CDJ requires that at least one view be open and will not allow you to close the last view.


Decreased message decoding granularity in core Slink-e routines. Messages are now decoded individually as soon as they come in.
Due to this, I changed the shape of the S-Link Viewer Form Dialog to have more lines since you only get one command per line now.
Added on/off option for periodic mode polling of players
Improved playback core - if the mode polling is in operation, playback is much more robust in preventing and detecting errors such as multiple players operating at once and players not playing.
Added player-level controls in the Player View. You need to highlight a particular player for these controls to work. Keep in mind that many action you do here can adversely affect playback of a playlist.
Added some new icons here and there.


Updated Slink-e classes to support new IRTXONLY device type
Improved about box with web and mail links and version based on exe date.
Removed unused options from Local Database property sheet.
Added support for HTTP proxy servers. This is COMPLETELY UNTESTED. Give it a try and let me know.
Fixed a bug which was causing multiple players to begin playing when restarting a stopped playlist.


Added periodic mode polling of players to insure CDJ stays synchronized with the player state.
Split Mute event into Mute On and Mute Off events for systems which distinguish the two (e.g. S-Link receivers).


Fixed bug which caused later commands on the same line to be ignored if an invalid device name is uses
in one of the earlier commands.


Worked around problem with CDDB lookups in Win95/98
Improved thread safety in CD Library
Fixed queued lookup such that. unknown discs do not halt lookups


Fixed small bugs in Options->Player Property Sheet
Playlist scrolls when performing drag-and-drop operations
Playlist window doesn't move to the beginning of the list after moving. deleting, etc. - it stays put.
Added command line feature to allow CDJ to start playing a playlist at startup. The format is:

cdj test.pla

where test.pla is your playlist. I don't plan to add a lot of features to the command line options as I intend to make CDJ controllable via the SlinkX ActiveX Control / Server which will be much more versatile. There will also be a command line method for sending messages to the server which will in turn allow you to command CDJ from the command line while it is running.
Upped CDDB connection timeout time from 100 to 300 seconds in case people have very slow connection or high startup latencies
Fixed bug which was preventing the CDJ from searching COM5-8 on startup
Fixed bug which caused multiple items to be deleted from the playlist when a user
deleted the current item and the next item was on the same player.


Added time seed to shuffle randomizer


Improved descriptions of CD player models in player view.
Fixed player startup ID routines to properly identify the player via it's text string even if it is off.


Fixed bug which caused many IR low level commands to also be interpreted as ir[] commands and cause garbage to be sent out the IR port. All is well now. This may have been the cause of much of the difficulty people were having in developing new device files. This bug affected the transmission of data only, not the reception.


Fixed bug which caused discs previously occupying the location of a new disc to not be marked as missing.
Disc search now has just a single toolbar button which leads to a dialog with more advanced search control
Made CDDB Lookups "friendly" with a interactive server progress / cancel window. CDJ is set to timeout after waiting for the server for 30 seconds.
Library now loads on a separate thread, decreasing CDJ's startup time.
For every disc that gets played (whether under playlist control or "free-running" while CDJ is on), CDJ now verifies its track time against the CD library. If things don't match up, the following happens:
The disc thought to be in this location is marked as missing in both the CD Library (and the Playlist, if it's there). Since it will be "missing" in the playlist, it won't be played
The disc that IS in this location is looked up, either causing a disc already in your library to be moved, or adding to the library. The playlist is also updated. If you don't have a full-time connection to the internet, you should leave the "use internet" CDDB option unchecked during normal day-to-day playback. This will cause any new discs that are found to be marked as queued instead of trying to contact a CDDB server immediately.
Added some thread safety to the playlist. Still not bombproof...


CDJ now updates the library when it finds discs which are missing. The missing discs are grayed out. Missing discs are defined as those which give the no_disc[] S-Link response. Missing discs are also updated in the playlist.


Modified cross-fade control to be more flexible.
Added low-level slink-e control support through lowlevel.cde. Read the comments in this file for documentation.


Changed Playlist toolbar save button to "Save As" instead of "Save"


All Slink-es connected to CDJ are now pinged every second to insure that the are still alive and well.
If CDJ looses a connection if will give you a system message and ask you to retry. If you do, the following
will happen:
CDJ will ping the Slink-e some more, if it gets no response then it goes to step (2)
CDJ attempts to re-locate the Slink-es and players
Added support for 8 COM ports. Don't have a good way to test it though...