OAS Playout Development - archive
For latest Updates/News click here.
Playout Development Archive
How the product evolved.....(2008-2012)
10/02/13: I'm now underway on v3.6 of Playout, the first major baseline update in a few years. Mostly this release is focusing on some feature requests from customers, the major one being providing some form of user prompting and possibly enforcin of ad breaks. In these austerity times, a chief concern of community stations is that their volunteers forget to play the adverts which can cause loss of valuable revenue. I'm also looking at adding some new features to the application, principally for the more "skilled" presenters of looping tracks or repeating tracks indefinately for music beds.
28/12/12: Playout v3.56 released a couple of weeks ago almost certainly marks the end of development for 2012 - so Happy New Year to you all. Mostly this is more bug fixes and minor tweaks - in line with my comments last time I've had the opportunity to throw a lot more music at the system in one hit and this has highlighted a few minor issues which have been ironed out. In tandem with this release, I have also made available (to those that are interested) the first Unicode enabled Beta release of v3.56. This enables support for Unicode filenames across the Playout system.
21/09/12: I have just released Playout v3.55 - it's mostly bug fixes in this release so no obvious new features. I had some audio which failed to import thrown at me by a friend from work which opened up a bit of an explore into exactly what "mp3" actually is. For most of us, it's effectively "MPEG-1, Layer 3" audio but at the sample rate dictates this and at say 22khz it's "MPEG-2, Layer 3". Whilst I thought I handled this, the information I had at the time (back in the early '00s) wasn't totally complete and it transpired I wasn't calculating the frame size correctly for this format. The codec I use can also handle "Layer 2" audio (.mp2) but I also had a brief forage into the practically unheard of MP1 format. Whilst I did recognize this, sadly the codec made it sound like a chipmonk going through a blender so all you mp1 fans will have to wait on this one...
Other thing this activity through out is handling of filenames with non US/English characters. Currently, Playout doesn't but I've undertaken a bit of a (long term) activity to look into adding support for this - more info on the page.
05/06/12: A good Hastings Rock broadcast all round this time, not least on the technical front. The last few years seem to have been plagued with little annoyances but this year the new server performed flawlessly and even though the first week was hampered by one of the sound channels locking up at random intervals, at least we managed to determine what the fault actually was and then fix it (namely by connecting up an external USB sound card). The problem seemed to be the on board sound card we've been using - for whatever reason it's started playing up. Still, it is a fairly standard AC97 chip and hardly the highest quality soundcard there is and hopefully next year we will get hold of some "professional" M-Audio delta cards - probably well overdue. On the Playout front, the advert scheduler worked well as did the playlist generator itself - see last article for more details on that.
One final note, for those technically minded. My Raspberry Pi turned up last week and is now being used to host the website for Playout downloads. I may find a more constructive use for it over time but for now it saves needing to have a power hungry PC on 24/7.
27/04/12: This year signifies another 10th anniversary - this time of Playout first outing on a "proper" radio station, Hastings Rock. More on Playout's history with the station can be found here along with original trial log from 2002. Back this year for another RSL, we are a mere week away from the broadcast start date of May 5th. Of most significance is that for the first time since the original 2002 deployment is I have rebuilt the Linux server using Ubuntu Server. It's really been long overdue and I hope I've remembered everything that needs to go on it since the original one kind of "evolved" over that 10 year period.
On the Playout front, this year the Dynamic Playlist functionality is really coming into it's own for the broadcast. As mentioned previously, I aim to try out a basic advert scheduler which reads the next ad break (from an Excel spreadsheet) and then auto selects the ads into Playout's jingle selector. It make use of .NET interfacing with COM objects so plenty of opportunity to go wrong! The Dynamic Playlist feature is also being used to control their main playlist. During the day (6am-6pm), a single (database sourced) playlist is used with music categorised as Light, Medium or Heavy. However during the evening, the list continues to be used except that Light tracks are to be replaced with so called "X" tracks (EXtra Heavy). As such the Dynamic Playlist component is responsible for performing this switchover and ensuring the track replacement occurs. I attempted this in previous years but it proved to be a bit of a hack and wasn't very satisfactory - now the system has a fully fledged Dynamic Playlist interface I hope it will perform a lot better this year.
02/01/12: The Christmas break has traditionally been a period where I try and put in some quality Playout development time however the last few months have really been a bit frantic and as those of you that follow me on Twitter will know, we also lost another of our cats in November. Lost being totally appropriate in this case as he did just disappear one evening never to come back. We think he was run over near a local school but we will never know for sure. All in all a bitter end to 2011. So I've not really been in the best frame of mind for all things Playout related.
That said, I have slowly been doing some fairly minor updates to a new (v3.53) version which I hope to release in the near future. My collation of outstanding tasks & bugs onto the Trac server I mentioned last time is now complete and I intend to focus on clearing some of those down in the near future. I've also started rebuilding a new Hastings Rock server as last year's broadcast seemed to indicate things were not at all well with the aged one we've had since 2003. As always then, Happy New Year to all.
08/11/11: In between writing my last update and this, we've moved house so most of my spare time has been (and will probably continue to be) taken up with sorting out that. There have been a couple of minor Playout updates in the meantime, mostly to support the Dynamic Playlists we're trialing at Unity, see the update below for more on that. However I've also been trying to pull all the bits and pieces which make up Playout together in one places - such as buglists, ideas, comments, notes on the architecture (ie. how it works!) and even some of the software itself which is scattered across several directories. To that end I've built a Trac server and am busy throwing stuff into that. One of the immediate effects of this will be that the Release/Bug lists page will be overhauled in the near future to represent a snapshot of the tickets I'll be now maintaining in Trac. Quite how much other information I'll be making public remains to be seen...
17/07/11: Something which has been on the cards for a good while now for Playout has been the ability for some sort of automated Advert Scheduling. Well, we're still not quite there yet but as a precursor to this, the v3.5 release included support for something I call Dynamic Playlists. These are custom plug-ins to the main application which allow content from say a Playlist or Category which would normally be fixed (ie. from the database) to be dynamically generated on the fly based on customisable criteria. My aim was to try out a fairly simple plugin during this year's Hastings Rock broadcast which would generate the next ad break sequence for the presenter, based on an Excel spreadsheet but time didn't quite permit it's deployment. However I've also been recently working on another plugin for the folks at Unity101 to allow them to create quite complex sequences of audio which go out during automation (rather than the broader "jingle" or "advert" categorisation). In time, this may become a more generic plugin which may find use on other stations.
10/06/11: It's been a long time coming but a new release of Playout (3.5) is finally out today. Mostly this has been due to other commitments keeping me busy but I wanted to give it a good shakedown on this year's Hastings Rock - which enabled me to fix a couple of minor bugs before releasing it. As I mentioned before, this is a special 10 year anniversary edition so I wanted it to be the best yet.
This year's Hastings Rock proved to be another frustrating one on the technical front. The problems we incurred last year re-appeared, putting paid to my theory that it was the disks causing the issues since we have replaced them. Now it looks very likely to be network related, possibly induced by the electrics in the pub where the studio is based. I have since run the kit here for a week without any issues arising. Next year I intend to retire the aging Linux server (which also suffered a fried network card) and replace it with something a bit newer so hopefully that may improve things.
27/03:11: This year is our 10th anniversary since OAS Playout came into being - in fact it was this month that I put together my initial concept for Playout. You can read that, see some of the early development versions and also my inspiration for attempting it in the first place here. Quite a few stations and individuals have used and more importantly given us useful feedback and thoughts on how to improve the software but I'd especially like to single out Hastings Rock (back on air again this May) who were the first station to use it for their RSLs and Unity101, a community station who use it 24/7.
12/02/11: We are in what is probably a brief lull on the whole house moving front so I have been able to devote a little time on Playout. Mostly this is to include a couple of feature enhancement requests from customers and fix a few minor bugs. I really need to spend more time testing the current build before going for a release but with a bit of luck the long overdue v3.5 release may not be far off.
30/12/10: As expected, very little has been happening on the Playout front this year although I did use the current "beta" on automation to provide the music at my wedding in August this year. Next year is our 10th (Playout) anniversary although bearing in mind that the other significant event which didn't happen this year was moving house, so if that does finally happen then next year may also be severely limited on the development front.
I've just finished reading "Sounds of Your life - the History of Independent Radio in the UK", prompted by this Radio Academy podcast I heard earlier in the year. As I've mentioned at odd intervals on here (most recently on the "morphing" of practically every local station into Heart), my interest in radio (and hence the development of Playout) stems from growing up listening to independent radio in the UK. This book does what it says - charts the history from the early days of ILR into the commercially driven mess we're in now. The link above does a much better review than I could do but if you share my passion then this is well worth a read. In a nutshell, the radio companies got what they wanted - freedom to do whatever they wished in the open market yet when the market failed and the BBC re-invented itself, their solution has been to slash costs, network and produce as bland, cheap output as is possible. There is no end in sight and they got what they deserved - tragic in a way.
29/05/10: End of another Hastings Rock broadcast and from a technical perspective has probably been the most troublesome since the very first year (back in 2002). Pretty much from the word go, the helpful smartmontools which I'd installed this year onto the Linux server was flagging up a potential disk issue and I'd like to think this is the root cause of the audio hiccups, stops and Playout dropping into it's reversionary backup mode (which has also highlighted the need for a bit more work). Frustratingly though, aside from the disk self tests failing there was nothing at all in the system logs indicating a disk issue when these problems occurred. There were a few other crashes and oddities which also cropped up on the Playout front which warrant further investigation. I suspect they are linked to the new Twitter modules in some way since this is a new (and experimental) package which still needs a little further work to make more robust.
03/05/10: Well the Hastings Rocker's are back on the air again and everything seems to be working thus far albeit after a shaky start where the internet connection disappeared for half an hour. It's back now but based on the random dropouts over the last few days, could prove to be the weakest link in the whole chain. We shall see... but if it continues to misbehave, O2 broadband won't be getting any recommendations from me. The Twitter feeds are also working but I think I need to use a different separator between title and artist instead of a semi-colon as it's a bit hard to read. The mod is simple, getting it into a live system will be a bit harder as I'd need to stop Playout (briefly). The other thing of note for this broadcast is that they don't have access to a phone line so we've had to opt for the VOIP option. Skype proved a non-starter as they don't have Hastings local rate numbers to offer us but we got a very reasonable rate of #3 a month using Voiptalk with the added bonus of being able to nab a real hardphone from work. Together with a softphone running on the email machine (which can be used to route phone calls into the desk) it's *nearly* as good as the real thing.
01/04/10: are back on air this year after a 1 year absence. I hope to have the new version of Playout rolled out for them (start of May), failing that a beta version will be in the studio. New for this year, we'll be trying out overnight requests via text through Request Manager - something that the folks at Unity have had great success with this past year plus the new Twitter track updates. Quite possibly the biggest challenge for me though will be remembering how to set everything up - it has been 2 years after all.
I managed to get Twitter's OAuth (secure) interface working nicely thanks to a rather nice C implementation () - Note to the people at why don't you give a link to this, we're not all .NET users. It's now integrated into my new Twitter feed pack which you can download for all recent versions of Playout.
03/03/10: In a few spare hours at the weekend, I had a fiddle with integrating Twitter into Playout - in part because I doubt any other playout system can and I like to achieve a "first" now and then. There were two aspects I looked at - the first being to take the station's feed and have it including in the scrolling message bar at the top of the display, you can see an example of this here. The second aspect was to combine it with the track lister capability and allow a short summary of "tracks you just missed..." to be posted at odd intervals - not too often mind because that would become mighty annoying to your followers but every hour or two could be quite a nice touch. Both of these features are now in my development version and seem to work quite well but for how long remains to be seen.... As it stands they use Twitter's "basic" API to authenticate users which is not only insecure (as usernames & passwords are sent in unencrypted) but is set to be depreciated in June of this year. Quite what that means in reality isn't clear to me but the alternative is their new OAuth API however it's going to take me a bit longer to get my head around this, not least because most of the examples are geared up for web server scripting whereas I need it to be able to integrate (at least partly) into an application. So it could prove to be quite a short lived feature!
09/01/10: Whilst the country collapses under the weight of the snow, I've spent a little more time on Playout. Principally heading towards a v3.5 release which will have re-styled icons on the main players and support the automation on both players. In parallel with that, also been attempting to track down a random bug which sporadically causes a track to start prematurely. It happens very very occassionaly hence why it's proving very painful to replicate - this despite it cropping up twice on new year's eve! Trouble is, I didn't have the extra debug in it then to help track it down.
23/10/09: Post the release of Playout v3.42 (which is mostly a minor bug fix release), I've been slowing making the internal changes necessary to support full automation on player 2. As of last weekend, the basic capability is now in and working however the most complex change has yet to happen - the monitoring for failure conditions and handling them accordingly.
14/09/09: I introduced a minor change to seeking within MP3 files which have Xing VBR headers to improve their accuracy - in essence the 'cue start' position automatically calculated by Playout often proves to be slightly off with these files. In my googling for information, came across this page which mentions the header and the additional Lame header. What piqued my interest in there was the fields supporting something called - which as the link suggests is a proposed standard to try and give a common output level. Playout has supported the ability to perform peak level normalisation since day 1 but this is something a bit more advanced and may well be useful feature to have. A fair number of software players appear to support it however how widespread the actual tags are is debatable. For most radio stations which feed the final output to a hardware compressor it may not be much use but for a cheaper alternative - or for the Lite version which is designed for mobile discos etc. it could be a worthwhile addition. Further research will follow....
08/09/09: Due to other committments, I'm not going to be enhancing Playout much further for probably about the next year although no doubt I will be flowing in bug fixes and minor changes throughout that period - by which time we'll have just about reached a historic 10 year anniversary! In the meantime though I have been spending a little time including - what is to be fair a bit of a gimick, into the software. Namely enabling the display of any cover art (pictures) embedded in the audio files currently being played to replace the station logo bitmap for the life of said track. As I said, a gimick but it does look nice.
19/07/09: It looks like the runtime library fix I mentioned last time has fixed the ASIO driver crash which is good news however as a result I've needed to rebuild every executable & library used within Playout to ensure the new library is linked in. Whilst the probability of the problem occurring elsewhere does seem to be low, it seems prudent to rebuild everything just to be on the safe side. As a result, Playout v3.41 is released today which includes this fix. I've also finished my overhaul of the website, which amongst other things includes a rather dodgy video on the front page...
12/07/09: I've been looking at two things this weekend. Firstly, what I need to do to allow automation on the 2nd channel of Playout. I think after due consideration and the number of problems it could raise this will be of reduced capability than that offerred by Player 1 - ie. no voicetracking, scheduled playlists etc. just the basics of start then go. Even so I'm treading carefully because the logic surrounding this is quite complex.
Secondly I've been banging my head against a wall for a while trying to find the cause of a sporadic program crash (on exit fortunatly) when using the ASIO driver layer. Despite repeatedly trawling the code & debugging it I can't see anything obviously wrong so I was beginning to wonder if it was an issue with the compiler's heap and a quick Google came up with this page on a problem with the . I'm not yet 100% convinced this is the problem because we're not doing excessively large memory allocations in the driver although it does look like the problem I saw earlier this year in Playout Manager where I applied my own fix. Either way the instructions there are pretty much complete and thus far I've not seen a repeat of the crash although it is sporadic so further testing is necessary. One point of note I did encounter building the library from my CD is the linker complains about 16 bit segments in 'fdiv32.asm'. I have no idea why, the offending file builds okay so in the end I stripped the $(AUXOBJS) section out of the makefile in math\common32. It seems to be related to the old Pentium FDIV bug so I think we can safely dispense with it now.
28/06/09: It does seem to be that I will be perpetually fated on releasing a new major version of Playout, that no matter how much testing I do before hand, within days of the release I find something nasty with it. The release of v3.4 continues this trend nicely with the wrong default database template in the installer and something nasty in Playout Manager which affects multi-core processors. Fortunatly both can be addressed with an add on patch but it is annoying. Unfortunatly as software becomes more complex, the likelihood of this sort of thing increases.
18/06/09: The reason I started work on Playout back in 2001 was because of my interest and enjoyment of radio and a good part of that being local commercial radio. Therefore I would be remiss if I didn't mention that the final part of Global Radio's transformation of most of it's local radio into Heart FM completes this weekend with the demise of two of the local stations which formed much of my early listening experiences - Southern FM (nee Southern Sound) and Invicta FM. After this Sunday, those station names will be consigned to history as they become Heart Sussex and Heart Kent. Which is quite frankly a real tragedy although, it is to be honest really another nail in the coffin for these stations since most of the "heart" of them had already been ripped out post the GWR/Capital merger took away much of the local programming. They are now part of a set of bland, carbon copies of many stations across England. I hope it all goes horribly wrong for them. Hopefully those (few) remaining independents will really gain from this, the ubiquitous Jack FM in Oxford has made the headlines several times putting the boot in and Juice Brighton who I frequently listen to these days on the Sussex DAB mux have stepped up a notch promoting their "made in Brighton" slogan.... Some of my memorable bits from commercial radio are still on my old website - here.
10/06/09: Oddly enough, stuff *has* been happening with a view to putting out a new release - I also plan to do a bit of a site overhaul shortly after, it's just fitting the time in. I did a weekend streaming audio for the Hastings Rock people towards the back end of May using my latest build which highlighted a few minor issues plus I had some good ideas on enhancements which I thought worth rolling in before the new release. Since I'm also trying to put out the first release of "Playout Lite" as well (more exact details soon!), I've been working on all the help & documentation updates to support that as well. So it's happening, just slower than I'd like.....
29/05/09: Off topic: The anti-freeze petition has been responded to by our government, who have aptly demonstrated a profound ability to COMPLETLY MISS THE POINT. Their decision to take no action whatsover is based on the premise that antifreeze is clearly labelled where in reality the petition's aims were to address those life forms that CAN'T READ LABELS ie. animals and small children. Regardless of how careful anyone is, accidents can and will happen eg. leaking radiators on cars so the aim was to make this lethal stuff unpaletable. However thanks to everyone who posted on this via this site, futile though it turned out to be.
30/04/09: Normally at this time I'd be running around putting the final touch to this year's Hastings Rock RSL however with the current financial woes, the committee decided back in February that it was all just a bit too risky to attempt to put on one this year. A side effect of that is that I've not been pulling out the stops to get a new "major" release out in time for the broadcast - something I normally try and do so it can be given a good shakedown before being made available to the world at large. The bonus is of course without being involved in the broadcast, I can devote more time to purely Playout related matters.
At the moment, I'm planning on putting in a couple more minor changes and aim to have a new version out, hopefully by the end of May. The trials of Request Manager have been going well at Unity 101 (it would've been good to try that out on Hastings Rock this year but wasn't to be) and they aim to start using it full time with their listeners in the next few weeks, all being well that too will be available with the new release. In parallel with all that I'm working on a new variant of cut down variant of Playout. The aim is to be similar to the freeware version (ie. no database meaning no Playout Manager) but with a little more intelligence built in - ie. supporting tagging, cue points and rudimentary playlists. This variant would be more targetted towards mobile discos/djs and possible retail establishements - shops etc. The idea being a lot more simpler to use and manage and be more suited to those kind of environments.
10/03/09: We've just started trialing the first Beta releases of "OAS Request Manager" which will (hopefully) become a new add on to Playout forming the premise of Automated Listener Requests. As I briefly outlined in November this is a concept designed to combine the idea of during periods of automation (ie. unattended operation), listeners can send in requests which are then automatically included for playback by the main Playout application. This isn't a new concept - we've been doing it for a while on Hastings Rock and I have a write up on it along with some sample server side scripts here. The key drawback with this though is the technical know how required to set up a web based database engine not to mention the security implications. Request Manager works slightly differently, instead the user sends in their request and the software attempts to find the closest match in the database, taking into account spelling and variations in the track title etc. Originally I intended this to compliment the original web based search engine since it would allow requests to be sent in via SMS texts - over the mobile phone network however this could also equally handle requests sent in via email or via a simple web based form. Obviously this approach is a bit more hit and miss than a direct search mechanism but it could provide a much simpler approach to this concept.
22/02/09: There has been a smattering of updates across this site over the past few days, notably to add a 'Latest News' section to the front page, update the freeware release to the latest version and update the Future Playout page... The latter of which contains a fair hint on the current work I've been doing (now the kitchen building is finally finished!). Actually it's really wrapping up the whole text based request system which I started work on back in November, which was rudely interruped by my migration to Window Vista and the restyling of Playout (which also gets a mention on the Future Playout pages...). Thus I've been putting the help together and generally packaging it up ready for some proper trials.
30/01/09: Got a bit carried away with some of the interesting stuff you can do with the new look Vista controls to the point of... well click here for a sneak preview of what the next release of Playout will look like. And for those traditionalists, it'll stick look the same as ever if you opt for 'Windows Classic' display settings.
04/01/09: First up, happy new year everyone. I was on FTL over new year (as was Jim & co), which proved a good opportunity to see how Playout behaves under Windows Vista. Overall everything works as well as it did under Win2k (my old OS 'of choice') however it did have an annoying habit of playing a 'beep' out the PC speaker everytime you clicked on a track to load, despite disabling all sound effects (& muting the speaker). It was whilst I was investigating this (a known issue in Vista you'll all be pleased to know) that I came across "themed" controls and how to make your application look & feel like it was written for Vista (actually these came about in XP but it's been taken further in Vista) - it's not too difficult either but does need some minor code mods to make sure everything looks quite right. One of the annoying things I'm finding though - not just on this but generally - is Microsoft's tendency towards making everything appear in white. It's been getting steadily worse, where all the controls seem to be in some shade of white such that you can barely make out where the controls are. Quite frankly, Playout Manager looks pretty apalling with the "default" Vista colour scheme. I tend to change the colours slightly - mostly to grey backgrounds (the screenshots on this site are testiment to this) because it all gives me a headache after a while but Vista seems to (again) make life difficult in that (particularly with the themed controls), the "whiteness" seems to leach through. Here's an example - the top part of the image is after I change the background to grey yet various aspects of the controls retain their 'whiteness'.
The bottom image is the default Vista scheme - you can barely make out the border of the Title edit control or the selection bar..... So I need to figure out some method of making the controls look half decent again, regardless of the OS in use.
21/12/08: It's been a busy few weeks, despite me not writing anything useful here about it... Firstly, I've finally sucumbed and bought a new PC, a fairly rare event because normally I can't really justify it since I don't really need loads more procesing power, memory etc. for what I use it for - mostly developing Playout. However the old Athlon has been starting to slow down chronically of late (I think it's the virus checker which floors it) and some of the fans have been making rather nasty noises. So I've been slowly migrating everything across - which has proven tedious at times since I have some old but still perfectly useful software I like to use. This is also a jump into the wonderful world of Windows Vista, which having figured out how to turn a lot of the annoying nags off is proving reasonably painless, not so my attempt to get my trusty parallel port scanner working.
Playout itself seems fine on the new OS, there is a funny with the 1280x1024 display mode which causes it not to display quite correctly with the "new" desktop schemes but that has been easily fixed. Given a bit more time I'll have a more positive feel that there is nothing else lurking in the woodwork...
Before all this lot kicked off though, I made some reasonable headway with the SMS/request pattern matching I mentioned last week. The application is just about there and I've run a few song titles though it, thanks to some volunteers who sent me some test tracks. Thus far it isn't too bad but I'm still finding the odd track which I'd expect to match being discarded so still some work to go before I'm totally happy with it.
14/11/08: I've made an initial start at an optional add on to Playout which is to support an automated request system much like the web based system we used for Hastings Rock but using SMS texts instead. The actual mechanics of how the SMS message reaches Playout isn't something I'm overly bothered about - for starters I'm going to include a Simple MAPI client which would allow the software to pick them up via MS-Outlook Express (or similar ilk) assuming that an SMS to Email gateway is implemented elsewhere. The more challenging bit however is in matching up the various phrasing (and not to mention spelling!) of track titles which almost certainly won't match line for line anything in the Playout database. The starting point for this is part of the music import engine I wrote in Playout Manager several years ago which looks for similar tracks in the database - ignoring grammer, certain small words ['and', 'the' is' etc.] and allowing a certain tolerance in bad spelling. Quite how well this will work in practice though I think will only come about after it gets deployed on a real station which might well be Hastings Rock next year or my friends at Unity101 have also expressed an interest.
17/10/08: OAS Playout v3.3 is released today. This is mostly a Playout Manager enhancement rolling in the multi-cpu optimisations for voicetracking and the new tagging engine however it does mark a milestone in that from this version onwards it doesn't work with Windows 98/ME. This is principally due to the version of Visual Studio C++ Express I used (2008) to build the taglib library which precludes '98 support but it's probably overdue and will mean I have less to things to worry about than testing on fairly obsolete operating systems.
On another note, it's nearly a year that I lost my cat due to antifreeze poisoning and started promoting the petition to change the contents of the evil stuff - to date there is 1000+ signatures on there so thanks, especially if you found your way there through this site. The deadline is early December so if you've not done so or know some more folk who could add their name then now's the time. Hopefully Mr. Brown can find a spare 5 minutes in the midst of picking up what's left of the economy to take note.
04/10/08: It has been quite active this past week on the Playout front. Jim has been very kindly breaking the current alpha release by trying to put together a voicetracked programme for me. He's flung a few issues my way but most of them are due to either new code (which is what the testing is all about) or funnies on the MySQL front. However he did throw back something odd with the ASIO interface, specifically when playing non-44khz sampled tracks, in this mode it needs to go through a software resampling engine - I used the LGPL libresample library and in the process made a rather stupid assumption that it took in stereo samples, when in fact it's only mono. So I just needed to break out the audio into seperate left/right channels and feed it in. What was a bit stranger though is that the (in this case) upsampled data appeared to overflow the sample limits so I had to include clamp checks on the finished output to handle this. Very strange.
In parallel with all this is the re-occurance of the "randomness" of one of my Playlist generators. Those of you with good memories may remember me having a drone on about this one a couple of years ago. The feedback again was the frequency in which certain tracks re-occur in their auto generated playlists. So it started me off again on the trail of looking at random number generators and this time pasting loads of test run data into Excel spreadsheets. In the process, I added in another LGPL library to implement the rather lovely entitled Mersenne Twist Pseudorandom Number Generator. which provides the option of saving/restoring the random seed state. Unfortunatly as I said back then I'm no mathematician so it can be a little tricky for me to figure out if this has any significant impact or if the stats are in fact correct but I think I've managed to track it down to the sheer number of tracks with the same Genre in the supporting rulelist which 'skews' the final result quite badly. It certainly looks better if I adjust this rule.... and as I said last time, it'll take a while for them to see if they are fully happy with it...
23/09/08: I threw together another voicetrack show last week, nothing too exciting but more just as a confidence check that everything still worked, which it pretty much did apart from a recurring random crash (which I've seen very rarely) rearing it's ugly head during the preparing of it. So far I've had no real clue on what causes it however it always manifests itself in the same way so I'm sure it's the same thing each time and despite various code checks I've no idea - which is all very frustrating.... However this time I managed to persuade the debugger to attach to the dieing process and gleaned some clue as to what it was doing. If it is what I think then it's keeling over in the audio core due to a very specific set of conditions arising - possible but a little too improbable I feel. A fix has gone in but since it's so infrequent it'll be difficult to know for sure in the short term if its worked.....
12/09/08: Well we're all still here after Wednesday shenanigans although since the particle bashing's not even started yet it was all a bit of a let down. This means there's been nothing to stop me updating the help, finishing the installer and rolling out a new release - at least for a few people to test initially. I'm fairly happy with the new tagging importer considering the amount of music that has been flung at it but I'm going to put together a voicetrack programme on a dual CPU machine to make sure all the threading work I did earlier in the year is fully holding up.
05/09/08: The prevailing weather for August this year seems to be characterised by the words "exceptionally dull and wet" according to the BBC and shows no signs of abating and if I hadn't been spending much of my time kitchen fitting (still ongoing) we'd probably be up to Playout v9 by now. Its all very depressing... However this past week or so has seen a bit of activity - a flying visit to Luton helped track down a buffer overrun which was causing the new importers to fall over and I've spent some time today enhancing the search capabilities inside Playout Manager (customer request) which in the process has also fixed a very old bug in the Artist search engine (its listed as issue #5 here) so all good stuff. The help files need a reasonable bit of rejigging but hopefully a new v3.3 version will soon be forthcoming.
01/08/08: A few things have been happening when I'm not embroiled in kitchen fitting. Mid way last month I finished integrating taglib into Playout Manager along with a general overhaul of the whole tagging engine, notably tag writeback capability for all of the supported audio formats within Playout. All the audio I've thrown at it (including the entire Hastings Rock disk) has been parsed successfully however Jim has had a few issues which may not get resolved till I find my way in his part of the world again (later this month). Not that it's particularly Playout related but I've also been progressing a job I started last year which was to upgrade my Linux kernel from 2.4.x to a 2.6.x flavour. There's been a few sticking points but mostly its all now working though I've still yet to undertstand how udev fits fully into things.
21/06/08: I mentioned at the beginning of last year about replacing the pretty much non-maintained id3lib ID3 tagging library with something more supportable, in this case taglib provided a Win32 port became available. Well as of February this year, it is so I've made a start with attempting to get the grips with it - also with a view of providing a much cleaner interface across all the audio formats Playout now supports. I've just about put together a routine to read the v2 tags I want but it's been hard going. Like id3lib, taglib is written in C++ and whilst I'm reasonable okay with the basics, this is seriously hard core C++ so it's been a bit of a struggle to figure out the syntax on doing what I want to do. The documentation is all there & very good but a few examples wouldn't go a miss for us old 'C' programmers.
09/06/08: A bit of a tedious week just passed on improving the performance of the voicetrack editor - as I mentioned last time this would (on dual core processors) enable the generation of the 2+ waveforms to be calculated in parallel to do this I've had to make the voicetrack editor fully thread safe which has had additional knock on effects reverberating down to the audio core. It took some time to track down but the initial tests look promising, showing a halving of the update time when running on a dual core architecture (from 15s on a 2minute 'view' on my Athlon 1.4 to 3s on a stupidly overpowered 4 CPU Xeon). Then came the real fun bit as to fully realise this I needed to make the low level MP3 library (a port of mpg123 to Win32 done around 2001) thread safe. The port had a few bodges in it anyway - an assortment of global variables which I've moved into TLS but it took a while to track down the static array stuck in the middle of the layer3 decoder - to be honest it was probably only static to avoid eating up 16k odd of stack space. So its even more of a mess now I've been at it. Quite when this makes it into a release, I'm not sure at this point, it's a bit of a fundamental change that needs a *lot* more testing.
Speaking of the audio core, whilst on my recent jaunt to Luton we didn't get round to looking at calibrating the audio levels of the DirectX & ASIO output modules, I did spent a cheerful hour or so this Saturday trying out Jim's suggestions - which in essence involved playing a sine wave through a volume rejigged formula with the output stage connection to an AC multimeter. As it turns out, the ASIO volume levels are calculated correctly, its the DX conversion from a percentage to dBs that was in error - so in future they will both work the same.
01/06/08: I've been having a think & a play on and off about improving the performance of the voicetrack segue editor. Basically the problem is that whenever the view is scrolled, the waveform is regenerated from the source audio by playing back the relevant files as fast as possible. However the architecture of the audio core isn't really optimised to do this quickly (being more designed as a realtime player) so it can take a good few seconds (up to 15 on my 1.4Ghz Athlon for a 2 minute 'view') which isn't ideal. Short of a radical redesign I can't think of anything obvious to do to alleviate this (and not even sure what this redesign would look like). I know packages like Cool Edit Pro scan the file on import and create a 'peak level' (.pk) file which is an option but this would then incur a fairly large delay on the start of potentially every edit session.
So my initial attempts are to try and optimise what we have and spurred on by the arrival of a quad core Xeon processor based PC on my desk at work I've done a bit of work to try and parallel up the decoding operations. Naturally this will only offer any real benefit on dual core processors or better but the future is steadily marching in that direction. The waveform editor has needed a bit of rework as it wasn't thread safe but I've managed to do the necessary work over the past week and will be spending some time next week seeing how it performs.
10/05/08: Been a bit of a tetchy few weeks getting ready for the usual Hastings Rock broadcast, nothing terminal has arisen mind but there has been an assortment of steady annoyances coming along - it all started when it took the best part of 2 weeks to get the broadband sorted (its normally only a matter of days). However they're off and running now and aside from a power cut on day 2 things seem to be going steadily include (the webcam even looks half decent now someone's stuck a box round it to stop it saturating). I'm off to sunny Luton next weekend and quite possibly one of the outcomes of this will be to have sorted out the logarthmic algorithm for the Playout's volume control for both the ASIO & DirectX output variants. Which will be nice....
13/04/08: I seem to be perpetually in arears at writing this page right now, again been a busy few weeks mostly leading into the Hastings Rock broadcast again. Aside from rolling out a slightly newer version of Playout, it's mostly been doing the usual prep of getting all the machines, servers etc. ready. Last weekend I spent a fair amount of time putting together some PHP server side pages to enable the guys to record their shows at a given time from our internet stream then download them later - it's basically a web front end onto the Cron daemon.
Some of you may remember my entry last year on the subject of erratic hard drive detection issues on our HRock (ancient) Linux server and my conclusion being down to the 40W IDE cable not being connected correctly to support UDMA. Well that wasn't unfortunatly the complete story since the problem persisted but I've been, well, ignoring it. I always had this nagging feeling having read somewhere that it's a joint responsible of the OS AND the BIOS to get UDMA working properly and we've always had the problem that the machine is so old it hangs on auto-detecting drives that are >32GB. My workaround has been to change the drive setting to 'None' in the BIOS and it's pretty much worked but its not been ideal. So I've been going round the loop again and in a last ditch effort attempted to see if there was a newer BIOS around (not very likely since the m/board is circa 1998) not from the manufacturer no but I was pleasantly surprised to find this a site *Full* of patched Award BIOS's (including mine) specifically to alleviate this problem. Well done them.
Finally for now, this weekend I've been doing the annual test of the kit for Hastings Rock which basically involves setting Playout into auto-sequence mode and streaming it out for the comittee to listen to. This year, instead of doing the usual clustering of Shoutcast servers, we're forking out a very reasonable #6/month to TidyHosts UK for streaming. All very easy to setup & thus far is working marvellously.
31/03/08: It's been a busy few weeks, my parents 40th wedding anniversary party on Saturday and & my mate Jim somehow managed to wangle himself on the guest list. In amongst the usual abuse then was a comment that I seem to use this page mostly to go on about him breaking Playout - a fact I strenuously deny although I won't be helping my cause with the following paragragh....
....spent a few hours last week investigating some import issues Jim was having with his MySQL Playout database. In quick summary, this is an alternative (experiemental!) database engine for hosting Playout and offers a number of additional features (such as the web based listener request system we use for Hastings Rock). Anyway his problem seemed to stem from the fact that MySQL was treating similar artists with certain non-english characeter as identical whereas Playout thought they were different (Max´mo Park vs Maximo Park for example [note the accented ´]). In turns out it's all to do with collation (the way character sets are compared) and the default MySQL collation utilises something called "latin_swedish" where ´ and i are treated as identical. I must confess I'm not sure why this is so since a basic case insensitive compare (latin1_general_ci) would seem to be more appropriate for most people. Still it's fairly easy to change when the database is initially created (not so on an existing one mind) and it's something else I've learnt about....
An email on the Hastings Rock committee group startled to the fact that it being nearly April, is only really a month till they are on air again. It's been a while since I've done anything to Playout initiated by the station but during a recent meeting some comments provoked me into including a rather nifty feature, when picking a track to load you can bring up a quick history on when it was last played - useful for them to ensure the same old tracks that are always requested don't get played too often.
12/03/08: Looks very much like the v3.21 release will be rapidly consigned to the dusty bin, over the last week or so found yet more bugs which got in - rather embarassingly the button wall change I put into v3.09 then dropped in v3.11 had wangled its way back in (this was to "fire" the buttons on a mouse press [normal Windows behaviour], rather than release which may be more intuative to those uncustomed to Windows) . Unfortunatly work on the v3.2x trunk was already just underway by the time this update rolled out and it didn't get flowed back in. It's made more unfortunate by the fact that considering it was a failed experiement, to be consigned into the mists of time, the folk at Unity 101 have probably got used to it working that way. So, taking Jim's advice I've finally fixed the bug with it and will make it a configuration option in all new releases - probably migrating it's way into a profile option in the future.
Very quickly then, our last Image broadcast went well with the fine folk at FTL, no real issues of note with Playout aside from a slight stall on one of my players - it was having to do a downsample on the track in question so there may be something funny there. Jim managed to put Playout Manager in a spin importing some music but thats more than likely his MySQL link or some dodgy track - I will be investigating... No the only issues were with the gear external to Playout - a combination of my ailing mixer and Jim's compressor created some rather nasty distortion during his show.
02/03/08: It's age old problem really, given any complex piece of software, start changing significant bits of it and you stand a good chance of breaking things. Unfortunately (as I previously mentioned), the User Profiles feature required a significant rewrite of the way audio categories and playlists were managed - both fairly key features to Playout. So despite significant testing by me and Jim had a bash with it several weeks ago on FTL a simple but annoying bug slipped through which caused a semi-random playlist to be selected when a 'Load' button is pressed. That coupled with shipping a debug version of a DLL rather mucks up the v3.21 release. Not a lot can be done really, if I had hoards of beta testers it probably wouldn't have happened, sadly I don't.
25/02/08: OAS Playout v3.21 is now released. This completes (hopefully!) the long awaited User Profiles feature along with a few other additions. The next major update will be on the voicetrack segue editor - more on the Future Developments page. In the meantime, Jim (with a resurrected studio) & myself are planning another ImageFM sworey(SP) in the near future, tentatively planned for 9th March but keep an eye on the FTL events board (hopefully they'll let us back on...).
02/02/08: Whilst perusing Wikipedia I noticed the other day, that Microsoft have effectively obsoleted the Jet database engine (which powers MS-Access the database engine which ships with Playout) in favour of SQL Server. Notably for them they also provide a free implementation of SQL Server (currently SQL Server Express 2005) so I've downloaded it to have a play. At present I can't see the Playout migrating that way because it is still probably going to be easier to ship the database as a file (the MS-Access database) rather than have to deploy something like a cut down embedded version of SQL Server. However it may prove to be not that difficult to do and there are advantages particularly if stations want to deploy the database on a central server. I know of a couple which have had issues, notably with file permissions on things like Windows Server and in terms of multi-user networked databases, Access isn't the best or most reliable.
26/01/08: Technically OAS Playout v3.2 is released (last weekend) however its more going out on 'evaluation' to one station who were particularly after some of the new features. However it's almost certainly going to be upissued because they've already requested a slight change and in the meantime I've found a few niggling issues which I want to address.
12/01/08: Yesterday proved to be quite a successful day as finally managed to track down a niggling little bug which I touched upon nigh on 18 months ago which due to a corrupted configuration file, resulted in a fatal program crash when running an automated playlist. I remember spending quite a bit of time then trying to track it down - unsuccessfully as it turns out, however it cropping up with another customer this past week prompted me to re-double my efforts. I've always been somewhat proud on how robust Playout itself has been so whilst this *appeared* to be a one off incident after a clean install there was always the worry it could crop up again. So, taking advantage of Jim's recent need to build a new PC following his studio "leakage", and a fresh install of Playout asked him to try and replicate it (since I couldn't). Which he did (much to my surprise) and after a talk through what exact steps he performed managed to track it down to some subtle differences in the development environment settings for Playout & Playout Manager. I think I probably changed Playout's settings to closer mimic those used in Microsoft's Visual C over Borland (the former being more prevelant these days) but it would've been back in the very early days (7 years ago wow!). Anyhow, cheers as ever mate for your assistance.