Cool Play

Cool Play is a very basic Audio Playlist application written expecially for BBC News users. Here you can download the current stable version and review the change log for updates. For more information about the application, please download the latest version and read the help file.

Just before the UK elections in 2001, I was asked if I could write a very simple windows based playout system - nothing fancy, no automation etc, something suitable for a fast changing news programme. There was an urgency to the request. To be honest, this was my first real attempt at user interface design - most of my applications did stuff behind the scenes and so there was no GUI. The application became known as CoolPlay - bit tacky I know but the idea was that it would be a companion to Cool Edit PRO which is used by many journalists to mix and edit WAV files in News.

The application has been used by various departments and many seem to like it - it is still under development. I've just had the application accepted into the BBC desktop which is a first for me so I'm more than a little chuffed! More importantly, it helped Radio 1 Newsbeat during the elections and that was what it was designed to do. I went to watch it in use once and couldn't believe how fast the engineers were at using it. There was me - the programmer - still a bit clumsy at operating it but the engineers were whizzy!!!

As I say, the reward is to know it helped Newsbeat, and it has also being adopted by another department as part of their backup system and evacuation system. What really impressed me was how helpful all the users were with suggestions - nothing outlandish - all very sensible things which didn't occur to me - so, in the case of CoolPlay, it was a case of many people actually created it. It is still being actively developed.


Download by clicking here

