Digitally Imported Channel Aggregator Interface
This application is a .Net 2.0 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 2.0 and .Net Framework 3.0 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 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 songs 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 7 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 20 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 1 (Build 40016):
04/08/2008 -- DICA
Beta 1.
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.