NOTE: This post was originally posted in Spanish on August 11, 2018. I’m posting the English language translation today.
Today, I’ve took some time to improve my “DLNA Player” software, which is capable of streaming music tracks to DLNA-Enabled players. Up to this point, the software was able to play back local files as well as music files stored on Google Drive. It wasn’t able to play Audio CD tracks.
Because I have a bunch of Audio CDs, I’ve decided to integrate this function into the software. This was almost easy because there was an existing library to “rip” audio tracks. This, with some aditional lines made it possible to integrate this functionality.
Now, in the “File” menu, I’ve added a new option called “Open Audio CD”. We have to click it to listen to our Audio CDs:
This will open another window where we choose which optical drive to use. We then press “Open”:
Now, we get to see the Audio Tracks, and we simply need to press “Play”, or we double click on the audio track.
The Technical Side
We will now be taking a look at the code:
Here, we have the code responsible for showing the drive letters and pass the audio tracks to the main window.
I’ve also wrote a class that contains code that we call on the other windows. This is code acts like a bridge between the software and the library I’m using to read audio CDs:
Basically, the software will first rip an audio track and let our DLNA-Enabled device stream it.
The following code is responsible for calling the code that loads a track to memory:
We have 3 types of files declared in the code:
- Type 1 are local files.
- Type 2 are files stored in Google Drive.
- Type 3 are Audio CD tracks.
Depending on the file type, the software knows which code to run. Once it loads the track to RAM, the final part of this function is to send the URL to the DLNA device for playback:
To accelerate the playback process, we load the next track if the current track was loaded successfully. This will make the next track start playback immediately after the current track finishes playing because it will be already loaded in RAM. Once this next track starts playing, the software loads the following one, and this process continue until the final track is played and there’s no more to load.
The LoadNextTrack function makes this happen:
NOTE: This function is in the codebase but is not available in the v0.3 release from today.
Let’s see the software in action
1. We go to File -> Open Audio CD:
2. We select the drive leter and press Open:
3. We will select the DLNA playback device and double click on a track or press the “Play” button:
4. You can now see the optical drive starts to read the track:
5. ¡Enjoy your music!
Some commits performed to accomplish this:
You can download DLNA Player v0.3 by clicking here.
The source code can be found here.
This release has been tested on a Hiby R3 Digital Audio Player.