Change Log: - insert track dialog now accepts multi select
             disabled check file stamp on play command option added - added detection of low resolution monitors and bodges
             the display to fit - problem still with "Remote" panel - fixed access violation at startup if file supplied as command line..
               caused by call to caching thread before it had been created
             started work on alternative shortcut keys for laptops - space causing problems
               work to be done still
               need to filter CTRL + ALT + SHIFT - done
             trying to get to the bottom of the unresponsive bug... cuased by loop -
               remmed out "tform1.ListViewPlaylistSelectItem" to see if that cures it
               will wait to see what problems that causes.
               added left cursor  then left cursot to end of
                 tform1.deletetrack to counter effect of above
               problem with ALT+click playlist a work around done but not nice - bug fixed in laptop keyboard mode where CTRL+S would stop track - removed behaviour that skipped down the list on invalid file (sound card issues)
             bug that mean that directory picker wouldn't display in setup fixed
             joystick remote removed
             serial remote added
             config now single tabbed dialog
             refresh now keeps BWF title info
             outtime now shown (based on local clock) if enabled and width > 800 pix
             DCART load to play implemented - needs testing
             clear cache now allows 3 options - yes, no, yes over 24 hours old - remaining and outtime fonts increased in size
             screen sizing problems on Large Font mode fixed - form.scaled := false;
             ability to hide the MS in time displays added
             default playlist path now configurable
             open playlist now recues to top of list
             load to play now filters "" strings
             hour glass cursor added and application.processmessages to make more "responsive"
             browse DCART started to be added
             Play button indicates play state  - a bit ugly - need user thoughts
             started to add played indication
             load to play now allows selecting of system
             more error handling in the assocaite routine to protect against locked LOCAL MACHINE hives
             file open initial dirs now remember the last used folder whilst app is running
             close procedures added more error handling to make sure it closes
             splash screen code changed as it was sloppy....
             minimum main form size now 630 * 500
             user default audio and playlist dirs stored in user registry NEVER RELEASED - find files added
             directory picker changed to windows 2000 version (SHBrowsetofolder)
             dcart load to play changed to thread version and multi system
             dcart browser uses threaded objects to work - Find Animations loaded as a resource in the application to prevent small size amination on W2K
             "Preloaded" changed to "buffered"
             bug in load playlist fixed which would not recognise no existant playlists properly
             easter egg added
             next indication added - NEVER RELEASED
        - case sensitive find files search fixed
             added to windows recent documents for playlist open
             move item using CTRL + up / down
             duration added to find files form
             track details now cleared until playing
        - Empty playlist indications now follow MS display setting
             Insert playlist now cues to top item
             MSDOS names expanded to full name
             Sort directions on dcart browser to make first click more useful
             Load to play cue / build playlist option refined and relabelled
             Save playlist as... suggested name reset to playlist name
             A new text loggin system implemented - triggered by a file being found in the cache dir called "debuglog.dat" - more debugging info saved to log file - trying to catch F9 problem
             trying to user w2k user association for files - rewrite of core serial controls - access violation on clean registry fixed
             cfg option to clear played indications on "HOME" key use - trying to get the end preview to slip backward on several presses - think this is now working
             F10 added to build playlist
             F9 to Load to play
             "build playlist" no longer stored in regsitry
             added an "auto" edge in and out... only available by setting "Do Trim=1" in the "[audio]" section of the ini file - DEVELOPMENTAL JUMP
             * making data part of a data object rather than substrings
             * caching system update filename mechanism changed
             * added grouping and reload to config but not implemented yet -* FIX TO AUDIO CARD
             * removed "pause(false)" from procedure tform1.playtrack;
             * added the backend to seque / grouping -* Adding the file browser
             * fixed a display issue with BWF audio that is not the DCART original - TVC act
             * added close query.
             * bug fixed on open playlist if user has file extension hidden - MULTI LANGUAGE DIALOG SUPPORT STARTED TO BE ADDED but awaiting Delphi 7 for proper support (currently Delphi 5)
             * now reads dialog / form labels from file translation.xml in app dir - if not found then uses English
             * fixed bug which meant dropped playlists lost grouping
             * reload playlist implemented - reload playlist refined
            * mutex used to inform user that a previous version is running
            * added total duration
            * added three more user settings which override system ones (file browse / fiile find / disable DCART) - new internal status variable added form1.iPlayerState
            * pause on preload and mmslider on preload ignored
            * some tweaking to the browser interface - updated splasher
            * find files dialog now allows browse to search root folder
            * added ability to turn off the display of BWF title info through config - 22.05.2003
            * changed default button on close query with no playlist save required to mbno
            * fixed load to play which would recurse all folders - only should recurse first level
            * added open playlist / insert playlist using load to play interface and thread. - 24.05.2003
            * new playlist load to play functionality refined... playlists with a name > 5 chars rejected
            * fixed a "cannot focus on an invisible control" bug in the options (cache tab wasn't visible at the time)
            * application now starts maximised by default (can be controlled in ini file [System] Start Maximized=1 )
            * load to play playlist refined to add the "windows browser" button functionality - 30.05.2003
            * fixed spelling mistake (segue)
            * agreed dcart load to play playlists new form
            * splash screen change from stretch true to stretch false - 27.06.2003
            * fixed splash screen missing right hand border
            * added the ability to choose the output device
            * added the emergency server path substitution (up to 10 strings) - 19.07.2003   //change of versioning schema to the correct schema
            * browser window if selected folder is deleted will warn user
            * added f5 action on browser dialog - refreshfolderlist
            * added button to disconnect auto reload of upadted playlist  (short key = CTRL+L)
            * version info now dynamically shown - 02.09.2003
            * fixed bug whereby pause would reset "linked" button - dupliate groupindex property on tspeedbutton
            * if a playlist is loaded using F7 to an empty playlist, then the logic is as "open" rather than "insert" playlist
            * BROWSER SCREEN - F5 = repopulate files, SHIFT + F5 = refresh folder list as well
            * Web update added  (HELP | CHECK FOR UPDATE!) has to be enable through coolplay.ini file
            * adding quick record functionality
                * cfg done
                * remote added
                * quick record editor parameter added CTRL+ALT+Q
                * purge on exit (7 day move to recycle bin logic *.wav, *.pk)
                * max recording time - 04.09.2003
            * quick rec auto stop worked on
            * CTRL + ALT + Q now works when not recording
            * quick rec purge now set to 2 days
            * Segue can be assigned to SHIFT + F4 in cfg - 05.09.2003
            * quick rec stop and edit button (razor icon) added - 09.09.2003
            * can configure quick record editor to be read from registry for cep1, cep2
            * quick record purge can now be configured to be delete rather than recycle
            * quick record will force the reocrd directory
            * fixed a "cannot focus on an invisible control" bug in the options AGAIN (tabsheet index was changed by general 2) - 19.09.2003 - changes to incorporate World Service's requirements for Quick Record
            * quick rec stop and edit button (razor icon) changed to JtArrowButton
            * Stop recording and insert into playlist added
            * early stages of quick rec simplex card
            * remaining record time added
            * very rudimentary vu meter added
            * default settings now 48K stereo
            * now moved writing of data to my own on buffer event to enable bext chunk writing
            * quick rec simplex mode added
            * TODO sort out the BWF timeref hi and lo *****TODO****** - 19.09.2003
            * get file details now invalidates PCM files where the bit resolution is not 8 or 16 bits
            * quick rec file template - can now configure format of the %t and %d patrameters using the inifile settings
                [Quick Record]
                Filename Template=QuickRec_%d_%t
                Date Template=yyyy-mm-dd
                Time Template=hh-nn-ss

                [note uses borland datetimeformat strings - cannot contain invalid filename charatcers
                like \ : and up to configuration user to get that one right - app does not filter]
            * quick rec copy to server now implement in seperate thread
            * sorted the bwf time ref issue
            * reasonably certaing I've knocked the invalid floating point operation in vu meters... (trunc((log10(iMax1 / 3277)) * 100) was 3276 - 22.09.2003
            * fixed bug in function tform1.getfiledetailsFORbackgroundplaylist (sFilename : string) : tAudioDetails;
            * configurable quick rec folder purge days
            * ability to disable do it button via cfg - 29.09.2003
            * load to play track functionality changed so that if a match is found, it will continue
              looking in the current folder until all files are scanned - if another match is found,
              if it is newer it will be used instead - this is to fix the repliweb multiple files as
              old files are locked...hmmmmm            
            * added Adobe Audition 1.0 to editor list for Quick Rec
                 HKEY_CURRENT_USER\Software\Adobe\Audition\1.0\State\Location - 15.10.2003
            * more debugging code added to file details / cache for biglog.general log
            * not found now displayed in playlist
            * modified now disables the link button and changes the glyph
            * increased size of "recorded duration" font
            * Short keys altered for quick rec do it button
                CTRL+ALT+E = edit
                CTRL+ALT+I = insert
                CTRL+ALT+C = copy to audio server
            * quick rec pause added:
                recorded count now held in quickrec.cDataWritten
                resizing / logic of display quick rec buttons now in TForm1.ResizeQuickRec;
                pause short cut key - CTRL+ALT+P
            * webupdate checker moved to about screen  - 16.10.2003
            * more debugging code added to reading user hives
            * more combo.index error catching written in
            * contensious one this - quick rec  pause turns vu blue to warn users   - 10.11.2003
            * vu meter peak find rewritten for protection (from big rot code)
            * width of Quick Rec "Do It" button arrow drop down increased - Julie
            * HMTL status file first stage added
            * procedure tform1.onstop; now test for lLastPlayedItm=nil
            * tform1.clearplaylist sets lLastPlayedItm=nil   - 16.12.2003
            * loads more exception handling added and some tidying up
            * can now disable the creation of each form via the ini file - for debug only!!!
            * new config value [DCART] Max playlist filename length=5 (default = 5)
                Enables longer length playlist names, same logic applies of only exact matches returned 
            * auto play mode added - this will play the entire contents automatically (no grouping...
                needed), additionally it will segue from the last item to the first. Updating will
                be performed if enabled
            * fixed repeat of last sound card in config (zero based array)   
-   - 28.04.2004
            * added real time display for Zagreb
            * adjusted form8 layout to make it render better under XP themes
-   - 30.04.2004
            * removed "minimise" on form 2 / form 8
            * added an option to attempt to keep focus - very confusing but might be useful!
-   - 31.04.2004
            * quick record stop and edit will minimise if stay on top enabled
            * slightly moved controls on form1 to make layout more pleasing
-   - 20.07.2004
            * bug in dcart browser duration (when not full header read) [was * 2 correct value] - fixed
            * each "DCART" system may now be declared a VCS export (via cfg dialog) - this chnages the formatting rules
            * you now can define the "Default" audio format for each "VCS / DCART" systems via the cfg dialog
            * have rewritten the BWF header readign module to cope better with no BWF chunk
-  - 22.07.2004
            * more issues with VCS raised - it does not reliably update BWF headers..
            * config changed for DCART sys so that read BWF is now specific to system rather than global
            * some changes to the BWF reading function made again to accomodate the VCS export material
-  - 15.04.2006
            * adding .s48 support
            * added rm / mpeg to file browse (no durations added)
            * added fix for splats at top I hope

                RadioMan Fix=1 
-  - 15.04.2006
            * added mp2, mp3, .s48 support to find form
            * changed duration from '?' to '-'
-  - 25.05.2006
* added ext m3u format support with titles - - 28.03.2007 * adding Digigram Vx222v2 remote via GPIO * adding support for WM remote control [ WM_COOLPLAY_REMOTE_MESSAGE := RegisterWindowMessage('bbc cool play remote interface message'); ] wParam = command (longworD 0-11), lParam = coolplay instace (longword to allow more than one instance control, default = 1) - - 02.10.2007 * adding support for PSIO radioman digital input cards * stopped close query on session end and playlist not changed - - 09.12.2007 * added support for Belkin USB number keypad - - 26.02.2008 * msi release build - - 03.03.2008 * changed default position for splash and form 1 from desktop to screen centre - - 21.09.2010 * added velleman P8055 USB interface remote control - - 25.05.2013 * added ability to edit title bar name to allow identificaiton of different instances (BBC WS)


Borland Delphi - an excellent programming language | MySQL - forget MS and their bloated databases - go Free!