[Rhythmbox-devel] Adding features for automated DJing
- From: josh resonance org
- To: rhythmbox-devel gnome org
- Subject: [Rhythmbox-devel] Adding features for automated DJing
- Date: Sat, 19 Dec 2009 18:10:25 -0800
Hello,
I've been DJing on a community radio station and will be doing some
live events also. When I say DJing, I'm talking about simply playing
tracks, NOT mixing or any of that beat matching stuff. For this
purpose I haven't found a good application in Linux, which simply does
all of the following:
- Has good music library support
- Auto cross fading (skip silence at end of songs), auto DJ basically
- Use separate sound cards for previewing and live playback
There seem to be a handful of record deck style DJ programs, which
don't really do what I want. I was using Amarok 1.4 for some time,
but I don't think it is in development anymore (I very much dislike
2.0) and doesn't quite have all those features. A lot of the other
media players seem too bloated for my purposes and still lack some of
the features I want.
So I decided it was about time I picked an existing media player and
added the features that I need. Rhythmbox is the one I settled on,
since its library support seems really good and is pretty fast,
already has cross fading support and is written using GObject which
I'm very familiar with.
One of the first things I just added was support for the Comment TAG,
since I use this to note profanity or audio issues, patch attached to
the following bug:
https://bugzilla.gnome.org/show_bug.cgi?id=560940
I wanted to post my other thoughts of what changes I'd like to make,
to get feedback and determine what features make sense to be put in
the official Rhythmbox and how to go about implementing them properly.
Changes I'm working on
Auto cross fading:
I just wrote some GStreamer code to seek 20 seconds from the end of a
song and using the level plugin, determine at what point the audio
drops below a certain level. The next step is to integrate this with
the rb-shell-player.c, so that the cross fade begins at the point
where the song is determined to be silent. I could see this being a
stock Rhythmbox feature with preferences to Enable it, set the end
segment scan Duration and the silence Level in dB. Any information on
the cleanest way of integrating this would be appreciated. It seems
like Rhythmbox is designed for multiple backends, though I only see
GStreamer currently. But perhaps a simple object type like
RbSongEndFinder or something with a couple properties to set the scan
duration and silence level, an asynchronous method to do the scan,
progress and a way to cancel it would be the proper way to do this? A
GStreamer implementation could then be added.
Separate preview and live sound cards:
For this feature I was thinking that previewing a song would occur
when double clicking on a track (default GStreamer audio device), but
anything played in the play queue would be on a separate sound card
(with preferences for enabling this feature and setting the GStreamer
device name). Previewing a track would need to have its own controls
for seeing the playback progress and stopping it, perhaps a small
control at the bottom of the window (to the right of the status bar
for example).
Turn off removal of tracks from play queue:
The play queue in the side pane seems useful when browsing the library
(compared to a playlist) and also makes the most sense for the 2 sound
card case, for it to be the live playback. One issue though is that
each track is removed as it is played, but I like to keep the playlist
around so that I know what I have played (for posting the playlist
later or announcing on the radio). I think it would therefore be nice
to have another preference option for turning off the removal of
tracks from the queue.
Song looping:
I'd like to add a song loop button to the controls which will
continuously loop the same song. Useful for background music.
I would appreciate any feedback on which features might be candidates
for inclusion in official Rhythmbox and any other comments/ideas.
Cheers!
Josh Green
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]