A Conduit to the Voices Inside My Head

Digitally Imported Channel Aggregator

posted by Jayson Knight
Thu, Sep 21 2006

Downloads: 1,193
File size: 480kB
Views: 5,280
Digitally Imported Channel Aggregator
Filed under:

This application is a .Net WinForms implementation of the DI.fm website channel picking application. It monitors the DI.fm/Sky.fm XML Playlist file and generates a realtime playable playlist of DI/Sky channels. It requires that both the .Net framework be installed.

Background and Purpose (please note, DICA is in Alpha and not feature complete yet):

DI.fm is the internet's premier Electronic Dance Music destination with many channels devoted to various EDM genres such as Trance, Progressive House, Drum and Bass, and Ambient among others. Sky.fm supplants this with a selection of more traditional listening choices such as Classical, Rock, Jazz, and 80's. DI/Sky operate as a website where users can choose from the various genres of listening material, and participate in discussions of the music on the DI/Sky message boards. They provide an XML representation of their playlists for 3rd parties to use in their own custom application development, which is the basis for the Digitally Imported Channel Aggregator (DICA) application. DICA presents the DI/Sky playlist in a familiar layout for existing DI/Sky visitors and builds upon the existing functionality supplied by these sites by allowing the user to:

  • Switch between playlists within a common shell as well as define their own custom playlists containing only the channels they prefer to listen to.
  • Create custom notifications for various criteria such as whenever a track changes on a channel, when new comments are posted to the DI/Sky message boards, or have DICA monitor incoming tracks for specific artist/song information and notifying the user when this occurs. It can also monitor the DI/Sky Event Calendar to notify the user of specific events.
  • Keep track of their listening history and adapt itself to the user's listening style to enable future notifications for similar content as it comes into DICA.
  • Use their music player of choice for any stream, regardless of the streaming format and bitrate.

Usage and Operation:

