Hi.
Here's background info:
I'm very picky when it comes to functionality, and I love features that some
people maybe even never heard about, or knew existed. One of these features
is the "A-B" button on my remote control for my Technics SL-P470 (audio cd
player). As a musician having to figure out song lyrics and train guitar
solos for the next cover song that we will play live, the A-B feature is
extremly crucial. I have asked the authors of winamp and xmms numerous times
about this feature, for at least 4(?) years, well since winamp 1.7.3... Guess
what? No responce...
The good news is that a guy named "Rodrigo Martins de Matos Ventura" made a
patch for xmms. I rediffed this patch for the mandrake package and it works
like a charm! This is so cool! I love it! Now I can use the PC as a training
device for learning songs and stuff! Awesome!
I guess a lot of fellows (Austin?) would appreciate this patch if they only
knew about it, and realized the benefits of it. My patches are applied to
this mail.
To learn more about it, please read this mail:
http://lists.xmms.org/pipermail/xmms-devel/2002-January/002282.html
(2002-January, duh!)
I made packages for Mandrake Linux 9.2, check here:
http://www.deserve-it.com/9.2/
Chears.
--- xmms.spec 2003-08-29 21:43:00.000000000 +0200
+++ xmms.spec.oden 2003-11-12 15:34:00.000000000 +0100
@@ -13,7 +13,7 @@
Name: xmms
Summary: The Sound player with the WinAmp GUI
Version: 1.2.7
-Release: 25mdk
+Release: 26mdk
License: GPL
Group: Sound
URL: http://www.xmms.org/
@@ -53,6 +53,10 @@
Patch50: xmms-1.2.5-3dse-11.patch.bz2
Patch51: xmms-3dse-niqueluisarace.patch.bz2
+# rediffed from this mail:
+# http://lists.xmms.org/pipermail/xmms-devel/2002-January/002282.html
+Patch60: xmms-1.2.7-AB-repeat.diff.bz2
+
Packager: Guillaume Cottenceau <[EMAIL PROTECTED]>
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: libglib-devel libgtk+-devel libxml-devel libvorbis-devel libogg-devel
@@ -169,6 +173,9 @@
%endif
%patch51 -p1
+# rediffed from this mail:
+# http://lists.xmms.org/pipermail/xmms-devel/2002-January/002282.html
+%patch60 -p0
%build
autoconf # (gc) patched configure.in
@@ -382,6 +389,9 @@
%endif
%changelog
+* Wed Nov 12 2003 Oden Eriksson <[EMAIL PROTECTED]> 1.2.7-26mdk
+- added P60
+
* Fri Aug 29 2003 Pablo Saratxaga <[EMAIL PROTECTED]> 1.2.7-25mdk
- included new translations
@@ -798,3 +808,4 @@
* Fri Apr 09 1999 Lyle Kempler <[EMAIL PROTECTED]>
- initial version
+
--- xmms/main.c 2002-02-27 15:30:28.000000000 +0100
+++ xmms/main.c.oden 2003-11-12 15:23:36.000000000 +0100
@@ -56,8 +56,8 @@
SButton *mainwin_srew, *mainwin_splay, *mainwin_spause, *mainwin_sstop,
*mainwin_sfwd, *mainwin_seject, *mainwin_about;
TButton *mainwin_shuffle, *mainwin_repeat, *mainwin_eq, *mainwin_pl;
-TextBox *mainwin_info, *mainwin_rate_text, *mainwin_freq_text, *mainwin_stime_min,
- *mainwin_stime_sec;
+TextBox *mainwin_info, *mainwin_rate_text, *mainwin_freq_text, *mainwin_ab_text,
+ *mainwin_stime_min,*mainwin_stime_sec;
MenuRow *mainwin_menurow;
HSlider *mainwin_volume, *mainwin_balance, *mainwin_position, *mainwin_sposition = NULL;
MonoStereo *mainwin_monostereo;
@@ -80,6 +80,9 @@
static gchar *mainwin_title_text = NULL;
static gboolean mainwin_info_text_locked = FALSE;
+static int ab_position_a = -1;
+static int ab_position_b = -1;
+
#if 0
/* For x11r5 session management */
static gchar **restart_argv;
@@ -259,7 +262,7 @@
MAINWIN_GENERAL_STOPFADE, MAINWIN_GENERAL_BACK5SEC,
MAINWIN_GENERAL_FWD5SEC, MAINWIN_GENERAL_START, MAINWIN_GENERAL_BACK10,
MAINWIN_GENERAL_FWD10, MAINWIN_GENERAL_JTT, MAINWIN_GENERAL_JTF,
- MAINWIN_GENERAL_EXIT
+ MAINWIN_GENERAL_EXIT, MAINWIN_GENERAL_SETAB, MAINWIN_GENERAL_CLEARAB
};
void mainwin_general_menu_callback(gpointer cb_data, guint action, GtkWidget * w);
@@ -294,6 +297,9 @@
{N_("/Playback/-"), NULL, NULL, 0, "<Separator>"},
{N_("/Playback/Jump to Time"), "<control>J", mainwin_general_menu_callback, MAINWIN_GENERAL_JTT, "<Item>"},
{N_("/Playback/Jump to File"), "J", mainwin_general_menu_callback, MAINWIN_GENERAL_JTF, "<Item>"},
+ {N_("/Playback/-"), NULL, NULL, 0, "<Separator>"},
+ {N_("/Playback/Set A-B"), "A", mainwin_general_menu_callback, MAINWIN_GENERAL_SETAB, "<Item>"},
+ {N_("/Playback/Clear A-B"), "S", mainwin_general_menu_callback, MAINWIN_GENERAL_CLEARAB, "<Item>"},
{N_("/Visualization"), NULL, NULL, 0, "<Item>"},
{N_("/-"), NULL, NULL, 0, "<Separator>"},
{N_("/Exit"), NULL, mainwin_general_menu_callback, MAINWIN_GENERAL_EXIT, "<Item>"}
@@ -1931,6 +1937,8 @@
void mainwin_play_pushed(void)
{
+ if (-1!=ab_position_a)
+ input_seek(ab_position_a/1000);
if (get_input_paused())
{
input_pause();
@@ -2447,7 +2455,26 @@
break;
case MAINWIN_GENERAL_EXIT:
mainwin_quit_cb();
- break;
+ break;
+ case MAINWIN_GENERAL_SETAB:
+ if (playlist_get_current_length() != -1)
+ if (-1==ab_position_a) {
+ ab_position_a = input_get_time();
+ ab_position_b = -1;
+ } else if (-1==ab_position_b) {
+ int time=input_get_time();
+ if (time>ab_position_a) ab_position_b=time;
+ } else {
+ ab_position_a = input_get_time();
+ ab_position_b = -1;
+ }
+ break;
+ case MAINWIN_GENERAL_CLEARAB:
+ if (playlist_get_current_length() != -1) {
+ ab_position_a = -1;
+ ab_position_b = -1;
+ }
+ break;
}
}
@@ -2756,6 +2783,7 @@
textbox_set_xfont(mainwin_info, cfg.mainwin_use_xfont, cfg.mainwin_font);
mainwin_rate_text = create_textbox(&mainwin_wlist, mainwin_bg, mainwin_gc, 111, 43, 15, 0, SKIN_TEXT);
mainwin_freq_text = create_textbox(&mainwin_wlist, mainwin_bg, mainwin_gc, 156, 43, 10, 0, SKIN_TEXT);
+ mainwin_ab_text = create_textbox(&mainwin_wlist, mainwin_bg, mainwin_gc, 195, 43, 15, 0, SKIN_TEXT);
mainwin_menurow = create_menurow(&mainwin_wlist, mainwin_bg, mainwin_gc, 10, 22, 304, 0, 304, 44, mainwin_mr_change, mainwin_mr_release, SKIN_TITLEBAR);
mainwin_menurow->mr_doublesize_selected = cfg.doublesize;
@@ -2968,6 +2996,19 @@
}
else
{
+ if ( -1!=ab_position_a ) {
+ if ( -1!=ab_position_b ) {
+ textbox_set_text(mainwin_ab_text, "A-B");
+ if ( time>ab_position_b ) {
+ input_seek(ab_position_a/1000);
+ }
+ } else {
+ textbox_set_text(mainwin_ab_text, "A- ");
+ }
+ } else {
+ textbox_set_text(mainwin_ab_text, " ");
+ }
+
length = playlist_get_current_length();
playlistwin_set_time(time, length, cfg.timer_mode);
input_update_vis(time);
@@ -3046,6 +3087,8 @@
{
GDK_THREADS_ENTER();
vis_playback_stop();
+ if (-1!=ab_position_a) ab_position_a=-1;
+ if (-1!=ab_position_b) ab_position_b=-1;
GDK_THREADS_LEAVE();
}