To open DICA, download the attached archive and run the DigitallyImported.Client.exe file. The DICA interface should be intuitive to anyone who is familiar with the DI/Sky music sites. There are a series of options at the top of the interface with various selections to be made for playlist selection (each button has a small arrow on the right side, click the arrow for more options), as well as manipulation of the playlist (sorting, choosing the preferred music player for streaming, etc). Here is a brief overview of the options available in the DICA shell application:

  • When DICA is first opened, both the shell application plus a debug console will open. You can safely close the debug console unless you feel the need to read debugging output.
  • Click the options button to begin setting up the DICA application. This dialog is a bit rudimentary, but serves the purpose of letting the user specify basic configuration options. The options that are configurable are: How often the playlist is auto-refreshed, the colors that will be used for the channel backgrounds, whether or not you want the previous channel listened to the last time the application was run to play again, channel sorting options, and form transparency. Service level deserves its own bullet point.
  • DICA supports both levels of DI membership: Basic and Premium. If you don't pay for DI, then you are a basic subscriber and can leave this option alone. If you are a premium subscriber, DICA supports DI's enhanced bitrate streams, however you'll need to provide your login (or listen key) information. Unselect the 'Regular' option, and select 'Premium' and enter your username and password, DICA will take care of the rest behind the scenes so that you can listen to the higher quality streams.
  • When you are done configuring the options, click the save button in the lower right hand corner of the options form.
  • At this point, you are ready to start listening to streams. Click the Refresh Playlist button to retrieve the DI/Sky playlists, as well as the DI Event List from their respective websites. Once the playlist has loaded up in the shell, you'll notice that all of the other toolbar buttons become enabled.
  • The 2nd button from the left on the top toolbar is the channel picker, and has 2 parts: If you click the button itself, you'll be taken to the info page on the DI/Sky website for that channel. If you click the arrow just to the right of the text, you can select the channel to be displayed in the DICA channel panel.
  • The 3rd button from the right on the top toolbar is the DI event viewer, and has 2 parts: If you click the button, you'll be taken to the DI events calendar. If you click the arrow just to the right of the text, you'll get a dropdown of all the upcoming events on the DI channel. Selecting an event from the dropdown will take you to the details page for the event on the DI website.
  • The last button on the top toolbar is the Feedback link for the DICA application. Clicking it will take you the DICA section of my website where you can post thoughts/bugs/feature requests/etc. For anyone familiar with the .Net framework, clicking this button will also force a generation 3 garbage collection by the CLR, which is used for debugging purposes.
  • The 1st button on the bottom toolbar is the playlist configurator. The options are: All (displays all channels from both DI and Sky), Custom (which is discussed in the next bullet), DI (which will display only channels from the DI website), External (which is not functional yet), and Sky (which will display only channels from the Sky website).
  • Clicking the Custom playlist configurator option allows you to build your own playlist from the available DI/Sky channels. From the dialog that pops up, select the channels you'd like displayed in the channel panel section of DICA and then click the save button. To clear all selections, click the clear button. The add (+) button is not completely implemented at this point, but in a future release will allow you specify your own .pls files located on the internet to be displayed in your playlist.
  • The 2nd button in the bottom toolbar is the sorting specifier. Channels are sorted by channel name by default. To sort the playlist by the specified option, click the button. To change the sort criteria, click the arrow just to the right of the button text.
  • The 3rd button from the right on the bottom toolbar is the media player selector. Here you can choose your preferred media player to play the channel stream you wish to listen to. Default will attempt to use the default player you have set up for streams, however this option will cause a browser instance to be opened to fetch the file from the DI/Sky website. I recommend choosing your player of choice from the dropdown selection as this will bypass the browser instance as the stream will be directly loaded by the player you choose.
  • I have made every effort possible to try and ensure that any of the bitrate streams and formats can be played by any of the players listed in the dropdown (with the exception of Quicktime, which will be removed in a future release). There are cases where the media player you select cannot play a specific playlist type, in which case you should choose a playlist type that is supported by the player as noted by the icon next to stream button in the channel panel. WinAmp can play all of the stream types, and iTunes and WMP can play most of them. When in doubt, select a supported stream type.
  • Below the bottom toolbar is the status section, which has a counter for the time until the next playlist refresh, and an indicator for how much memory the DICA shell is currently using. If memory consumption becomes too high, restart the application. All of your settings will be saved.
  • Below the status section is the channel panel section, which is where the various selected DI/Sky channels and their relevant information will be displayed. The layout should be familiar to anyone who has used the DI/Sky websites as I've tried to mimic the look and feel. Clickable links are underlined, with the exception of the Recent Playlist History link, which will open up a small form displaying the most recent 5 tracks that were played on that channel along with links to their forum entries.
  • To listen to a stream, click the icon that displays the bitrate. The format of the stream is specified by the icon next to the bitrate indicator, although as stated above some streams are not player specific: DICA will attempt to open any of the streams in the player specified, i.e. if you want to listen to a WMA formatted stream in WinAmp, DICA will parse out the correct information for you.
  • The DICA shell will show a pop-up notification (aka 'Toast' similar to notifications given by popular IM applications) for the following: When a track changes on a channel listed in the channel panel, and when new comments are posted to a forum for a track. The text in the toast notifications is clickable and will take you to the relevant content on the website for the channel, i.e. if a new comments toast pops up, clicking it will take you to that forum.
  • Many options in the channel panel section are right click enabled, i.e. if you'd like to copy a track name to the clipboard, right click the title and choose copy. You can then paste into Google/etc to get more information about the artist or track.

Some general notes on the DICA application:

  • To prevent the DICA application from fetching the DI/Sky playlists too often, they are cached for approximately half the time specified in the Refresh Playlist counter. This means that clicking the Refresh Playlist before half of the playlist counter time has gone by will have no effect on refreshing the playlist. To get real time updates of the playlists displayed in the channel panel, set the playlist counter to a lower value in the options dialog. Anything below 60 seconds is not recommended as memory usage could increase. I recommend a value of 2.5 to 5 minutes (or longer if you want).
  • Under most circumstances, DICA will recover from any errors, but this is beta software and some crashing may occur. There is no risk to the rest of your system as this is written in .Net. If DICA crashes, it won't take any other applications down with it.
  • Source code is available on request only. When this reaches Release Candidate stage, I will include the source code along with API documentation in the download. Feel free to disassemble the assemblies at your leisure though.
  • Why are there so many assemblies? First and foremost DICA is a framework for fetching playlist/event content from the DI/Sky websites. The included Windows Forms client is just an example of how to consume these API's to display DI/Sky content. These API's can be consumed by any type of client should a developer be interested in developing their own DI/Sky based application.
  • There are NO spyware/loggers/trojans/etc in this application. As stated above, feel free to disassemble the source code if you'd like to look around, or get a better feel for how the application is built. I have been a professional .Net developer for 10 years, and am extremely active in the .Net open source community. I would never do anything to tarnish my reputation. I also am an avid EDM fan, and have been listening to/making EDM for almost 25 years. This application is my attempt to fold both of these together to give back to the community.

Release History (unless explicitly mentioned, all bugs from previous releases are fixed in subsequent versions), current release is Beta 4 (Build 40016):

08/29/2012 -- DICA Beta 4.

Et Cetera

For any curious geeks, the app is ~25,000 lines of code, written 100% in C#. The overall goal is to create a framework for developing custom DI applications for any programmers wishing to do so. The API is not complete/stable during the Alpha release timeline and will change. I will begin releasing source code during the Release Candidate timeframe.

comments powered by Disqus


Todor Ivanov wrote Re: Digitally Imported Channel Chooser
on Thu, Mar 15 2007 5:08 AM
I have problem refreshing the playlist.Here is the log file.Also my windows is in german, that can be also a problem.I hope to help you find the problem! 1 12:04:31 Cache has 6 items before insertion. 2 12:04:31 System.ArgumentOutOfRangeException: Der Index lag außerhalb des Bereichs. Er muss nicht negativ und kleiner als die Auflistung sein. Parametername: index bei System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) bei System.ThrowHelper.ThrowArgumentOutOfRangeException() bei System.Collections.Generic.List`1.get_Item(Int32 index) bei DigitallyImported.Client.Controls.ContentControl.RefreshPlaylistWorker_RunWorkerCompleted(Object sender, RunWorkerCompletedEventArgs e) in E:\jayson.knight\Visual Studio 2005\Projects\DigitallyImported\DigitallyImported.Client\Controls\ContentControl.cs:Zeile 269. bei System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e) bei System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)
Jayson Knight wrote Re: Digitally Imported Channel Chooser
on Wed, Mar 21 2007 4:52 PM
Hi Todor, thanks for reporting this issue. I've uploaded a newer version which should address the issue you are having. One of the 'default' settings could have been causing a problem. Also, when running the application for the first time (before refreshing the playlist) you may need to go to Tools, Options, then click the 'Load Defaults' button...you will only need to do that once. I'm in the process of getting rid of that ugly options form, so there is some overlap which might be causing problems. If that doesn't work please let me know...I plan on releasing a new version with more features within the next week or 2.
Robert Hesketh wrote re: Digitally Imported Channel Aggregator
on Sat, Mar 1 2008 6:08 AM
I get the following exception on startup: An unhandled exception of type 'System.Configuration.ConfigurationErrorsException' occurred in System.Configuration.dll Additional information: Configuration system failed to initialize
Jayson Knight wrote re: Digitally Imported Channel Aggregator
on Tue, Apr 8 2008 9:29 AM
Make sure you have both .Net 2.0 and .Net 3.0 installed...I used the enhanced configuration sub-system that is available in .Net 3.0, hence the dependency.
damb wrote re: Digitally Imported Channel Aggregator
on Wed, Apr 28 2010 9:57 PM

Trance, Progressive House, Drum and Bass

Copyright © :: JK [DOT] COM
External Content © :: Respective Authors

Terms of Service/Privacy Policy