diff -urN soundtracker-0.5.4/AUTHORS soundtracker-0.5.5/AUTHORS
--- soundtracker-0.5.4/AUTHORS Mon Mar 27 12:17:47 2000
+++ soundtracker-0.5.5/AUTHORS Sat May 27 10:36:39 2000
@@ -51,7 +51,7 @@
(the SoundTracker logo)
Conrad Parker
("Reverse" function in sample editor; bug fixes)
-Tomasz Maka
+Tomasz Maka
("Save region" function, insert / delete row stuff,
status bar, timer)
Nicolas Leveille
@@ -60,6 +60,8 @@
(gz zip bz2 archive handler)
Luc Tanguay
(MIDI controller input)
+Tijs van Bakel
+ (Minor row highlighting)
Translations
diff -urN soundtracker-0.5.4/ChangeLog soundtracker-0.5.5/ChangeLog
--- soundtracker-0.5.4/ChangeLog Sat Apr 29 17:37:07 2000
+++ soundtracker-0.5.5/ChangeLog Sat May 27 10:36:38 2000
@@ -1,3 +1,66 @@
+2000-05-27 Michael Krause
+
+ * Released v0.5.5
+
+ * app/sample-editor.c (sample_editor_close_volume_ramp_dialog):
+ Remember last used values.
+ (sample_editor_open_volume_ramp_dialog): Allow negative values as
+ well.
+
+2000-05-20 Michael Krause
+
+ * app/xm.c (xm_load_xm_instrument): Handling instrument header
+ size correctly. ST loads a few more XMs where it complained about
+ "instrument header size != 40" before.
+
+2000-05-13 Michael Krause
+
+ * app/sample-display.c (sample_display_set_mixer_position):
+ Correct expose/draw behaviour now; calculating widget areas are
+ redrawn in this function rather than in _draw() now. This was what
+ I thought to be a bug in gtk+, but it wasn't :)
+
+2000-05-08 Luc Tanguay
+
+ * app/xm.h: added constant for XM min/max note volume.
+
+ * app/midi.c: fixed problem when MIDI velocity is out of the range
+ of the volume of a XM note.
+
+2000-05-03 Luc Tanguay
+
+ * app/midi-settings.[ch]: MIDI settings dialog box and load/save
+ functions.
+
+ * app/menubar.c: updated to add MIDI settings item in Settings
+ menu. Save MIDI settings when "Save settings now" is clicked.
+
+ * app/midi.c: updated to use new MIDI settings. The volume and/or
+ channel info from the MIDI event can be turned on and off. The
+ input client number or port can be changed.
+
+ * app/main.c: load/save MIDI configuration settings.
+
+2000-05-05 Tijs van Bakel
+
+ * Added minor row highlighting feature.
+
+2000-05-02 Tomasz Maka
+
+ * Added option to update tempo/bpm spin buttons upon appearance of
+ the Fxx command.
+
+ * Added option to switch back to tracker page after loading /
+ saving.
+
+2000-05-01 Michael Krause
+
+ * app/drivers/*-output.c (prefs_update_estimate): Use
+ "milliseconds" instead of "microseconds", that's nearer to the
+ truth (Rob Adamson).
+
+ * po: Updated ja.po
+
2000-04-29 Michael Krause
* Released v0.5.4
diff -urN soundtracker-0.5.4/FAQ soundtracker-0.5.5/FAQ
--- soundtracker-0.5.4/FAQ Sat Mar 25 10:14:44 2000
+++ soundtracker-0.5.5/FAQ Mon May 8 15:41:06 2000
@@ -12,10 +12,14 @@
QQQQ: SoundTracker complains about not being able to open /dev/dsp.
-a: You are probably running GNOME and ESD is keeping /dev/dsp open.
-You could either kill esd, disable GNOME audio extensions, or use the
-ESD driver supplied with SoundTracker, though that one gives you quite
-a delay.
+a: Either you have not configured a sound driver for your system (you
+could check that by running an MP3 player or something) - or you are
+running GNOME and your soundcard is kept busy by the E Sound Daemon,
+which you can get rid of by using "killall esd" in a shell.
+
+There's also an "ESD" driver in the Audio settings, but it's not
+possible to do any serious tracking work because of the delay
+introduced by it.
------------------------------------------------------------------------
diff -urN soundtracker-0.5.4/Makefile.am soundtracker-0.5.5/Makefile.am
--- soundtracker-0.5.4/Makefile.am Sat Mar 25 11:44:03 2000
+++ soundtracker-0.5.5/Makefile.am Sat May 27 10:52:30 2000
@@ -34,8 +34,6 @@
cp soundtracker-$(VERSION).tar.gz /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
make bindist
cp soundtracker-$(VERSION)-bin.tar.gz /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
- rpm -tb soundtracker-$(VERSION).tar.gz
- cp /usr/src/redhat/RPMS/i386/soundtracker-$(VERSION)-* /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
- chown -R rawstyle.rawstyle /home/rawstyle/dev/soundtracker/*
-
-
+ /home/rawstyle/dev/soundtracker/bin/rpm -tb soundtracker-$(VERSION).tar.gz
+ cp /usr/src/packages/RPMS/i386/soundtracker-$(VERSION)-* /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
+ chown -R rawstyle.users /home/rawstyle/dev/soundtracker/*
diff -urN soundtracker-0.5.4/Makefile.in soundtracker-0.5.5/Makefile.in
--- soundtracker-0.5.4/Makefile.in Sat Apr 29 17:37:54 2000
+++ soundtracker-0.5.5/Makefile.in Sat May 27 10:52:35 2000
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4a from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -46,10 +46,9 @@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@@ -115,7 +114,7 @@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = gtar
+TAR = tar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
@@ -311,7 +310,7 @@
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -353,7 +352,7 @@
all-am: Makefile $(DATA) config.h
all-redirect: all-recursive-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs: installdirs-recursive
installdirs-am:
$(mkinstalldirs) $(DESTDIR)$(utildir)
@@ -426,9 +425,9 @@
cp soundtracker-$(VERSION).tar.gz /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
make bindist
cp soundtracker-$(VERSION)-bin.tar.gz /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
- rpm -tb soundtracker-$(VERSION).tar.gz
- cp /usr/src/redhat/RPMS/i386/soundtracker-$(VERSION)-* /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
- chown -R rawstyle.rawstyle /home/rawstyle/dev/soundtracker/*
+ /home/rawstyle/dev/soundtracker/bin/rpm -tb soundtracker-$(VERSION).tar.gz
+ cp /usr/src/packages/RPMS/i386/soundtracker-$(VERSION)-* /home/rawstyle/dev/soundtracker/FTP/soundtracker/v0.5/
+ chown -R rawstyle.users /home/rawstyle/dev/soundtracker/*
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff -urN soundtracker-0.5.4/NEWS soundtracker-0.5.5/NEWS
--- soundtracker-0.5.4/NEWS Sat Apr 29 17:37:07 2000
+++ soundtracker-0.5.5/NEWS Sat May 27 10:37:11 2000
@@ -4,6 +4,15 @@
responsible for having coded a particular feature (full names in
AUTHORS file).
+What is new in soundtracker-0.5.5 (27-May-2000):
+
+* GUI dialog for MIDI settings (ltanguay)
+* Optional automatic update of Tempo/BPM spin buttons when
+ player executes Fxx command (tmaka)
+* Minor row highlighting (tbakel)
+* Allow negative values in sample editor volume dialog
+* Fixed the popular XM loader 'instrument header size != 40' bug
+
What is new in soundtracker-0.5.4 (29-Apr-2000):
* Much smoother display of sample position and clipping indicators
diff -urN soundtracker-0.5.4/README soundtracker-0.5.5/README
--- soundtracker-0.5.4/README Sat Apr 29 17:37:08 2000
+++ soundtracker-0.5.5/README Sat May 27 10:36:40 2000
@@ -4,7 +4,7 @@
http://www.soundtracker.org/
--------------------------------------------------------------
- v0.5.4 --- THIS IS A DEVELOPMENT VERSION!
+ v0.5.5 --- THIS IS A DEVELOPMENT VERSION!
Written and (C) 1998-2000
by Michael Krause [ raw style / lego ]
diff -urN soundtracker-0.5.4/TODO soundtracker-0.5.5/TODO
--- soundtracker-0.5.4/TODO Sat Apr 29 10:45:49 2000
+++ soundtracker-0.5.5/TODO Sat May 27 10:32:57 2000
@@ -1,18 +1,12 @@
things to do and known bugs (in no particular order)
-------------------------------------------------------
-usecs->msecs!
+> >From within soundtracker, it is possible to render the module
+> as wav. My question is: Is it also possible to
+> do it from the (Unix) command line? Something like
+> `soundtracker --render song.xm song.wav' ?
-"disable checks"
-
-patch von tomasz
-
-patches von globber
-
-
-bandoi
-
-cvs server?
+filereq: show only *.xm, *.zip etc.
xm's without instruments saved by soundtracker can't be loaded by
mikmod.
@@ -25,7 +19,7 @@
right-shift: start playing and editing, with scrolling
enabled. optional quantization.
-write script to send mails and create distribution automatically
+write script to create distribution automatically
> press CAPSLOCK or something, to enter "hex chooser mode"
> type A3 or B0 or 45 or whatever the 2-digit hex code is for your sample
@@ -48,11 +42,9 @@
shift+space. jazz edit box is NOT displayed, this works only after
you use the menu bar once to toggle the box on. ---> BUG IN
GTK+/GNOME: in keyevent, the events are not being stopped, so _my_
-code is not buggy.
-
-whoops: rf01102.xm, play it, switch to instrument page, then to sample
-editor -> sample display widget behaves strangely. expose() is not
-called -> bug in gtk+.
+code is not buggy. If you change the responsible key combo from
+"Shift+Space" to something else, for example "Ctrl+R", it works
+without problems.
====== GUI =========
@@ -185,8 +177,6 @@
SAMPLE IMPORT/EXPORT: IFF and RAW formats.
-XM.C: loading chuck-boom.xm doesn't work!
-
XM.C / MOD LOADER: mod.Anette has strange loop points
PLAYER BUGS: e96-sache in flowerpower.main!, mod.rstchip.09,
@@ -202,34 +192,6 @@
edX-bug (-> kb)
mod saver
-
-@@ -691,7 +693,7 @@
- ch.chVibRate=(procdat>>4)<<2;
- break;
- case xmpCmdPortaVol: case xmpCmdVibVol: case xmpCmdVolSlide:
-- if (procdat || ismod)
-+ if (procdat)
- ch.chVolSlideVal=procdat;
- if (ch.chVolSlideVal&0xf0)
- {
-
-@@ -887,13 +909,13 @@
- ch.chFinalPan=ch.chPan=procdat*0x11;
- break;
- case xmpCmdFVolSlideU:
-- if (procdat || ismod )
-+ if (procdat)
- ch.chFineVolSlideUVal=procdat;
- ch.fx=xfxRowVolSlideUp;
- ch.chFinalVol=ch.chVol=volrange(ch.chVol+ch.chFineVolSlideUVal);
- break;
- case xmpCmdFVolSlideD:
-- if (procdat || ismod )
-+ if (procdat)
- ch.chFineVolSlideDVal=procdat;
- ch.fx=xfxRowVolSlideDown;
- ch.chFinalVol=ch.chVol=volrange(ch.chVol-ch.chFineVolSlideDVal);
-
====== MIXER ======
diff -urN soundtracker-0.5.4/aclocal.m4 soundtracker-0.5.5/aclocal.m4
--- soundtracker-0.5.4/aclocal.m4 Sat Apr 29 17:37:38 2000
+++ soundtracker-0.5.5/aclocal.m4 Sat May 27 10:37:26 2000
@@ -1,4 +1,4 @@
-dnl aclocal.m4 generated automatically by aclocal 1.4a
+dnl aclocal.m4 generated automatically by aclocal 1.4
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
@@ -21,8 +21,6 @@
AC_DEFUN(AM_INIT_AUTOMAKE,
[AC_REQUIRE([AC_PROG_INSTALL])
-dnl We require 2.13 because we rely on SHELL being computed by configure.
-AC_PREREQ([2.13])
PACKAGE=[$1]
AC_SUBST(PACKAGE)
VERSION=[$2]
diff -urN soundtracker-0.5.4/app/Makefile.am soundtracker-0.5.5/app/Makefile.am
--- soundtracker-0.5.4/app/Makefile.am Sat Apr 29 17:11:30 2000
+++ soundtracker-0.5.5/app/Makefile.am Tue May 16 15:33:03 2000
@@ -22,6 +22,7 @@
main.c main.h \
menubar.c menubar.h \
midi.c midi.h \
+ midi-settings.c midi-settings.h \
midi-utils.c midi-utils.h \
mixer.h \
module-info.c module-info.h \
diff -urN soundtracker-0.5.4/app/Makefile.in soundtracker-0.5.5/app/Makefile.in
--- soundtracker-0.5.4/app/Makefile.in Sat Apr 29 17:38:06 2000
+++ soundtracker-0.5.5/app/Makefile.in Sat May 27 10:52:41 2000
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4a from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -46,10 +46,9 @@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@@ -100,7 +99,7 @@
bin_PROGRAMS = soundtracker
-soundtracker_SOURCES = audio.c audio.h audioconfig.c audioconfig.h cheat-sheet.c cheat-sheet.h clavier.c clavier.h driver.h driver-in.h driver-out.h endian-conv.h envelope-box.c envelope-box.h errors.c errors.h extspinbutton.c extspinbutton.h file-operations.c file-operations.h gui-settings.c gui-settings.h gui-subs.c gui-subs.h gui.c gui.h i18n.h instrument-editor.c instrument-editor.h keys.c keys.h main.c main.h menubar.c menubar.h midi.c midi.h midi-utils.c midi-utils.h mixer.h module-info.c module-info.h playlist.c playlist.h poll.c poll.h preferences.c preferences.h recode.c recode.h sample-display.c sample-display.h sample-editor.c sample-editor.h scope-group.c scope-group.h st-subs.c st-subs.h time-buffer.c time-buffer.h tips-dialog.c tips-dialog.h track-editor.c track-editor.h tracker.c tracker.h tracker-settings.c tracker-settings.h transposition.c transposition.h xm.c xm.h xm-player.c xm-player.h
+soundtracker_SOURCES = audio.c audio.h audioconfig.c audioconfig.h cheat-sheet.c cheat-sheet.h clavier.c clavier.h driver.h driver-in.h driver-out.h endian-conv.h envelope-box.c envelope-box.h errors.c errors.h extspinbutton.c extspinbutton.h file-operations.c file-operations.h gui-settings.c gui-settings.h gui-subs.c gui-subs.h gui.c gui.h i18n.h instrument-editor.c instrument-editor.h keys.c keys.h main.c main.h menubar.c menubar.h midi.c midi.h midi-settings.c midi-settings.h midi-utils.c midi-utils.h mixer.h module-info.c module-info.h playlist.c playlist.h poll.c poll.h preferences.c preferences.h recode.c recode.h sample-display.c sample-display.h sample-editor.c sample-editor.h scope-group.c scope-group.h st-subs.c st-subs.h time-buffer.c time-buffer.h tips-dialog.c tips-dialog.h track-editor.c track-editor.h tracker.c tracker.h tracker-settings.c tracker-settings.h transposition.c transposition.h xm.c xm.h xm-player.c xm-player.h
soundtracker_LDADD = drivers/libdrivers.a mixers/libmixers.a
@@ -123,10 +122,10 @@
soundtracker_OBJECTS = audio.o audioconfig.o cheat-sheet.o clavier.o \
envelope-box.o errors.o extspinbutton.o file-operations.o \
gui-settings.o gui-subs.o gui.o instrument-editor.o keys.o main.o \
-menubar.o midi.o midi-utils.o module-info.o playlist.o poll.o \
-preferences.o recode.o sample-display.o sample-editor.o scope-group.o \
-st-subs.o time-buffer.o tips-dialog.o track-editor.o tracker.o \
-tracker-settings.o transposition.o xm.o xm-player.o
+menubar.o midi.o midi-settings.o midi-utils.o module-info.o playlist.o \
+poll.o preferences.o recode.o sample-display.o sample-editor.o \
+scope-group.o st-subs.o time-buffer.o tips-dialog.o track-editor.o \
+tracker.o tracker-settings.o transposition.o xm.o xm-player.o
soundtracker_DEPENDENCIES = drivers/libdrivers.a mixers/libmixers.a
soundtracker_LDFLAGS =
CFLAGS = @CFLAGS@
@@ -138,7 +137,7 @@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = gtar
+TAR = tar
GZIP_ENV = --best
SOURCES = $(soundtracker_SOURCES)
OBJECTS = $(soundtracker_OBJECTS)
@@ -168,8 +167,8 @@
$(mkinstalldirs) $(DESTDIR)$(bindir)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
- echo " $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
- $(INSTALL_PROGRAM) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
+ $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
@@ -299,7 +298,7 @@
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -316,12 +315,12 @@
|| exit 1; \
fi; \
done
-audioconfig.o: audioconfig.c ../config.h i18n.h audioconfig.h gui-subs.h \
- audio.h mixer.h driver-out.h driver.h time-buffer.h \
- sample-editor.h xm.h driver-in.h preferences.h gui.h
audio.o: audio.c ../config.h poll.h i18n.h audio.h mixer.h driver-out.h \
driver.h time-buffer.h main.h xm.h xm-player.h endian-conv.h \
scope-group.h sample-display.h errors.h gui-settings.h
+audioconfig.o: audioconfig.c ../config.h i18n.h audioconfig.h gui-subs.h \
+ audio.h mixer.h driver-out.h driver.h time-buffer.h \
+ sample-editor.h xm.h driver-in.h preferences.h gui.h
cheat-sheet.o: cheat-sheet.c ../config.h i18n.h
clavier.o: clavier.c clavier.h
effectsconfig.o: effectsconfig.c ../config.h i18n.h gui-subs.h mixer.h \
@@ -333,43 +332,49 @@
extspinbutton.o: extspinbutton.c extspinbutton.h
file-operations.o: file-operations.c ../config.h i18n.h \
file-operations.h keys.h track-editor.h tracker.h xm.h mixer.h \
- tracker-settings.h gui-subs.h gui.h errors.h
-gui.o: gui.c ../config.h poll.h i18n.h gui.h gui-subs.h xm.h mixer.h \
- st-subs.h audio.h driver-out.h driver.h time-buffer.h \
- xm-player.h tracker.h main.h keys.h instrument-editor.h \
- sample-editor.h driver-in.h track-editor.h tracker-settings.h \
- scope-group.h sample-display.h module-info.h preferences.h \
- menubar.h tips-dialog.h gui-settings.h file-operations.h \
- playlist.h
-gui-settings.o: gui-settings.c ../config.h i18n.h gui.h gui-settings.h \
- gui-subs.h preferences.h scope-group.h sample-display.h \
- track-editor.h tracker.h xm.h mixer.h tracker-settings.h \
- extspinbutton.h
-gui-subs.o: gui-subs.c ../config.h i18n.h gui.h gui-subs.h \
+ tracker-settings.h gui-subs.h gui.h audio.h driver-out.h \
+ driver.h time-buffer.h errors.h
+gui-settings.o: gui-settings.c ../config.h i18n.h gui.h gui-subs.h \
+ audio.h mixer.h driver-out.h driver.h time-buffer.h \
+ gui-settings.h preferences.h scope-group.h sample-display.h \
+ track-editor.h tracker.h xm.h tracker-settings.h \
extspinbutton.h
+gui-subs.o: gui-subs.c ../config.h i18n.h gui.h gui-subs.h audio.h \
+ mixer.h driver-out.h driver.h time-buffer.h extspinbutton.h
+gui.o: gui.c ../config.h poll.h i18n.h gui.h gui-subs.h audio.h mixer.h \
+ driver-out.h driver.h time-buffer.h xm.h st-subs.h xm-player.h \
+ tracker.h main.h keys.h instrument-editor.h sample-editor.h \
+ driver-in.h track-editor.h tracker-settings.h scope-group.h \
+ sample-display.h module-info.h preferences.h menubar.h \
+ tips-dialog.h gui-settings.h file-operations.h playlist.h
instrument-editor.o: instrument-editor.c i18n.h ../config.h \
instrument-editor.h xm.h mixer.h envelope-box.h st-subs.h gui.h \
- gui-subs.h keys.h track-editor.h tracker.h tracker-settings.h \
- clavier.h errors.h sample-editor.h driver-in.h driver.h \
- gui-settings.h module-info.h file-operations.h
-keys.o: keys.c ../config.h i18n.h keys.h gui-subs.h gui.h menubar.h \
+ gui-subs.h audio.h driver-out.h driver.h time-buffer.h keys.h \
+ track-editor.h tracker.h tracker-settings.h clavier.h errors.h \
+ sample-editor.h driver-in.h gui-settings.h module-info.h \
+ file-operations.h
+keys.o: keys.c ../config.h i18n.h keys.h gui-subs.h gui.h audio.h \
+ mixer.h driver-out.h driver.h time-buffer.h menubar.h \
preferences.h
-main.o: main.c ../config.h i18n.h gui.h xm.h mixer.h audio.h \
- driver-out.h driver.h time-buffer.h keys.h gui-settings.h \
+main.o: main.c ../config.h i18n.h gui.h gui-subs.h audio.h mixer.h \
+ driver-out.h driver.h time-buffer.h xm.h keys.h gui-settings.h \
audioconfig.h tips-dialog.h menubar.h track-editor.h tracker.h \
- tracker-settings.h midi.h
+ tracker-settings.h midi.h midi-settings.h
menubar.o: menubar.c ../config.h i18n.h menubar.h gui.h gui-subs.h \
- main.h xm.h mixer.h st-subs.h keys.h module-info.h \
- preferences.h scope-group.h sample-display.h track-editor.h \
- tracker.h tracker-settings.h audioconfig.h gui-settings.h \
- tips-dialog.h transposition.h cheat-sheet.h file-operations.h \
- instrument-editor.h
-midi.o: midi.c ../config.h
+ audio.h mixer.h driver-out.h driver.h time-buffer.h main.h xm.h \
+ st-subs.h keys.h module-info.h preferences.h scope-group.h \
+ sample-display.h track-editor.h tracker.h tracker-settings.h \
+ audioconfig.h gui-settings.h tips-dialog.h transposition.h \
+ cheat-sheet.h file-operations.h instrument-editor.h \
+ midi-settings.h
+midi-settings.o: midi-settings.c ../config.h
midi-utils.o: midi-utils.c ../config.h
+midi.o: midi.c ../config.h
module-info.o: module-info.c i18n.h ../config.h module-info.h gui.h \
- gui-subs.h xm.h mixer.h st-subs.h main.h sample-editor.h \
- driver-in.h driver.h instrument-editor.h keys.h track-editor.h \
- tracker.h tracker-settings.h
+ gui-subs.h audio.h mixer.h driver-out.h driver.h time-buffer.h \
+ xm.h st-subs.h main.h sample-editor.h driver-in.h \
+ instrument-editor.h keys.h track-editor.h tracker.h \
+ tracker-settings.h
playlist.o: playlist.c ../config.h i18n.h playlist.h gui-subs.h
poll.o: poll.c ../config.h
preferences.o: preferences.c i18n.h ../config.h gui-subs.h preferences.h \
@@ -378,11 +383,11 @@
recode.o: recode.c recode.h
sample-display.o: sample-display.c sample-display.h
sample-editor.o: sample-editor.c ../config.h i18n.h sample-editor.h xm.h \
- mixer.h driver-in.h driver.h st-subs.h gui.h gui-subs.h \
- instrument-editor.h sample-display.h endian-conv.h keys.h \
- track-editor.h tracker.h tracker-settings.h errors.h \
- time-buffer.h audio.h driver-out.h module-info.h \
- file-operations.h gui-settings.h
+ mixer.h driver-in.h driver.h st-subs.h gui.h gui-subs.h audio.h \
+ driver-out.h time-buffer.h instrument-editor.h sample-display.h \
+ endian-conv.h keys.h track-editor.h tracker.h \
+ tracker-settings.h errors.h module-info.h file-operations.h \
+ gui-settings.h
scope-group.o: scope-group.c ../config.h scope-group.h sample-display.h \
audio.h mixer.h driver-out.h driver.h time-buffer.h gui-subs.h \
gui-settings.h
@@ -391,20 +396,21 @@
tips-dialog.o: tips-dialog.c ../config.h i18n.h tips-dialog.h \
preferences.h
track-editor.o: track-editor.c i18n.h ../config.h track-editor.h \
- tracker.h xm.h mixer.h tracker-settings.h gui.h st-subs.h \
- keys.h audio.h driver-out.h driver.h time-buffer.h main.h \
- gui-settings.h gui-subs.h preferences.h
-tracker.o: tracker.c tracker.h xm.h mixer.h main.h gui-settings.h
+ tracker.h xm.h mixer.h tracker-settings.h gui.h gui-subs.h \
+ audio.h driver-out.h driver.h time-buffer.h st-subs.h keys.h \
+ xm-player.h main.h gui-settings.h preferences.h
tracker-settings.o: tracker-settings.c ../config.h tracker-settings.h \
tracker.h xm.h mixer.h i18n.h gui-subs.h preferences.h
+tracker.o: tracker.c tracker.h xm.h mixer.h main.h gui-settings.h
transposition.o: transposition.c i18n.h ../config.h transposition.h \
- main.h xm.h mixer.h gui-subs.h gui.h st-subs.h track-editor.h \
- tracker.h tracker-settings.h
-xm.o: xm.c i18n.h ../config.h gui-settings.h xm.h mixer.h endian-conv.h \
- st-subs.h recode.h errors.h audio.h driver-out.h driver.h \
- time-buffer.h gui-subs.h
+ main.h xm.h mixer.h gui-subs.h gui.h audio.h driver-out.h \
+ driver.h time-buffer.h st-subs.h track-editor.h tracker.h \
+ tracker-settings.h
xm-player.o: xm-player.c ../config.h i18n.h xm-player.h xm.h mixer.h \
main.h audio.h driver-out.h driver.h time-buffer.h
+xm.o: xm.c i18n.h ../config.h gui-settings.h xm.h mixer.h xm-player.h \
+ endian-conv.h st-subs.h recode.h errors.h audio.h driver-out.h \
+ driver.h time-buffer.h gui-subs.h
info-am:
info: info-recursive
@@ -428,7 +434,7 @@
all-am: Makefile $(PROGRAMS)
all-redirect: all-recursive
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs: installdirs-recursive
installdirs-am:
$(mkinstalldirs) $(DESTDIR)$(bindir)
diff -urN soundtracker-0.5.4/app/audio.c soundtracker-0.5.5/app/audio.c
--- soundtracker-0.5.4/app/audio.c Sat Apr 29 17:17:34 2000
+++ soundtracker-0.5.5/app/audio.c Wed May 10 16:26:53 2000
@@ -1022,7 +1022,9 @@
if(p) {
p->songpos = player_songpos;
p->patpos = player_patpos;
- time_buffer_add(audio_playerpos_tb, p, audio_current_playback_time_bent);
+ p->tempo = player_tempo;
+ p->bpm = player_bpm;
+ time_buffer_add(audio_playerpos_tb, p, audio_current_playback_time_bent);
}
/* When the user changes the song position while playing,
diff -urN soundtracker-0.5.4/app/audio.h soundtracker-0.5.5/app/audio.h
--- soundtracker-0.5.4/app/audio.h Sun Mar 12 21:19:48 2000
+++ soundtracker-0.5.5/app/audio.h Wed May 10 16:14:31 2000
@@ -89,6 +89,8 @@
double time;
int songpos;
int patpos;
+ int tempo;
+ int bpm;
} audio_player_pos;
extern time_buffer *audio_playerpos_tb;
diff -urN soundtracker-0.5.4/app/audioconfig.c soundtracker-0.5.5/app/audioconfig.c
--- soundtracker-0.5.4/app/audioconfig.c Sun Apr 9 20:18:56 2000
+++ soundtracker-0.5.5/app/audioconfig.c Wed May 10 16:14:31 2000
@@ -320,6 +320,8 @@
#else
thing = gtk_button_new_with_label (_ ("Close"));
#endif
+ GTK_WIDGET_SET_FLAGS(thing, GTK_CAN_DEFAULT);
+ gtk_window_set_default(GTK_WINDOW(configwindow), thing);
gtk_signal_connect (GTK_OBJECT (thing), "clicked",
GTK_SIGNAL_FUNC (audioconfig_close_requested), NULL);
gtk_box_pack_start (GTK_BOX (hbox), thing, FALSE, FALSE, 0);
diff -urN soundtracker-0.5.4/app/cheat-sheet.c soundtracker-0.5.5/app/cheat-sheet.c
--- soundtracker-0.5.4/app/cheat-sheet.c Wed Mar 22 17:06:33 2000
+++ soundtracker-0.5.5/app/cheat-sheet.c Wed May 10 16:14:31 2000
@@ -133,6 +133,8 @@
#else
thing = gtk_button_new_with_label (_ ("Close"));
#endif
+ GTK_WIDGET_SET_FLAGS(thing, GTK_CAN_DEFAULT);
+ gtk_window_set_default(GTK_WINDOW(cheat_sheet_window), thing);
gtk_signal_connect (GTK_OBJECT (thing), "clicked",
GTK_SIGNAL_FUNC (cheat_sheet_close_requested), NULL);
gtk_box_pack_start (GTK_BOX (hbox), thing, FALSE, FALSE, 0);
diff -urN soundtracker-0.5.4/app/drivers/Makefile.in soundtracker-0.5.5/app/drivers/Makefile.in
--- soundtracker-0.5.4/app/drivers/Makefile.in Sat Apr 29 17:38:10 2000
+++ soundtracker-0.5.5/app/drivers/Makefile.in Sat May 27 10:52:42 2000
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4a from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -46,10 +46,9 @@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@@ -125,7 +124,7 @@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = gtar
+TAR = tar
GZIP_ENV = --best
SOURCES = $(libdrivers_a_SOURCES)
OBJECTS = $(libdrivers_a_OBJECTS)
@@ -211,20 +210,18 @@
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
-alsa2-input.o: alsa2-input.c ../../config.h
-alsa2-output.o: alsa2-output.c ../../config.h
alsa-input.o: alsa-input.c ../../config.h
alsa-output.o: alsa-output.c ../../config.h
-esd-output.o: esd-output.c ../../config.h ../i18n.h ../driver-out.h \
- ../driver.h ../mixer.h ../errors.h ../gui-subs.h \
- ../preferences.h
+alsa2-input.o: alsa2-input.c ../../config.h
+alsa2-output.o: alsa2-output.c ../../config.h
+esd-output.o: esd-output.c ../../config.h
file-output.o: file-output.c ../../config.h ../i18n.h ../driver-out.h \
../driver.h ../mixer.h ../errors.h ../gui-subs.h \
../preferences.h
@@ -256,7 +253,7 @@
all-am: Makefile $(LIBRARIES)
all-redirect: all-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
diff -urN soundtracker-0.5.4/app/drivers/alsa-output.c soundtracker-0.5.5/app/drivers/alsa-output.c
--- soundtracker-0.5.4/app/drivers/alsa-output.c Sat Feb 19 11:58:34 2000
+++ soundtracker-0.5.5/app/drivers/alsa-output.c Mon May 1 18:45:47 2000
@@ -134,7 +134,7 @@
sprintf(buf, _("(%d bytes)"), d->p_fragsize * d->p_channels * d->p_resolution / 8);
gtk_label_set_text(GTK_LABEL(d->bufsizelabel_w), buf);
- sprintf(buf, _("Estimated audio delay: %f microseconds"), (double)(1000 * (d->p_fragsize) / d->p_mixfreq));
+ sprintf(buf, _("Estimated audio delay: %f milliseconds"), (double)(1000 * (d->p_fragsize) / d->p_mixfreq));
gtk_label_set_text(GTK_LABEL(d->estimatelabel_w), buf);
}
diff -urN soundtracker-0.5.4/app/drivers/alsa2-output.c soundtracker-0.5.5/app/drivers/alsa2-output.c
--- soundtracker-0.5.4/app/drivers/alsa2-output.c Sat Feb 19 11:58:34 2000
+++ soundtracker-0.5.5/app/drivers/alsa2-output.c Mon May 1 18:44:11 2000
@@ -135,7 +135,7 @@
sprintf(buf, _("(%d bytes)"), d->p_fragsize * d->p_channels * d->p_resolution / 8);
gtk_label_set_text(GTK_LABEL(d->bufsizelabel_w), buf);
- sprintf(buf, _("Estimated audio delay: %f microseconds"), (double)(1000 * (d->p_fragsize) / d->p_mixfreq));
+ sprintf(buf, _("Estimated audio delay: %f milliseconds"), (1000.0 * (double)(d->p_fragsize) / d->p_mixfreq));
gtk_label_set_text(GTK_LABEL(d->estimatelabel_w), buf);
}
diff -urN soundtracker-0.5.4/app/drivers/oss-output.c soundtracker-0.5.5/app/drivers/oss-output.c
--- soundtracker-0.5.4/app/drivers/oss-output.c Fri Mar 3 19:20:19 2000
+++ soundtracker-0.5.5/app/drivers/oss-output.c Mon May 1 18:45:47 2000
@@ -136,7 +136,7 @@
{
char buf[64];
- sprintf(buf, _("Estimated audio delay: %f microseconds"), (double)(1000 * (1 << d->p_fragsize)) / d->p_mixfreq);
+ sprintf(buf, _("Estimated audio delay: %f milliseconds"), (double)(1000 * (1 << d->p_fragsize)) / d->p_mixfreq);
gtk_label_set_text(GTK_LABEL(d->estimatelabel_w), buf);
}
diff -urN soundtracker-0.5.4/app/gui-settings.c soundtracker-0.5.5/app/gui-settings.c
--- soundtracker-0.5.4/app/gui-settings.c Sat Apr 29 17:19:09 2000
+++ soundtracker-0.5.5/app/gui-settings.c Wed May 10 16:50:54 2000
@@ -44,11 +44,14 @@
1,
1,
- 1,
+ 0,
+ 0,
+ 0,
0,
0,
1,
16,
+ 8,
1,
@@ -160,6 +163,24 @@
}
static void
+gui_settings_tempo_bpm_update_toggled (GtkWidget *widget)
+{
+ int o = gui_settings.tempo_bpm_update;
+ if(o != (gui_settings.tempo_bpm_update = GTK_TOGGLE_BUTTON(widget)->active)) {
+ gtk_widget_queue_resize(GTK_WIDGET(tracker));
+ }
+}
+
+static void
+gui_settings_auto_switch_toggled (GtkWidget *widget)
+{
+ int o = gui_settings.auto_switch;
+ if(o != (gui_settings.auto_switch = GTK_TOGGLE_BUTTON(widget)->active)) {
+ gtk_widget_queue_resize(GTK_WIDGET(tracker));
+ }
+}
+
+static void
gui_settings_use_aa_canvas_toggled (GtkWidget *widget)
{
gui_settings.gui_use_aa_canvas = GTK_TOGGLE_BUTTON(widget)->active;
@@ -197,6 +218,16 @@
tracker_redraw(tracker);
}
+static void
+gui_settings_highlight_rows_minor_changed (GtkSpinButton *spin)
+{
+ int n = gtk_spin_button_get_value_as_int(spin);
+
+ gui_settings.highlight_rows_minor_n = n;
+ if(gui_settings.highlight_rows)
+ tracker_redraw(tracker);
+}
+
void
gui_settings_dialog (void)
{
@@ -288,6 +319,20 @@
gtk_signal_connect(GTK_OBJECT(thing), "toggled",
GTK_SIGNAL_FUNC(gui_settings_channel_numbering_toggled), NULL);
+ thing = gtk_check_button_new_with_label(_("Tempo and BPM update"));
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(thing), gui_settings.tempo_bpm_update);
+ gtk_box_pack_start(GTK_BOX(vbox1), thing, FALSE, TRUE, 0);
+ gtk_widget_show(thing);
+ gtk_signal_connect(GTK_OBJECT(thing), "toggled",
+ GTK_SIGNAL_FUNC(gui_settings_tempo_bpm_update_toggled), NULL);
+
+ thing = gtk_check_button_new_with_label(_("Auto switch"));
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(thing), gui_settings.auto_switch);
+ gtk_box_pack_start(GTK_BOX(vbox1), thing, FALSE, TRUE, 0);
+ gtk_widget_show(thing);
+ gtk_signal_connect(GTK_OBJECT(thing), "toggled",
+ GTK_SIGNAL_FUNC(gui_settings_auto_switch_toggled), NULL);
+
thing = gtk_check_button_new_with_label(_("Use anti-aliased envelope editor"));
gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(thing), gui_settings.gui_use_aa_canvas);
gtk_box_pack_start(GTK_BOX(vbox1), thing, FALSE, TRUE, 0);
@@ -329,12 +374,18 @@
gtk_box_pack_start(GTK_BOX(box1), thing, FALSE, TRUE, 0);
gtk_widget_show(thing);
add_empty_hbox(box1);
- thing = extspinbutton_new(GTK_ADJUSTMENT(gtk_adjustment_new((double)gui_settings.highlight_rows_n, 1, 16, 1, 2, 0.0)), 0, 0);
+ thing = extspinbutton_new(GTK_ADJUSTMENT(gtk_adjustment_new((double)gui_settings.highlight_rows_n, 1, 32, 1, 2, 0.0)), 0, 0);
gtk_box_pack_start(GTK_BOX(box1), thing, FALSE, TRUE, 0);
gtk_widget_show(thing);
- gtk_spin_button_set_digits(GTK_SPIN_BUTTON(thing), 1);
+ gtk_spin_button_set_digits(GTK_SPIN_BUTTON(thing), 0);
gtk_signal_connect(GTK_OBJECT(thing), "changed",
GTK_SIGNAL_FUNC(gui_settings_highlight_rows_changed), NULL);
+ thing = extspinbutton_new(GTK_ADJUSTMENT(gtk_adjustment_new((double)gui_settings.highlight_rows_minor_n, 1, 16, 1, 2, 0.0)), 0, 0);
+ gtk_box_pack_start(GTK_BOX(box1), thing, FALSE, TRUE, 0);
+ gtk_widget_show(thing);
+ gtk_spin_button_set_digits(GTK_SPIN_BUTTON(thing), 0);
+ gtk_signal_connect(GTK_OBJECT(thing), "changed",
+ GTK_SIGNAL_FUNC(gui_settings_highlight_rows_minor_changed), NULL);
thing = gtk_hseparator_new();
gtk_widget_show(thing);
@@ -377,6 +428,8 @@
#else
thing = gtk_button_new_with_label (_ ("Close"));
#endif
+ GTK_WIDGET_SET_FLAGS(thing, GTK_CAN_DEFAULT);
+ gtk_window_set_default(GTK_WINDOW(configwindow), thing);
gtk_signal_connect (GTK_OBJECT (thing), "clicked",
GTK_SIGNAL_FUNC (gui_settings_close_requested), NULL);
gtk_box_pack_start (GTK_BOX (hbox), thing, FALSE, FALSE, 0);
@@ -402,11 +455,14 @@
prefs_get_int(f, "gui-asynchronous-editing", &gui_settings.asynchronous_editing);
prefs_get_int(f, "gui-show-zeroes", &gui_settings.show_zeroes);
prefs_get_int(f, "gui-channel-numbering", &gui_settings.channel_numbering);
+ prefs_get_int(f, "gui-tempo-bpm-update", &gui_settings.tempo_bpm_update);
+ prefs_get_int(f, "gui-auto-switch", &gui_settings.auto_switch);
prefs_get_int(f, "gui-display-scopes", &gui_settings.gui_display_scopes);
prefs_get_int(f, "gui-use-backing-store", &gui_settings.gui_use_backing_store);
prefs_get_int(f, "gui-use-aa-canvas", &gui_settings.gui_use_aa_canvas);
prefs_get_int(f, "tracker-highlight-rows", &gui_settings.highlight_rows);
prefs_get_int(f, "tracker-highlight-rows-n", &gui_settings.highlight_rows_n);
+ prefs_get_int(f, "tracker-highlight-rows-minor-n", &gui_settings.highlight_rows_minor_n);
prefs_get_int(f, "save-settings-on-exit", &gui_settings.save_settings_on_exit);
prefs_get_int(f, "tracker-update-frequency", &gui_settings.tracker_update_freq);
prefs_get_int(f, "scopes-update-frequency", &gui_settings.scopes_update_freq);
@@ -457,11 +513,14 @@
prefs_put_int(f, "gui-asynchronous-editing", gui_settings.asynchronous_editing);
prefs_put_int(f, "gui-show-zeroes", gui_settings.show_zeroes);
prefs_put_int(f, "gui-channel-numbering", gui_settings.channel_numbering);
+ prefs_put_int(f, "gui-tempo-bpm-update", gui_settings.tempo_bpm_update);
+ prefs_put_int(f, "gui-auto-switch", gui_settings.auto_switch);
prefs_put_int(f, "gui-display-scopes", gui_settings.gui_display_scopes);
prefs_put_int(f, "gui-use-backing-store", gui_settings.gui_use_backing_store);
prefs_put_int(f, "gui-use-aa-canvas", gui_settings.gui_use_aa_canvas);
prefs_put_int(f, "tracker-highlight-rows", gui_settings.highlight_rows);
prefs_put_int(f, "tracker-highlight-rows-n", gui_settings.highlight_rows_n);
+ prefs_put_int(f, "tracker-highlight-rows-minor-n", gui_settings.highlight_rows_minor_n);
prefs_put_int(f, "save-settings-on-exit", gui_settings.save_settings_on_exit);
prefs_put_int(f, "tracker-update-frequency", gui_settings.tracker_update_freq);
prefs_put_int(f, "scopes-update-frequency", gui_settings.scopes_update_freq);
diff -urN soundtracker-0.5.4/app/gui-settings.h soundtracker-0.5.5/app/gui-settings.h
--- soundtracker-0.5.4/app/gui-settings.h Sat Apr 29 17:19:09 2000
+++ soundtracker-0.5.5/app/gui-settings.h Wed May 10 16:48:06 2000
@@ -31,12 +31,15 @@
gboolean asynchronous_editing;
gboolean show_zeroes;
gboolean channel_numbering;
+ gboolean tempo_bpm_update;
+ gboolean auto_switch;
gboolean gui_display_scopes;
gboolean gui_use_backing_store;
gboolean gui_use_aa_canvas;
gboolean highlight_rows;
int highlight_rows_n;
+ int highlight_rows_minor_n;
gboolean save_settings_on_exit;
diff -urN soundtracker-0.5.4/app/gui-subs.c soundtracker-0.5.5/app/gui-subs.c
--- soundtracker-0.5.4/app/gui-subs.c Sat Apr 29 17:19:09 2000
+++ soundtracker-0.5.5/app/gui-subs.c Wed May 10 16:34:31 2000
@@ -227,7 +227,9 @@
{
int v = s->adjustment1->value;
gtk_adjustment_set_value(s->adjustment2, v);
- s->changedfunc(v);
+ if(!s->update_without_signal) {
+ s->changedfunc(v);
+ }
}
static void
@@ -241,7 +243,9 @@
gtk_adjustment_set_value(s->adjustment1, v);
}
}
- s->changedfunc(v);
+ if(!s->update_without_signal) {
+ s->changedfunc(v);
+ }
}
GtkWidget *
@@ -273,6 +277,8 @@
gtk_widget_show(thing);
gtk_signal_connect(GTK_OBJECT(thing), "changed",
GTK_SIGNAL_FUNC(gui_subs_slider_update_2), s);
+
+ s->update_without_signal = FALSE;
return box;
}
diff -urN soundtracker-0.5.4/app/gui-subs.h soundtracker-0.5.5/app/gui-subs.h
--- soundtracker-0.5.4/app/gui-subs.h Sat Apr 29 17:19:09 2000
+++ soundtracker-0.5.5/app/gui-subs.h Wed May 10 16:34:31 2000
@@ -114,6 +114,7 @@
gui_subs_slider_type type;
GtkAdjustment *adjustment1, *adjustment2;
GtkWidget *slider, *spin;
+ gboolean update_without_signal;
} gui_subs_slider;
GtkWidget * gui_subs_create_slider (gui_subs_slider *s);
diff -urN soundtracker-0.5.4/app/gui.c soundtracker-0.5.5/app/gui.c
--- soundtracker-0.5.4/app/gui.c Sat Apr 29 17:19:09 2000
+++ soundtracker-0.5.5/app/gui.c Wed May 10 16:42:12 2000
@@ -84,10 +84,10 @@
static void tempo_slider_changed (int value);
static void bpm_slider_changed (int value);
-static gui_subs_slider tempo_slider = {
+gui_subs_slider tempo_slider = {
N_("Tempo"), 1, 31, tempo_slider_changed, GUI_SUBS_SLIDER_SPIN_ONLY
};
-static gui_subs_slider bpm_slider = {
+gui_subs_slider bpm_slider = {
"BPM", 32, 255, bpm_slider_changed, GUI_SUBS_SLIDER_SPIN_ONLY
};
@@ -132,6 +132,8 @@
static void offset_current_instrument(int offset);
static void offset_current_sample(int offset);
+static void gui_auto_switch_page (void);
+
static void
gui_mixer_play_pattern (int pattern,
int row,
@@ -173,6 +175,7 @@
{
if(reply == 0) {
gui_load_xm((gchar*)data);
+ gui_auto_switch_page();
}
}
@@ -183,6 +186,7 @@
if(reply == 0) {
XM_Save(xm, (gchar*)data, FALSE);
xm->modified = 0;
+ gui_auto_switch_page();
}
}
@@ -190,8 +194,10 @@
gui_save_song_callback (gint reply,
gpointer data)
{
- if(reply == 0)
+ if(reply == 0) {
XM_Save(xm, (gchar*)data, TRUE);
+ gui_auto_switch_page();
+ }
}
static void
@@ -344,7 +350,29 @@
if(ctrl) {
gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_jump), keyval - '0');
handled = TRUE;
- }
+ }
+ if(alt) {
+ switch(keyval)
+ {
+ case '1':
+ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 0);
+ break;
+ case '2':
+ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 1);
+ break;
+ case '3':
+ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 2);
+ break;
+ case '4':
+ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 3);
+ break;
+ case '5':
+ gtk_notebook_set_page(GTK_NOTEBOOK(notebook), 4);
+ break;
+ default:
+ }
+ handled = TRUE;
+ }
break;
case GDK_Left:
if(ctrl) {
@@ -622,9 +650,7 @@
}
void
-gui_update_player_pos (double songtime,
- int nsongpos,
- int npatpos)
+gui_update_player_pos (const audio_player_pos *p)
{
int m = xm_get_modified();
@@ -634,14 +660,14 @@
/* This test prevents feedback which occurs when manually changing the song position;
if the audio thread doesn't follow immediately, the song position would be set back
to its old position some lines below... */
- if(set_songpos_count != 0 || (set_songpos_wait_time != -1.0 && songtime < set_songpos_wait_time))
+ if(set_songpos_count != 0 || (set_songpos_wait_time != -1.0 && p->time < set_songpos_wait_time))
return;
set_songpos_wait_time = -1.0;
- if(gui_playing_mode == PLAYING_SONG && nsongpos != songpos) {
+ if(gui_playing_mode == PLAYING_SONG && p->songpos != songpos) {
// This will not be executed if the user has manually changed the song position
- songpos = nsongpos;
+ songpos = p->songpos;
playlist_set_position(playlist, songpos);
if(!ASYNCEDIT) {
gui_set_current_pattern(xm->pattern_order_table[songpos]);
@@ -650,10 +676,20 @@
if(!ASYNCEDIT) {
if(gui_playing_mode != PLAYING_NOTE) {
- tracker_set_patpos(tracker, npatpos);
+ tracker_set_patpos(tracker, p->patpos);
}
}
+ if(gui_settings.tempo_bpm_update) {
+ tempo_slider.update_without_signal = TRUE;
+ gui_subs_set_slider_value(&tempo_slider, p->tempo);
+ tempo_slider.update_without_signal = FALSE;
+
+ bpm_slider.update_without_signal = TRUE;
+ gui_subs_set_slider_value(&bpm_slider, p->bpm);
+ bpm_slider.update_without_signal = FALSE;
+ }
+
if(notebook_current_page == 0) {
gdk_flush(); /* X drawing accumulates otherwise and makes pattern scrolling rather non-realtime :) */
}
@@ -1166,6 +1202,14 @@
{
gtk_notebook_set_page(GTK_NOTEBOOK(notebook),
0);
+}
+
+void
+gui_auto_switch_page (void)
+{
+ if(gui_settings.auto_switch)
+ gtk_notebook_set_page(GTK_NOTEBOOK(notebook),
+ 1);
}
int
diff -urN soundtracker-0.5.4/app/gui.h soundtracker-0.5.5/app/gui.h
--- soundtracker-0.5.4/app/gui.h Sun Apr 9 20:41:19 2000
+++ soundtracker-0.5.5/app/gui.h Wed May 10 16:27:23 2000
@@ -23,6 +23,8 @@
#define _GUI_H
#include
+#include "gui-subs.h"
+#include "audio.h"
struct STSample;
@@ -94,9 +96,7 @@
int gui_get_current_jump_value (void);
int gui_get_current_octave_value (void);
-void gui_update_player_pos (double songtime,
- int nsongpos,
- int npatpos);
+void gui_update_player_pos (const audio_player_pos *p);
void gui_clipping_indicator_update (double songtime);
void gui_init_xm (int new_xm);
diff -urN soundtracker-0.5.4/app/main.c soundtracker-0.5.5/app/main.c
--- soundtracker-0.5.4/app/main.c Sat Apr 29 17:23:43 2000
+++ soundtracker-0.5.5/app/main.c Tue May 16 15:29:53 2000
@@ -37,6 +37,7 @@
#include "menubar.h"
#include "track-editor.h"
#include "midi.h"
+#include "midi-settings.h"
#include
#include
@@ -173,6 +174,7 @@
audioconfig_load_config();
track_editor_load_config();
#if defined(DRIVER_ALSA_050)
+ midi_load_config();
midi_init();
#endif
@@ -190,7 +192,9 @@
gui_settings_save_config_always();
tips_dialog_save_settings();
track_editor_save_config();
-
+#if defined(DRIVER_ALSA_050)
+ midi_save_config();
+#endif
return 0;
} else {
fprintf(stderr, "gui_init() failed.\n");
diff -urN soundtracker-0.5.4/app/menubar.c soundtracker-0.5.5/app/menubar.c
--- soundtracker-0.5.4/app/menubar.c Sat Apr 29 17:19:09 2000
+++ soundtracker-0.5.5/app/menubar.c Tue May 16 15:29:53 2000
@@ -42,6 +42,7 @@
#include "file-operations.h"
#include "instrument-editor.h"
#include "tracker-settings.h"
+#include "midi-settings.h"
#ifdef USE_GNOME
#include
@@ -195,6 +196,9 @@
keys_save_config();
audioconfig_save_config();
trackersettings_write_settings();
+#if defined(DRIVER_ALSA_050)
+ midi_save_config();
+#endif
}
static void
@@ -385,6 +389,12 @@
GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_PREF, 0, 0, NULL },
{ GNOME_APP_UI_ITEM, N_("_GUI Configuration..."), NULL, gui_settings_dialog, NULL, NULL,
GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_PREF, 0, 0, NULL },
+ /* Define a constant for the index of the MIDI settings item.
+ Will allow to deactivate (grey out) this menu item
+ if MIDI is not supported. See menubar_create(). */
+#define SETTINGS_MENU_MIDI_INDEX 6
+ { GNOME_APP_UI_ITEM, N_("_MIDI Configuration..."), NULL, midi_settings_dialog, NULL, NULL,
+ GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_PREF, 0, 0, NULL },
GNOMEUIINFO_SEPARATOR,
@@ -428,14 +438,19 @@
#ifdef NO_AUDIOFILE
gtk_widget_set_sensitive(file_menu[SAVE_MOD_AS_WAV_POSITION].widget, FALSE);
#endif
+
+#if !defined(DRIVER_ALSA_050)
+ gtk_widget_set_sensitive(settings_menu[SETTINGS_MENU_MIDI_INDEX].widget,
+ FALSE);
+#endif
}
void
menubar_init_prefs ()
{
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(settings_menu[0].widget), gui_settings.gui_display_scopes);
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(settings_tracker_menu[0].widget), gui_settings.gui_use_backing_store);
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(settings_menu[8].widget), gui_settings.save_settings_on_exit);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(settings_menu[0].widget), gui_settings.gui_display_scopes);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(settings_tracker_menu[0].widget), gui_settings.gui_use_backing_store);
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(settings_menu[9].widget), gui_settings.save_settings_on_exit);
}
void
@@ -501,6 +516,7 @@
{ N_("/Settings/_Keyboard Configuration..."), NULL, keys_dialog, 0 },
{ N_("/Settings/_Audio Configuration..."), NULL, audioconfig_dialog, 0 },
{ N_("/Settings/_GUI Configuration..."), NULL, gui_settings_dialog, 0 },
+ { N_("/Settings/_MIDI Configuration..."), NULL, midi_settings_dialog, 0 },
{ N_("/Settings/-"), NULL, NULL, 0, "" },
{ N_("/Settings/_Save Settings now"), NULL, menubar_save_settings_now, 0 },
{ N_("/Settings/Save Settings on _Exit"), NULL, menubar_save_settings_on_exit_toggled, 0, "" },
diff -urN soundtracker-0.5.4/app/midi-settings.c soundtracker-0.5.5/app/midi-settings.c
--- soundtracker-0.5.4/app/midi-settings.c Thu Jan 1 01:00:00 1970
+++ soundtracker-0.5.5/app/midi-settings.c Tue May 16 15:29:53 2000
@@ -0,0 +1,451 @@
+/*
+ * Copyright (C) 2000 Luc Tanguay
+ * Copyright (C) 1998-2000 Michael Krause
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include
+
+#include
+#ifdef USE_GNOME
+#include
+#endif
+
+
+#if !defined(DRIVER_ALSA_050)
+
+/*
+ * To allow proper linking of menubar.o,
+ * define rudimentary midi_settings_dialog().
+ * The menu should be inactive when ALSA is not supported.
+ * See menubar_create() in menubar.c.
+ */
+
+void
+midi_settings_dialog (void)
+{
+}
+
+#else
+
+#include "i18n.h"
+#include "gui.h"
+
+#include "preferences.h"
+#include "midi-settings.h"
+#include "midi.h"
+
+/* Global variables. */
+
+midi_prefs midi_settings = {
+ 64, /* input_client */
+ 0, /* input_port */
+ 0, /* channel_enabled */
+ 1 /* volume_enabled */
+};
+
+/* New settings set by the user thru the dialog box. */
+
+midi_prefs new_midi_settings;
+
+/* Page numbers for the MIDI settings property box. */
+
+enum MidiSettingsPage {
+ MIDI_SETTINGS_INPUT_PAGE = 0,
+ MIDI_SETTINGS_OUTPUT_PAGE
+};
+
+/* Local variables */
+
+/* MIDI Dialog Box */
+
+static GtkWidget* configwindow = NULL;
+/* To facilitate MIDI settings manipulation. */
+static GtkWidget* midi_input_client_spin_button = NULL;
+static GtkWidget* midi_input_port_spin_button = NULL;
+
+/* Local functions prototypes */
+
+/************************************************************************/
+
+/*****************************************************
+ * Load MIDI configuration parameters.
+ */
+
+void
+midi_load_config (void)
+{
+ char buf[256];
+ FILE *f;
+
+
+ sprintf(buf, "%s/midi", prefs_get_prefsdir());
+
+ f = fopen(buf, "rb");
+ if (f) {
+ prefs_get_int(f, "input-client",
+ &midi_settings.input_client);
+ prefs_get_int(f, "input-port",
+ &midi_settings.input_port);
+ prefs_get_int(f, "input-channel-enabled",
+ &midi_settings.channel_enabled);
+ prefs_get_int(f, "input-volume-enabled",
+ &midi_settings.volume_enabled);
+
+ fclose(f);
+ }
+
+} /* midi_load_config() */
+
+/*****************************************************
+ * Save MIDI configuration parameters.
+ */
+
+void
+midi_save_config (void)
+{
+ char buf[256];
+ FILE *f;
+
+
+ prefs_check_prefs_dir();
+ sprintf(buf, "%s/midi", prefs_get_prefsdir());
+
+ f = fopen(buf, "wb");
+ if(!f)
+ return;
+
+ prefs_put_int(f, "input-client", midi_settings.input_client);
+ prefs_put_int(f, "input-port", midi_settings.input_port);
+ prefs_put_int(f, "input-channel-enabled", midi_settings.channel_enabled);
+ prefs_put_int(f, "input-volume-enabled", midi_settings.volume_enabled);
+
+ fclose(f);
+
+} /* midi_save_config() */
+
+/***************************************************************************
+ * MIDI configuration dialog functions.
+ **************************************************************************/
+
+/****************************************
+ * MIDI dialog box callbacks.
+ */
+
+/*
+ Process the close event i.e. close the dialog.
+*/
+
+static void
+dialog_close_callback(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+ /* g_warning( "dialog_close_callback() called...\n"); */
+
+ if (configwindow != NULL ) {
+ gtk_widget_destroy(configwindow);
+ configwindow = NULL;
+
+ if (midi_input_client_spin_button != NULL) {
+ midi_input_client_spin_button = NULL;
+ }
+
+ if (midi_input_port_spin_button != NULL) {
+ midi_input_port_spin_button = NULL;
+ }
+ }
+
+}
+
+static void
+midi_input_settings_help()
+{
+ GtkWidget *box;
+ static const char help_text[] =
+ "button description\n"
+ "------- ---------------------------------------------\n"
+ "volume enable volume information in MIDI events\n"
+ "channel enable channel information from MIDI events\n"
+ " to be received in SoundTracker\n"
+ "";
+
+ box = gnome_message_box_new( help_text,
+ GNOME_MESSAGE_BOX_INFO,
+ GNOME_STOCK_BUTTON_OK,
+ NULL);
+ (void)gnome_dialog_run( GNOME_DIALOG(box));
+}
+
+static void
+dialog_help_callback (GnomePropertyBox *pbox, gint page_num)
+{
+
+ switch (page_num){
+ case MIDI_SETTINGS_INPUT_PAGE:
+ midi_input_settings_help();
+ break;
+ case MIDI_SETTINGS_OUTPUT_PAGE:
+ /*apply_changes_page_1 (property_box);*/
+ break;
+ default:
+ }
+}
+
+static void
+dialog_apply_callback (GnomePropertyBox *pbox, gint page_num)
+{
+ gboolean reinit_midi = FALSE;
+
+#if 0
+ g_warning( "dialog_apply_callback() called...\n");
+ g_warning( "new volume %d, channel %d client %d port %d\n",
+ new_midi_settings.volume_enabled,
+ new_midi_settings.channel_enabled,
+ new_midi_settings.input_client,
+ new_midi_settings.input_port);
+#endif
+
+ switch (page_num){
+ case MIDI_SETTINGS_INPUT_PAGE:
+
+ /*
+ If the user changed the input client or port,
+ get confirmation.
+ */
+
+ if ( new_midi_settings.input_client != midi_settings.input_client
+ || new_midi_settings.input_port != midi_settings.input_port) {
+
+ GtkWidget *mbox;
+ int ret;
+
+ mbox = gnome_message_box_new( "Client and/or port changed. Reinitialize MIDI interface ?",
+ GNOME_MESSAGE_BOX_QUESTION,
+ GNOME_STOCK_BUTTON_YES,
+ GNOME_STOCK_BUTTON_NO,
+ NULL);
+
+ ret = gnome_dialog_run( GNOME_DIALOG(mbox));
+
+ switch (ret) {
+ case 0:
+ reinit_midi = TRUE;
+ break;
+ case 1:
+ /* cancel the changes */
+ /* no break. Go to 'default' case... */
+ default:
+ /* dialog closed by user. Cancel changes to client/port. */
+ new_midi_settings.input_client = midi_settings.input_client;
+ new_midi_settings.input_port = midi_settings.input_port;
+
+ if (midi_input_client_spin_button != NULL) {
+ gtk_spin_button_set_value( GTK_SPIN_BUTTON(midi_input_client_spin_button), midi_settings.input_client);
+ }
+
+ if (midi_input_port_spin_button != NULL) {
+ gtk_spin_button_set_value( GTK_SPIN_BUTTON(midi_input_port_spin_button), midi_settings.input_port);
+ }
+
+ break;
+ }
+ }
+
+ /* Copy the new settings into the settings structure. */
+
+ midi_settings = new_midi_settings;
+
+ if ( reinit_midi ) {
+ g_warning( "Reinitializing MIDI interface");
+ midi_init();
+ }
+ break;
+
+ case MIDI_SETTINGS_OUTPUT_PAGE:break;
+ break;
+
+ default:
+ }
+}
+
+/*
+ * MIDI dialog box functions.
+ */
+
+static void
+volume_toggled( GtkWidget *window)
+{
+
+ if ( new_midi_settings.volume_enabled ) {
+ new_midi_settings.volume_enabled = 0;
+ } else {
+ new_midi_settings.volume_enabled = 1;
+ }
+
+ gnome_property_box_changed(GNOME_PROPERTY_BOX(configwindow));
+
+}
+
+static void
+channel_toggled( GtkWidget *window)
+{
+
+ if ( new_midi_settings.channel_enabled ) {
+ new_midi_settings.channel_enabled = 0;
+ } else {
+ new_midi_settings.channel_enabled = 1;
+ }
+
+ gnome_property_box_changed(GNOME_PROPERTY_BOX(configwindow));
+
+}
+
+static void
+input_client_changed( GtkWidget *window)
+{
+ new_midi_settings.input_client = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(window));
+
+ gnome_property_box_changed(GNOME_PROPERTY_BOX(configwindow));
+}
+
+static void
+input_port_changed( GtkWidget *window)
+{
+ new_midi_settings.input_port = gtk_spin_button_get_value_as_int( GTK_SPIN_BUTTON(window));
+
+ gnome_property_box_changed(GNOME_PROPERTY_BOX(configwindow));
+}
+
+/******************************************
+ * MIDI dialog box called.
+ * Use a GnomePropertyBox with page #1 is for input settings,
+ * and page #2 is for output settings (for future enhancements).
+ */
+
+void
+midi_settings_dialog (void)
+{
+ GtkWidget *input_box;
+ GtkWidget *thing;
+ GtkWidget *hbox;
+ GtkAdjustment *adj;
+
+#ifdef USE_GNOME
+ if ( configwindow != NULL) {
+ gdk_window_raise(configwindow->window);
+ return;
+ }
+
+ /* Start with current settings */
+
+ new_midi_settings = midi_settings;
+
+ /*
+ * Create a PropertyBox.
+ * The OK button generates "apply" then "close" events.
+ * The "apply" should immediately make any changes the user has requested.
+ */
+
+ configwindow = gnome_property_box_new();
+ gnome_dialog_set_parent(GNOME_DIALOG(configwindow),GTK_WINDOW(mainwindow));
+ gtk_window_set_title( GTK_WINDOW(configwindow), "MIDI Settings");
+
+ gtk_signal_connect (GTK_OBJECT (configwindow), "apply",
+ GTK_SIGNAL_FUNC (dialog_apply_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (configwindow), "help",
+ GTK_SIGNAL_FUNC (dialog_help_callback), NULL);
+ gtk_signal_connect (GTK_OBJECT (configwindow), "close",
+ GTK_SIGNAL_FUNC (dialog_close_callback), NULL);
+
+ /* Create the Input page */
+
+ input_box = gtk_vbox_new(FALSE, 2);
+ gtk_container_border_width(GTK_CONTAINER(input_box), 4);
+
+ thing = gtk_check_button_new_with_label(_("Volume"));
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(thing),
+ midi_settings.volume_enabled);
+ gtk_box_pack_start(GTK_BOX(input_box), thing, FALSE, TRUE, 0);
+
+ gtk_signal_connect(GTK_OBJECT(thing), "toggled",
+ GTK_SIGNAL_FUNC(volume_toggled), NULL);
+
+ thing = gtk_check_button_new_with_label(_("Channel"));
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(thing),
+ midi_settings.channel_enabled);
+ gtk_box_pack_start(GTK_BOX(input_box), thing, FALSE, TRUE, 0);
+ gtk_signal_connect(GTK_OBJECT(thing), "toggled",
+ GTK_SIGNAL_FUNC(channel_toggled), NULL);
+
+ /* Create a hbox for client number entry. */
+ /* The hbox will hold a label and a spin button. */
+
+ hbox = gtk_hbox_new( FALSE, 4);
+ gtk_box_pack_start(GTK_BOX(input_box), hbox, FALSE, TRUE, 0);
+
+ thing = gtk_label_new( _("Client number :"));
+ gtk_box_pack_start( GTK_BOX(hbox), thing, FALSE, FALSE, 4);
+
+ adj=(GtkAdjustment *)gtk_adjustment_new((gfloat)midi_settings.input_client,
+ 0.0,
+ 255.0,
+ 1.0,
+ 1.0,
+ 0.0);
+ midi_input_client_spin_button = gtk_spin_button_new( adj, 0, 0);
+ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(midi_input_client_spin_button), 1);
+ gtk_spin_button_set_numeric( GTK_SPIN_BUTTON(midi_input_client_spin_button), 1);
+ gtk_box_pack_start( GTK_BOX(hbox), midi_input_client_spin_button, FALSE, TRUE, 0);
+
+ gtk_signal_connect(GTK_OBJECT(midi_input_client_spin_button), "changed",
+ GTK_SIGNAL_FUNC(input_client_changed), NULL);
+
+ /* Create a hbox for port number entry. */
+ /* The hbox will hold a label and a spin button. */
+
+ hbox = gtk_hbox_new( FALSE, 4);
+ gtk_box_pack_start(GTK_BOX(input_box), hbox, FALSE, TRUE, 0);
+
+ thing = gtk_label_new( _("Port number :"));
+ gtk_box_pack_start( GTK_BOX(hbox), thing, FALSE, FALSE, 4);
+
+ adj=(GtkAdjustment *)gtk_adjustment_new((gfloat)midi_settings.input_port,
+ 0.0,
+ 255.0,
+ 1.0,
+ 1.0,
+ 0.0);
+ midi_input_port_spin_button = gtk_spin_button_new( adj, 0, 0);
+ gtk_spin_button_set_wrap( GTK_SPIN_BUTTON(midi_input_port_spin_button), 1);
+ gtk_spin_button_set_numeric( GTK_SPIN_BUTTON(midi_input_port_spin_button), 1);
+ gtk_box_pack_start( GTK_BOX(hbox), midi_input_port_spin_button, FALSE, TRUE, 0);
+
+ gtk_signal_connect(GTK_OBJECT(midi_input_port_spin_button), "changed",
+ GTK_SIGNAL_FUNC(input_port_changed), NULL);
+
+ /* The value returned by ...append_page() is not used... */
+
+ (void)gnome_property_box_append_page(
+ GNOME_PROPERTY_BOX(configwindow),
+ input_box,
+ gtk_label_new("Input"));
+
+ gtk_widget_show_all (configwindow);
+#endif
+
+} /* midi_settings_dialog() */
+
+#endif /* defined(DRIVER_ALSA_050) */
+
diff -urN soundtracker-0.5.4/app/midi-settings.h soundtracker-0.5.5/app/midi-settings.h
--- soundtracker-0.5.4/app/midi-settings.h Thu Jan 1 01:00:00 1970
+++ soundtracker-0.5.5/app/midi-settings.h Tue May 16 15:29:53 2000
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2000 Luc Tanguay
+ * Copyright (C) 1998-2000 Michael Krause
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MIDI_SETTINGS_H
+#define _MIDI_SETTINGS_H
+
+#include
+
+/*** Structures ***/
+
+/* MIDI settings in configuration file .soundtracker/midi */
+
+typedef struct {
+ gint input_client;
+ gint input_port;
+ gboolean channel_enabled;
+ gboolean volume_enabled;
+} midi_prefs;
+
+/* Exported variables */
+
+extern midi_prefs midi_settings;
+
+/* Function prototypes */
+
+void midi_load_config(void);
+void midi_save_config(void);
+
+void midi_settings_dialog( void);
+
+#endif /* _MIDI_SETTINGS_H */
diff -urN soundtracker-0.5.4/app/midi-utils.c soundtracker-0.5.5/app/midi-utils.c
--- soundtracker-0.5.4/app/midi-utils.c Mon Mar 27 12:20:50 2000
+++ soundtracker-0.5.5/app/midi-utils.c Tue May 16 15:29:53 2000
@@ -24,6 +24,10 @@
#include
#include "midi-utils.h"
+/* Global variables. */
+
+/* Local variables */
+
/* Next array taken from alsa-lib-0.5.5/test/seq-decode.c */
static char *event_names[256] = {
diff -urN soundtracker-0.5.4/app/midi.c soundtracker-0.5.5/app/midi.c
--- soundtracker-0.5.4/app/midi.c Sun Apr 9 20:00:39 2000
+++ soundtracker-0.5.5/app/midi.c Tue May 16 15:29:53 2000
@@ -30,6 +30,7 @@
#include
#include "midi.h"
#include "midi-utils.h"
+#include "midi-settings.h"
#include "gui.h"
#include "tracker.h"
#include "xm.h"
@@ -66,12 +67,7 @@
/* Handle to sequencer device. */
static snd_seq_t *midi_handle = NULL;
-
-/* Number and port of kernel-level client we will receive data from. */
-/* Needs to be more dynamic... */
-
-static int src_client = 64;
-static int src_port = 0;
+static gint midi_file_tag = -1;
/* Count the number of notes on to later turn them off gracefully...*/
@@ -103,6 +99,18 @@
int client;
+ if (midi_handle != NULL ) {
+ g_print( "Reinitializing MIDI input\n");
+
+ if (midi_file_tag >= 0) {
+ gdk_input_remove( midi_file_tag);
+ midi_file_tag = -1;
+ }
+
+ close_handle( midi_handle);
+ midi_handle = NULL;
+ }
+
/* Open the sequencer device, in non-block mode.
Don't use O_NONBLOCK here, it crashes the application
as for ALSA 0.5.5. (LT 15-mar-2000) */
@@ -119,6 +127,7 @@
rc = snd_seq_block_mode( midi_handle, 0);
if (rc < 0) {
close_handle( midi_handle);
+ midi_handle = NULL;
g_print( "error disabling sequencer block mode (%s)\n",
snd_strerror(rc));
return;
@@ -130,6 +139,7 @@
if (client < 0) {
close_handle( midi_handle);
+ midi_handle = NULL;
g_print( "error naming sequencer client (%s)\n", snd_strerror(client));
return;
}
@@ -141,6 +151,7 @@
if (rc < 0) {
close_handle( midi_handle);
+ midi_handle = NULL;
g_print( "error naming sequencer client (%s)\n",snd_strerror(rc));
return;
}
@@ -157,6 +168,7 @@
if (rc < 0) {
close_handle( midi_handle);
+ midi_handle = NULL;
g_print( "error creating sequencer port (%s)\n", snd_strerror(rc));
return;
}
@@ -164,8 +176,8 @@
/* Subscribe to the kernel client. */
memset( &sub, 0, sizeof(sub));
- sub.sender.client = src_client;
- sub.sender.port = src_port;
+ sub.sender.client = midi_settings.input_client;
+ sub.sender.port = midi_settings.input_port;
sub.dest.client = client;
sub.dest.port = port.port;
@@ -173,6 +185,7 @@
if (rc < 0) {
close_handle( midi_handle);
+ midi_handle = NULL;
g_print( "error subscribing to client %d port %d (%s)\n",
sub.sender.client, sub.sender.port, snd_strerror(rc));
return;
@@ -180,14 +193,15 @@
/* Install callback to process MIDI input. */
- rc = gdk_input_add( snd_seq_file_descriptor( midi_handle),
+ midi_file_tag = gdk_input_add( snd_seq_file_descriptor( midi_handle),
GDK_INPUT_READ,
(GdkInputFunction)midi_in_cb,
midi_handle);
- if (rc < 0) {
+ if (midi_file_tag < 0) {
close_handle( midi_handle);
+ midi_handle = NULL;
- g_print( "error installing MIDI input callback (%s)\n",g_strerror(rc));
+ g_print( "error installing MIDI input callback (%s)\n",g_strerror(midi_file_tag));
return;
}
@@ -349,7 +363,9 @@
memset( ¬e, 0, sizeof(note));
note.note = xm_note_2_midi_note(XM_PATTERN_NOTE_OFF);
- note.channel = pcontrol->channel;
+ if (midi_settings.channel_enabled) {
+ note.channel = pcontrol->channel;
+ }
/* Based on MIDI standard, a value less than 63 means
sustain off. */
@@ -393,7 +409,32 @@
static void midi_process_note_on( snd_seq_ev_note *pnote)
{
gint note;
+ int channel;
+ int volume;
+ gboolean note_on = pnote->velocity > 0 ? 1 : 0;
+
+ /* Set local value for channel. */
+ if (midi_settings.channel_enabled) {
+ channel = (int)pnote->channel;
+ } else {
+ channel = tracker->cursor_ch;
+ }
+
+ /* Set local value for volume. */
+ /* The value -1 means don't change the volume in the pattern. */
+
+ if (midi_settings.volume_enabled) {
+ volume = (int)pnote->velocity;
+ /* Since XM volume range is limited, adjust it here. */
+ if (volume < XM_NOTE_VOLUME_MIN) {
+ volume = XM_NOTE_VOLUME_MIN;
+ } else if (volume > XM_NOTE_VOLUME_MAX) {
+ volume = XM_NOTE_VOLUME_MAX;
+ }
+ } else {
+ volume = -1;
+ }
/* Perform some validation on the event.
- is the note a valid XM note ?
@@ -407,22 +448,22 @@
return;
}
- if (pnote->channel > tracker->num_channels) {
- g_warning( "MIDI channel too high");
+ if (channel > tracker->num_channels) {
+ g_warning( "Channel out of range");
return;
}
if ( 0 ) {
g_print( "note %d velocity %d channel %d, xmnote %d\n",
pnote->note, pnote->velocity,
- pnote->channel,
+ channel,
note);
}
/* If necessary, jump to channel */
- if (tracker->cursor_ch != pnote->channel) {
- int diff = pnote->channel - tracker->cursor_ch;
+ if (tracker->cursor_ch != channel) {
+ int diff = channel - tracker->cursor_ch;
/*g_warning("MIDI channel and current channel are not the same..."); */
@@ -431,7 +472,7 @@
/* Play the note. Record it if we're in the track editor. */
- if ( pnote->velocity > 0) {
+ if ( note_on ) {
int row;
XMNote *xmnote;
@@ -441,11 +482,11 @@
/* Play the note in the channel specified by the MIDI channel. */
- gui_play_note( pnote->channel, note);
+ gui_play_note( channel, note);
/* Give warning when MIDI channel and cursor channel are different. */
- if(tracker->cursor_ch != pnote->channel) {
+ if(tracker->cursor_ch != channel) {
g_warning( "MIDI channel and current channel are not the same...");
}
@@ -464,11 +505,14 @@
/* Get and set current XM note pitch. */
- xmnote = &(tracker->curpattern->channels[pnote->channel][row]);
+ xmnote = &(tracker->curpattern->channels[channel][row]);
xmnote->note = note;
xmnote->instrument = gui_get_current_instrument();
-
+ if ( volume >= 0 ) {
+ xmnote->volume = volume;
+ }
+
/* Redraw screen and if not in ASYNCEDIT mode,
jump to next position in the channel. */
@@ -488,7 +532,7 @@
nb_notes_on--;
if (nb_notes_on <= 0) {
- gui_play_note_keyoff( pnote->channel);
+ gui_play_note_keyoff( channel);
nb_notes_on = 0;
}
}
diff -urN soundtracker-0.5.4/app/midi.h soundtracker-0.5.5/app/midi.h
--- soundtracker-0.5.4/app/midi.h Mon Mar 27 12:21:39 2000
+++ soundtracker-0.5.5/app/midi.h Tue May 16 15:29:53 2000
@@ -26,6 +26,10 @@
#include
+/*** Structures ***/
+
+/* Function prototypes */
+
void midi_init (void);
#endif
diff -urN soundtracker-0.5.4/app/mixers/Makefile.in soundtracker-0.5.5/app/mixers/Makefile.in
--- soundtracker-0.5.4/app/mixers/Makefile.in Sat Apr 29 17:38:12 2000
+++ soundtracker-0.5.5/app/mixers/Makefile.in Sat May 27 10:52:44 2000
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4a from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -46,10 +46,9 @@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@@ -129,7 +128,7 @@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = gtar
+TAR = tar
GZIP_ENV = --best
SOURCES = $(libmixers_a_SOURCES)
OBJECTS = $(libmixers_a_OBJECTS)
@@ -215,7 +214,7 @@
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -248,7 +247,7 @@
all-am: Makefile $(LIBRARIES)
all-redirect: all-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
diff -urN soundtracker-0.5.4/app/sample-display.c soundtracker-0.5.5/app/sample-display.c
--- soundtracker-0.5.4/app/sample-display.c Sat Feb 19 11:58:33 2000
+++ soundtracker-0.5.5/app/sample-display.c Sat May 13 06:16:35 2000
@@ -56,6 +56,10 @@
static guint sample_display_signals[LAST_SIGNAL] = { 0 };
+static int sample_display_startoffset_to_xpos (SampleDisplay *s,
+ int offset);
+
+
void
sample_display_enable_zero_line (SampleDisplay *s,
gboolean enable)
@@ -190,6 +194,11 @@
sample_display_set_mixer_position (SampleDisplay *s,
int offset)
{
+ GdkRectangle area2 = { 0, 0, 0, s->height };
+ int i, x;
+ const int x_min = 0;
+ const int x_max = s->width;
+
g_return_if_fail(s != NULL);
g_return_if_fail(IS_SAMPLE_DISPLAY(s));
@@ -198,11 +207,22 @@
if(offset != s->mixerpos) {
s->mixerpos = offset;
- gtk_widget_queue_draw(GTK_WIDGET(s));
+ if(s->mixerpos != s->old_mixerpos) {
+ /* Redraw area of old position, redraw area of new position. */
+ for(i = 0; i < 2; i++) {
+ if(s->old_mixerpos >= s->win_start && s->old_mixerpos < s->win_start + s->win_length) {
+ x = sample_display_startoffset_to_xpos(s, s->old_mixerpos);
+ area2.x = MIN(x_max - 1, MAX(x_min, x - 3));
+ area2.width = 7;
+ gtk_widget_queue_draw_area(GTK_WIDGET(s), area2.x, area2.y,
+ area2.width, area2.height);
+ }
+ s->old_mixerpos = s->mixerpos;
+ }
+ }
}
}
-
void
sample_display_set_window (SampleDisplay *s,
int start,
@@ -488,7 +508,7 @@
{
SampleDisplay *s = SAMPLE_DISPLAY(widget);
GdkRectangle area2 = { 0, 0, 0, s->height };
- int i, x;
+ int x;
const int x_min = area->x;
const int x_max = area->x + area->width;
@@ -535,18 +555,8 @@
s->old_ss = s->sel_start;
s->old_se = s->sel_end;
- }
-
- if(s->mixerpos != s->old_mixerpos) {
- for(i = 0; i < 2; i++) {
- if(s->old_mixerpos >= s->win_start && s->old_mixerpos < s->win_start + s->win_length) {
- x = sample_display_startoffset_to_xpos(s, s->old_mixerpos);
- area2.x = MIN(x_max - 1, MAX(x_min, x - 3));
- area2.width = 7;
- sample_display_draw_main(widget, &area2);
- }
- s->old_mixerpos = s->mixerpos;
- }
+ } else {
+ sample_display_draw_main(widget, area);
}
}
diff -urN soundtracker-0.5.4/app/sample-editor.c soundtracker-0.5.5/app/sample-editor.c
--- soundtracker-0.5.4/app/sample-editor.c Sat Apr 15 18:57:33 2000
+++ soundtracker-0.5.5/app/sample-editor.c Sat May 27 10:31:13 2000
@@ -79,6 +79,7 @@
static GtkWidget *volrampwindow = NULL;
static GtkWidget *sample_editor_volramp_spin_w[2];
+static int sample_editor_volramp_last_values[2] = { 100, 100 };
// = Load sample dialog
@@ -1076,6 +1077,36 @@
xm_set_modified(1);
}
+
+static void
+sample_editor_reverse_clicked (void)
+{
+ int ss = sampledisplay->sel_start, se = sampledisplay->sel_end;
+ int i;
+ gint16 *p, *q;
+
+ if(!current_sample || ss == -1) {
+ return;
+ }
+
+ sample_editor_lock_sample();
+
+ p = q = current_sample->sample.data;
+ p += ss;
+ q += se;
+
+ for(i = 0; i < (se - ss)/2; i++) {
+ gint16 t = *p;
+ *p++ = *--q;
+ *q = t;
+ }
+
+ xm_set_modified(1);
+ sample_editor_unlock_sample();
+ sample_editor_update();
+ sample_display_set_selection(sampledisplay, ss, se);
+}
+
#ifndef NO_AUDIOFILE
static void
@@ -1669,7 +1700,6 @@
gtk_signal_connect (GTK_OBJECT (volrampwindow), "delete_event",
GTK_SIGNAL_FUNC (sample_editor_close_volume_ramp_dialog), NULL);
-// gtk_window_set_modal(GTK_WINDOW(volrampwindow), TRUE);
gtk_window_set_transient_for(GTK_WINDOW(volrampwindow), GTK_WINDOW(mainwindow));
mainbox = gtk_vbox_new(FALSE, 2);
@@ -1693,13 +1723,13 @@
gtk_widget_show(box1);
gtk_box_pack_start(GTK_BOX(mainbox), box1, FALSE, TRUE, 0);
- gui_put_labelled_spin_button(box1, _("Left [%]:"), 0, 1000, &sample_editor_volramp_spin_w[0], NULL, NULL);
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(sample_editor_volramp_spin_w[0]), 100);
+ gui_put_labelled_spin_button(box1, _("Left [%]:"), -1000, 1000, &sample_editor_volramp_spin_w[0], NULL, NULL);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(sample_editor_volramp_spin_w[0]), sample_editor_volramp_last_values[0]);
add_empty_hbox(box1);
- gui_put_labelled_spin_button(box1, _("Right [%]:"), 0, 1000, &sample_editor_volramp_spin_w[1], NULL, NULL);
- gtk_spin_button_set_value(GTK_SPIN_BUTTON(sample_editor_volramp_spin_w[1]), 100);
+ gui_put_labelled_spin_button(box1, _("Right [%]:"), -1000, 1000, &sample_editor_volramp_spin_w[1], NULL, NULL);
+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(sample_editor_volramp_spin_w[1]), sample_editor_volramp_last_values[1]);
box1 = gtk_hbox_new(FALSE, 4);
gtk_widget_show(box1);
@@ -1719,6 +1749,9 @@
static void
sample_editor_close_volume_ramp_dialog (void)
{
+ sample_editor_volramp_last_values[0] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sample_editor_volramp_spin_w[0]));
+ sample_editor_volramp_last_values[1] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(sample_editor_volramp_spin_w[1]));
+
gtk_widget_destroy(volrampwindow);
volrampwindow = NULL;
}
@@ -1765,35 +1798,6 @@
double q = *p;
q *= left + i * (right - left) / (se - ss);
*p++ = CLAMP((int)q, -32768, +32767);
- }
-
- xm_set_modified(1);
- sample_editor_unlock_sample();
- sample_editor_update();
- sample_display_set_selection(sampledisplay, ss, se);
-}
-
-static void
-sample_editor_reverse_clicked (void)
-{
- int ss = sampledisplay->sel_start, se = sampledisplay->sel_end;
- int i;
- gint16 *p, *q;
-
- if(!current_sample || ss == -1) {
- return;
- }
-
- sample_editor_lock_sample();
-
- p = q = current_sample->sample.data;
- p += ss;
- q += se;
-
- for(i = 0; i < (se - ss)/2; i++) {
- gint16 t = *p;
- *p++ = *--q;
- *q = t;
}
xm_set_modified(1);
diff -urN soundtracker-0.5.4/app/track-editor.c soundtracker-0.5.5/app/track-editor.c
--- soundtracker-0.5.4/app/track-editor.c Sat Apr 29 17:11:30 2000
+++ soundtracker-0.5.5/app/track-editor.c Wed May 10 17:07:13 2000
@@ -31,6 +31,7 @@
#include "st-subs.h"
#include "keys.h"
#include "audio.h"
+#include "xm-player.h"
#include "main.h"
#include "gui-settings.h"
#include "gui-subs.h"
@@ -1025,7 +1026,7 @@
p = time_buffer_get(audio_playerpos_tb, display_songtime);
if(p) {
- gui_update_player_pos(p->time, p->songpos, p->patpos);
+ gui_update_player_pos(p);
}
return TRUE;
diff -urN soundtracker-0.5.4/app/tracker.c soundtracker-0.5.5/app/tracker.c
--- soundtracker-0.5.4/app/tracker.c Sat Apr 29 17:11:30 2000
+++ soundtracker-0.5.5/app/tracker.c Wed May 10 17:07:13 2000
@@ -47,6 +47,7 @@
static const int default_colors[] = {
10, 20, 30,
100, 100, 100,
+ 70, 70, 70,
50, 50, 50,
230, 230, 230,
170, 170, 200,
@@ -350,12 +351,16 @@
g_return_if_fail(ch + numch <= t->num_channels);
/* clear line */
- if(y == t->disp_cursor * t->fonth + t->disp_starty)
+ gc = t->bg_gc;
+ if (y == t->disp_cursor * t->fonth + t->disp_starty)
gc = t->bghi_gc; // cursor line
- else if(gui_settings.highlight_rows && row % gui_settings.highlight_rows_n == 0)
- gc = t->bghi2_gc; // highlighted line
- else
- gc = t->bg_gc; // normal line
+ else if(gui_settings.highlight_rows)
+ {
+ if (row % gui_settings.highlight_rows_n == 0)
+ gc = t->bghi2_gc; // highlighted line
+ else if ( row % gui_settings.highlight_rows_minor_n == 0)
+ gc = t->bghi3_gc; // minor highlighted line
+ }
gdk_draw_rectangle(win, gc, TRUE, 0, y, widget->allocation.width, t->fonth);
y += t->font->ascent;
@@ -749,11 +754,13 @@
t->bg_gc = gdk_gc_new(widget->window);
t->bghi_gc = gdk_gc_new(widget->window);
t->bghi2_gc = gdk_gc_new(widget->window);
+ t->bghi3_gc = gdk_gc_new(widget->window);
t->notes_gc = gdk_gc_new(widget->window);
t->misc_gc = gdk_gc_new(widget->window);
gdk_gc_set_foreground(t->bg_gc, &t->colors[TRACKERCOL_BG]);
gdk_gc_set_foreground(t->bghi_gc, &t->colors[TRACKERCOL_BGHI]);
gdk_gc_set_foreground(t->bghi2_gc, &t->colors[TRACKERCOL_BGHI2]);
+ gdk_gc_set_foreground(t->bghi3_gc, &t->colors[TRACKERCOL_BGHI3]);
gdk_gc_set_foreground(t->notes_gc, &t->colors[TRACKERCOL_NOTES]);
if(!t->enable_backing_store)
diff -urN soundtracker-0.5.4/app/tracker.h soundtracker-0.5.5/app/tracker.h
--- soundtracker-0.5.4/app/tracker.h Thu Mar 23 18:07:22 2000
+++ soundtracker-0.5.5/app/tracker.h Wed May 10 16:48:06 2000
@@ -38,6 +38,7 @@
TRACKERCOL_BG,
TRACKERCOL_BGHI,
TRACKERCOL_BGHI2,
+ TRACKERCOL_BGHI3,
TRACKERCOL_NOTES,
TRACKERCOL_BARS,
TRACKERCOL_CHANNUMS,
@@ -58,7 +59,7 @@
GdkFont *font;
int fonth, fontw;
- GdkGC *bg_gc, *bghi_gc, *bghi2_gc, *notes_gc, *misc_gc;
+ GdkGC *bg_gc, *bghi_gc, *bghi2_gc, *bghi3_gc, *notes_gc, *misc_gc;
GdkColor colors[TRACKERCOL_LAST];
int enable_backing_store;
GdkPixmap *pixmap;
diff -urN soundtracker-0.5.4/app/transposition.c soundtracker-0.5.5/app/transposition.c
--- soundtracker-0.5.4/app/transposition.c Sun Feb 20 11:20:16 2000
+++ soundtracker-0.5.5/app/transposition.c Wed May 10 16:14:31 2000
@@ -312,6 +312,8 @@
#else
thing = gtk_button_new_with_label (_ ("Close"));
#endif
+ GTK_WIDGET_SET_FLAGS(thing, GTK_CAN_DEFAULT);
+ gtk_window_set_default(GTK_WINDOW(transposition_window), thing);
gtk_signal_connect (GTK_OBJECT (thing), "clicked",
GTK_SIGNAL_FUNC (transposition_close_requested), NULL);
gtk_box_pack_start (GTK_BOX (hbox), thing, FALSE, FALSE, 0);
diff -urN soundtracker-0.5.4/app/xm-player.c soundtracker-0.5.5/app/xm-player.c
--- soundtracker-0.5.4/app/xm-player.c Sat Apr 15 17:40:00 2000
+++ soundtracker-0.5.5/app/xm-player.c Wed May 10 16:15:13 2000
@@ -38,6 +38,7 @@
#include "audio.h"
int player_songpos, player_patpos;
+int player_tempo, player_bpm;
gboolean player_looped;
static double current_time;
static int xmplayer_playmode;
@@ -1017,9 +1018,11 @@
}
if (procdat>=0x20) {
curbpm=procdat;
- } else {
+ player_bpm=curbpm;
+ } else {
curtempo=procdat;
- }
+ player_tempo=curtempo;
+ }
break;
case xmpCmdMODtTempo:
if (!procdat) {
@@ -1027,6 +1030,7 @@
jumptorow=0;
} else {
curtempo=procdat;
+ player_tempo=curtempo;
}
break;
case xmpCmdGVolume:
diff -urN soundtracker-0.5.4/app/xm-player.h soundtracker-0.5.5/app/xm-player.h
--- soundtracker-0.5.4/app/xm-player.h Fri Mar 3 18:44:40 2000
+++ soundtracker-0.5.5/app/xm-player.h Wed May 10 16:14:31 2000
@@ -27,6 +27,7 @@
#include "xm.h"
extern int player_songpos, player_patpos;
+extern int player_tempo, player_bpm;
extern gboolean player_looped;
void xmplayer_init_module (void);
diff -urN soundtracker-0.5.4/app/xm.c soundtracker-0.5.5/app/xm.c
--- soundtracker-0.5.4/app/xm.c Sat Apr 29 17:20:52 2000
+++ soundtracker-0.5.5/app/xm.c Sat May 20 13:01:41 2000
@@ -37,6 +37,7 @@
#include "i18n.h"
#include "gui-settings.h"
#include "xm.h"
+#include "xm-player.h"
#include "endian-conv.h"
#include "st-subs.h"
#include "recode.h"
@@ -412,22 +413,37 @@
FILE *f)
{
guint8 a[29], b[38];
- int num_samples;
+ guint16 num_samples;
+ guint32 iheader_size;
st_clean_instrument(instr, NULL);
fread(a, 1, sizeof(a), f);
-
+ iheader_size = get_le_32(a);
strncpy(instr->name, a + 4, 22);
recode_ibmpc_to_latin1(instr->name, 22);
+
+ if(iheader_size <= 29) {
+ return 1;
+ }
+
num_samples = get_le_16(a + 27);
+ if(num_samples > 16) {
+ error_error("XM Load Error: Number of samples in instrument > 16.\n");
+ return 0;
+ }
if(num_samples == 0) {
- fread(a, 1, 4, f);
+ int to_read = iheader_size - sizeof(a);
+ while(to_read) {
+ int r = MIN(to_read, sizeof(a));
+ fread(a, 1, r, f);
+ to_read -= r;
+ }
} else {
fread(a, 1, 4, f);
if(get_le_32(a) != 40) {
- error_error("instrument header size != 40\n");
+ error_error("XM Load Error: Sample header size != 40.\n");
return 0;
}
fread(instr->samplemap, 1, 96, f);
@@ -453,7 +469,7 @@
if(instr->vibtype >= 4) {
char buf[128];
instr->vibtype = 0;
- sprintf(buf, _("Invalid vibtype %d, using Sine.\n"), instr->vibtype);
+ sprintf(buf, "XM Load Warning: Invalid vibtype %d, using Sine.\n", instr->vibtype);
error_warning(buf);
}
instr->vibrate = b[13];
@@ -789,6 +805,8 @@
xm->tempo = 6;
xm->bpm = 125;
+ player_tempo = xm->tempo;
+ player_bpm = xm->bpm;
xm->flags = XM_FLAGS_IS_MOD | XM_FLAGS_AMIGA_FREQ;
if(!xm_load_patterns(xm->patterns, n + 1, xm->num_channels, f, xm_load_mod_pattern)) {
@@ -907,6 +925,8 @@
}
xm->tempo = get_le_16(xh + 76);
xm->bpm = get_le_16(xh + 78);
+ player_tempo = xm->tempo;
+ player_bpm = xm->bpm;
fread(xm->pattern_order_table, 1, 256, f);
if(!xm_load_patterns(xm->patterns, num_patterns, xm->num_channels, f, xm_load_xm_pattern)) {
@@ -1029,6 +1049,8 @@
xm->num_channels = 8;
xm->tempo = 6;
xm->bpm = 125;
+ player_tempo = xm->tempo;
+ player_bpm = xm->bpm;
if(!xm_load_patterns(xm->patterns, 0, xm->num_channels, NULL, NULL))
goto ende;
diff -urN soundtracker-0.5.4/app/xm.h soundtracker-0.5.5/app/xm.h
--- soundtracker-0.5.4/app/xm.h Sat Apr 29 17:19:09 2000
+++ soundtracker-0.5.5/app/xm.h Tue May 16 15:29:53 2000
@@ -37,6 +37,9 @@
#define XM_PATTERN_NOTE_MAX 95
#define XM_PATTERN_NOTE_OFF 97
+#define XM_NOTE_VOLUME_MIN 0x10
+#define XM_NOTE_VOLUME_MAX 0x50
+
typedef struct XMNote {
unsigned char note;
unsigned char instrument;
diff -urN soundtracker-0.5.4/configure soundtracker-0.5.5/configure
--- soundtracker-0.5.4/configure Sat Apr 29 17:37:40 2000
+++ soundtracker-0.5.5/configure Sat May 27 10:37:28 2000
@@ -719,10 +719,9 @@
fi
-
PACKAGE=soundtracker
-VERSION=0.5.4
+VERSION=0.5.5
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
{ echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
@@ -739,7 +738,7 @@
missing_dir=`cd $ac_aux_dir && pwd`
echo $ac_n "checking for working aclocal""... $ac_c" 1>&6
-echo "configure:743: checking for working aclocal" >&5
+echo "configure:742: checking for working aclocal" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -752,7 +751,7 @@
fi
echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
-echo "configure:756: checking for working autoconf" >&5
+echo "configure:755: checking for working autoconf" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -765,7 +764,7 @@
fi
echo $ac_n "checking for working automake""... $ac_c" 1>&6
-echo "configure:769: checking for working automake" >&5
+echo "configure:768: checking for working automake" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -778,7 +777,7 @@
fi
echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
-echo "configure:782: checking for working autoheader" >&5
+echo "configure:781: checking for working autoheader" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -791,7 +790,7 @@
fi
echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
-echo "configure:795: checking for working makeinfo" >&5
+echo "configure:794: checking for working makeinfo" >&5
# Run test in a subshell; some versions of sh will print an error if
# an executable is not found, even if stderr is redirected.
# Redirect stdin to placate older versions of autoconf. Sigh.
@@ -812,7 +811,7 @@
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:816: checking for $ac_word" >&5
+echo "configure:815: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -842,7 +841,7 @@
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:846: checking for $ac_word" >&5
+echo "configure:845: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -893,7 +892,7 @@
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:897: checking for $ac_word" >&5
+echo "configure:896: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -925,7 +924,7 @@
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:929: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:928: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -936,12 +935,12 @@
cat > conftest.$ac_ext << EOF
-#line 940 "configure"
+#line 939 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:944: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -967,12 +966,12 @@
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:971: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:970: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:976: checking whether we are using GNU C" >&5
+echo "configure:975: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -981,7 +980,7 @@
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:985: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:984: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1000,7 +999,7 @@
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1004: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1003: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1034,7 +1033,7 @@
# Extract the first word of "sed", so it can be a program name with args.
set dummy sed; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1038: checking for $ac_word" >&5
+echo "configure:1037: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_sedpath'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1069,7 +1068,7 @@
# Extract the first word of "gasp", so it can be a program name with args.
set dummy gasp; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1073: checking for $ac_word" >&5
+echo "configure:1072: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GASPPATH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1129,7 +1128,7 @@
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1133: checking for $ac_word" >&5
+echo "configure:1132: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1160,7 +1159,7 @@
HAVE_POLL="no"
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1164: checking how to run the C preprocessor" >&5
+echo "configure:1163: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -1175,13 +1174,13 @@
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1192,13 +1191,13 @@
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1202: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1209,13 +1208,13 @@
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1218: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -1243,17 +1242,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1247: checking for $ac_hdr" >&5
+echo "configure:1246: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1257: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1256: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1276,12 +1275,12 @@
for ac_func in poll
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1280: checking for $ac_func" >&5
+echo "configure:1279: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1338,12 +1337,12 @@
for ac_func in select
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1342: checking for $ac_func" >&5
+echo "configure:1341: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1396,7 +1395,7 @@
ALL_LINGUAS="de es fr it pl ja ru"
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1400: checking for POSIXized ISC" >&5
+echo "configure:1399: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
@@ -1417,12 +1416,12 @@
fi
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1421: checking for ANSI C header files" >&5
+echo "configure:1420: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
#include
@@ -1430,7 +1429,7 @@
#include
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1434: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1447,7 +1446,7 @@
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <
EOF
@@ -1465,7 +1464,7 @@
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <
EOF
@@ -1486,7 +1485,7 @@
:
else
cat > conftest.$ac_ext <
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1497,7 +1496,7 @@
exit (0); }
EOF
-if { (eval echo configure:1501: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -1521,12 +1520,12 @@
fi
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1525: checking for working const" >&5
+echo "configure:1524: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1578: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@@ -1596,21 +1595,21 @@
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1600: checking for inline" >&5
+echo "configure:1599: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1613: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
@@ -1636,12 +1635,12 @@
esac
echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:1640: checking for off_t" >&5
+echo "configure:1639: checking for off_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
#if STDC_HEADERS
@@ -1669,12 +1668,12 @@
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1673: checking for size_t" >&5
+echo "configure:1672: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
#if STDC_HEADERS
@@ -1704,19 +1703,19 @@
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
# for constant arguments. Useless!
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
-echo "configure:1708: checking for working alloca.h" >&5
+echo "configure:1707: checking for working alloca.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
int main() {
char *p = alloca(2 * sizeof(int));
; return 0; }
EOF
-if { (eval echo configure:1720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_header_alloca_h=yes
else
@@ -1737,12 +1736,12 @@
fi
echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:1741: checking for alloca" >&5
+echo "configure:1740: checking for alloca" >&5
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_cv_func_alloca_works=yes
else
@@ -1802,12 +1801,12 @@
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:1806: checking whether alloca needs Cray hooks" >&5
+echo "configure:1805: checking whether alloca needs Cray hooks" >&5
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&6
-echo "configure:1836: checking for $ac_func" >&5
+echo "configure:1835: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1887,7 +1886,7 @@
fi
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:1891: checking stack direction for C alloca" >&5
+echo "configure:1890: checking stack direction for C alloca" >&5
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1895,7 +1894,7 @@
ac_cv_c_stack_direction=0
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_stack_direction=1
else
@@ -1939,17 +1938,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1943: checking for $ac_hdr" >&5
+echo "configure:1942: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1953: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1952: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1978,12 +1977,12 @@
for ac_func in getpagesize
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1982: checking for $ac_func" >&5
+echo "configure:1981: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2031,7 +2030,7 @@
done
echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:2035: checking for working mmap" >&5
+echo "configure:2034: checking for working mmap" >&5
if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2039,7 +2038,7 @@
ac_cv_func_mmap_fixed_mapped=no
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2182: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_mmap_fixed_mapped=yes
else
@@ -2207,17 +2206,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2211: checking for $ac_hdr" >&5
+echo "configure:2210: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2220: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2247,12 +2246,12 @@
strdup __argz_count __argz_stringify __argz_next
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2251: checking for $ac_func" >&5
+echo "configure:2250: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2278: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2304,12 +2303,12 @@
for ac_func in stpcpy
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2308: checking for $ac_func" >&5
+echo "configure:2307: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2366,19 +2365,19 @@
if test $ac_cv_header_locale_h = yes; then
echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6
-echo "configure:2370: checking for LC_MESSAGES" >&5
+echo "configure:2369: checking for LC_MESSAGES" >&5
if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
int main() {
return LC_MESSAGES
; return 0; }
EOF
-if { (eval echo configure:2382: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
am_cv_val_LC_MESSAGES=yes
else
@@ -2399,7 +2398,7 @@
fi
fi
echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6
-echo "configure:2403: checking whether NLS is requested" >&5
+echo "configure:2402: checking whether NLS is requested" >&5
# Check whether --enable-nls or --disable-nls was given.
if test "${enable_nls+set}" = set; then
enableval="$enable_nls"
@@ -2419,7 +2418,7 @@
EOF
echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6
-echo "configure:2423: checking whether included gettext is requested" >&5
+echo "configure:2422: checking whether included gettext is requested" >&5
# Check whether --with-included-gettext or --without-included-gettext was given.
if test "${with_included_gettext+set}" = set; then
withval="$with_included_gettext"
@@ -2438,17 +2437,17 @@
ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for libintl.h""... $ac_c" 1>&6
-echo "configure:2442: checking for libintl.h" >&5
+echo "configure:2441: checking for libintl.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2452: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2465,19 +2464,19 @@
if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libc""... $ac_c" 1>&6
-echo "configure:2469: checking for gettext in libc" >&5
+echo "configure:2468: checking for gettext in libc" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
int main() {
return (int) gettext ("")
; return 0; }
EOF
-if { (eval echo configure:2481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
gt_cv_func_gettext_libc=yes
else
@@ -2493,7 +2492,7 @@
if test "$gt_cv_func_gettext_libc" != "yes"; then
echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6
-echo "configure:2497: checking for bindtextdomain in -lintl" >&5
+echo "configure:2496: checking for bindtextdomain in -lintl" >&5
ac_lib_var=`echo intl'_'bindtextdomain | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2501,7 +2500,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2528,12 +2527,12 @@
if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
echo "$ac_t""yes" 1>&6
echo $ac_n "checking for gettext in libintl""... $ac_c" 1>&6
-echo "configure:2532: checking for gettext in libintl" >&5
+echo "configure:2531: checking for gettext in libintl" >&5
if eval "test \"`echo '$''{'gt_cv_func_gettext_libintl'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:2537: checking for gettext in -lintl" >&5
+echo "configure:2536: checking for gettext in -lintl" >&5
ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2541,7 +2540,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2591,7 +2590,7 @@
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2595: checking for $ac_word" >&5
+echo "configure:2594: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2625,12 +2624,12 @@
for ac_func in dcgettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2629: checking for $ac_func" >&5
+echo "configure:2628: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2680,7 +2679,7 @@
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2684: checking for $ac_word" >&5
+echo "configure:2683: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2716,7 +2715,7 @@
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2720: checking for $ac_word" >&5
+echo "configure:2719: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2748,7 +2747,7 @@
fi
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2759: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
CATOBJEXT=.gmo
DATADIRNAME=share
@@ -2779,7 +2778,7 @@
if test "$CATOBJEXT" = "NONE"; then
echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6
-echo "configure:2783: checking whether catgets can be used" >&5
+echo "configure:2782: checking whether catgets can be used" >&5
# Check whether --with-catgets or --without-catgets was given.
if test "${with_catgets+set}" = set; then
withval="$with_catgets"
@@ -2792,7 +2791,7 @@
if test "$nls_cv_use_catgets" = "yes"; then
echo $ac_n "checking for main in -li""... $ac_c" 1>&6
-echo "configure:2796: checking for main in -li" >&5
+echo "configure:2795: checking for main in -li" >&5
ac_lib_var=`echo i'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2800,14 +2799,14 @@
ac_save_LIBS="$LIBS"
LIBS="-li $LIBS"
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2835,12 +2834,12 @@
fi
echo $ac_n "checking for catgets""... $ac_c" 1>&6
-echo "configure:2839: checking for catgets" >&5
+echo "configure:2838: checking for catgets" >&5
if eval "test \"`echo '$''{'ac_cv_func_catgets'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_catgets=yes"
else
@@ -2885,7 +2884,7 @@
# Extract the first word of "gencat", so it can be a program name with args.
set dummy gencat; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2889: checking for $ac_word" >&5
+echo "configure:2888: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GENCAT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2921,7 +2920,7 @@
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2925: checking for $ac_word" >&5
+echo "configure:2924: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2958,7 +2957,7 @@
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2962: checking for $ac_word" >&5
+echo "configure:2961: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2993,7 +2992,7 @@
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2997: checking for $ac_word" >&5
+echo "configure:2996: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3051,7 +3050,7 @@
# Extract the first word of "msgfmt", so it can be a program name with args.
set dummy msgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3055: checking for $ac_word" >&5
+echo "configure:3054: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3085,7 +3084,7 @@
# Extract the first word of "gmsgfmt", so it can be a program name with args.
set dummy gmsgfmt; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3089: checking for $ac_word" >&5
+echo "configure:3088: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3121,7 +3120,7 @@
# Extract the first word of "xgettext", so it can be a program name with args.
set dummy xgettext; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3125: checking for $ac_word" >&5
+echo "configure:3124: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3214,7 +3213,7 @@
LINGUAS=
else
echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6
-echo "configure:3218: checking for catalogs to be installed" >&5
+echo "configure:3217: checking for catalogs to be installed" >&5
NEW_LINGUAS=
for lang in ${LINGUAS=$ALL_LINGUAS}; do
case "$ALL_LINGUAS" in
@@ -3242,17 +3241,17 @@
if test "$CATOBJEXT" = ".cat"; then
ac_safe=`echo "linux/version.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for linux/version.h""... $ac_c" 1>&6
-echo "configure:3246: checking for linux/version.h" >&5
+echo "configure:3245: checking for linux/version.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3256: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3255: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3368,7 +3367,7 @@
# Extract the first word of "gtk-config", so it can be a program name with args.
set dummy gtk-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3372: checking for $ac_word" >&5
+echo "configure:3371: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3403,7 +3402,7 @@
min_gtk_version=1.2.2
echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6
-echo "configure:3407: checking for GTK - version >= $min_gtk_version" >&5
+echo "configure:3406: checking for GTK - version >= $min_gtk_version" >&5
no_gtk=""
if test "$GTK_CONFIG" = "no" ; then
no_gtk=yes
@@ -3426,7 +3425,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <
@@ -3504,7 +3503,7 @@
}
EOF
-if { (eval echo configure:3508: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -3538,7 +3537,7 @@
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
cat > conftest.$ac_ext <
@@ -3548,7 +3547,7 @@
return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version));
; return 0; }
EOF
-if { (eval echo configure:3552: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3551: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GTK or finding the wrong"
@@ -3601,7 +3600,7 @@
# Extract the first word of "gnome-config", so it can be a program name with args.
set dummy gnome-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3605: checking for $ac_word" >&5
+echo "configure:3604: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_gnomepath'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3634,7 +3633,7 @@
fi
echo $ac_n "checking for Gnome compile flags""... $ac_c" 1>&6
-echo "configure:3638: checking for Gnome compile flags" >&5
+echo "configure:3637: checking for Gnome compile flags" >&5
GNOME_CFLAGS=`$gnomepath gnomeui --cflags 2>/dev/null`
GNOME_VER=`$gnomepath --version |$sedpath 's/gnome-libs //'`
GNOME_MAJOR=`echo $GNOME_VER |$sedpath 's/\([0-9]**\).\([0-9]**\).\([0-9]**\)/\1/'`
@@ -3716,7 +3715,7 @@
# Extract the first word of "audiofile-config", so it can be a program name with args.
set dummy audiofile-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3720: checking for $ac_word" >&5
+echo "configure:3719: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AUDIOFILE_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3751,7 +3750,7 @@
min_audiofile_version=0.1.5
echo $ac_n "checking for AUDIOFILE - version >= $min_audiofile_version""... $ac_c" 1>&6
-echo "configure:3755: checking for AUDIOFILE - version >= $min_audiofile_version" >&5
+echo "configure:3754: checking for AUDIOFILE - version >= $min_audiofile_version" >&5
no_audiofile=""
if test "$AUDIOFILE_CONFIG" = "no" ; then
no_audiofile=yes
@@ -3774,7 +3773,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <
@@ -3832,7 +3831,7 @@
EOF
-if { (eval echo configure:3836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -3867,7 +3866,7 @@
CFLAGS="$CFLAGS $AUDIOFILE_CFLAGS"
LIBS="$LIBS $AUDIOFILE_LIBS"
cat > conftest.$ac_ext <
@@ -3877,7 +3876,7 @@
return 0;
; return 0; }
EOF
-if { (eval echo configure:3881: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding AUDIOFILE or finding the wrong"
@@ -3917,12 +3916,12 @@
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3921: checking for ANSI C header files" >&5
+echo "configure:3920: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
#include
@@ -3930,7 +3929,7 @@
#include
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3934: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3933: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -3947,7 +3946,7 @@
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <
EOF
@@ -3965,7 +3964,7 @@
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <
EOF
@@ -3986,7 +3985,7 @@
:
else
cat > conftest.$ac_ext <
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3997,7 +3996,7 @@
exit (0); }
EOF
-if { (eval echo configure:4001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -4026,17 +4025,17 @@
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4030: checking for $ac_hdr" >&5
+echo "configure:4029: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4040: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4039: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4080,7 +4079,7 @@
if test x$alsa_support != xno; then
echo $ac_n "checking for snd_cards in -lasound""... $ac_c" 1>&6
-echo "configure:4084: checking for snd_cards in -lasound" >&5
+echo "configure:4083: checking for snd_cards in -lasound" >&5
ac_lib_var=`echo asound'_'snd_cards | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4088,7 +4087,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lasound $LIBS"
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4124,7 +4123,7 @@
LIBS="$LIBS -lasound"
fi
echo $ac_n "checking for snd_pcm_capture_params in -lasound""... $ac_c" 1>&6
-echo "configure:4128: checking for snd_pcm_capture_params in -lasound" >&5
+echo "configure:4127: checking for snd_pcm_capture_params in -lasound" >&5
ac_lib_var=`echo asound'_'snd_pcm_capture_params | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4132,7 +4131,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lasound $LIBS"
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4176,7 +4175,7 @@
fi
echo $ac_n "checking for snd_pcm_channel_params in -lasound""... $ac_c" 1>&6
-echo "configure:4180: checking for snd_pcm_channel_params in -lasound" >&5
+echo "configure:4179: checking for snd_pcm_channel_params in -lasound" >&5
ac_lib_var=`echo asound'_'snd_pcm_channel_params | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4184,7 +4183,7 @@
ac_save_LIBS="$LIBS"
LIBS="-lasound $LIBS"
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4198: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4279,7 +4278,7 @@
# Extract the first word of "esd-config", so it can be a program name with args.
set dummy esd-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:4283: checking for $ac_word" >&5
+echo "configure:4282: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_ESD_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -4314,7 +4313,7 @@
min_esd_version=0.2.8
echo $ac_n "checking for ESD - version >= $min_esd_version""... $ac_c" 1>&6
-echo "configure:4318: checking for ESD - version >= $min_esd_version" >&5
+echo "configure:4317: checking for ESD - version >= $min_esd_version" >&5
no_esd=""
if test "$ESD_CONFIG" = "no" ; then
no_esd=yes
@@ -4338,7 +4337,7 @@
echo $ac_n "cross compiling; assumed OK... $ac_c"
else
cat > conftest.$ac_ext <
@@ -4396,7 +4395,7 @@
EOF
-if { (eval echo configure:4400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -4430,7 +4429,7 @@
CFLAGS="$CFLAGS $ESD_CFLAGS"
LIBS="$LIBS $ESD_LIBS"
cat > conftest.$ac_ext <
@@ -4440,7 +4439,7 @@
return 0;
; return 0; }
EOF
-if { (eval echo configure:4444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding ESD or finding the wrong"
@@ -4476,12 +4475,12 @@
for ac_func in esd_play_stream
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4480: checking for $ac_func" >&5
+echo "configure:4479: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4507: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -4549,14 +4548,14 @@
echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4553: checking whether byte ordering is bigendian" >&5
+echo "configure:4552: checking whether byte ordering is bigendian" >&5
if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_bigendian=unknown
# See if sys/param.h defines the BYTE_ORDER macro.
cat > conftest.$ac_ext <
#include
@@ -4567,11 +4566,11 @@
#endif
; return 0; }
EOF
-if { (eval echo configure:4571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4570: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
# It does; now see whether it defined to BIG_ENDIAN or not.
cat > conftest.$ac_ext <
#include
@@ -4582,7 +4581,7 @@
#endif
; return 0; }
EOF
-if { (eval echo configure:4586: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4585: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_bigendian=yes
else
@@ -4602,7 +4601,7 @@
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_bigendian=no
else
diff -urN soundtracker-0.5.4/configure.in soundtracker-0.5.5/configure.in
--- soundtracker-0.5.4/configure.in Sat Apr 29 17:37:09 2000
+++ soundtracker-0.5.5/configure.in Sat May 27 10:36:41 2000
@@ -1,7 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT(app/endian-conv.h)
-AM_INIT_AUTOMAKE(soundtracker, 0.5.4)
+AM_INIT_AUTOMAKE(soundtracker, 0.5.5)
AM_CONFIG_HEADER(config.h)
dnl -----------------------------------------------------------------------
diff -urN soundtracker-0.5.4/doc/Makefile.in soundtracker-0.5.5/doc/Makefile.in
--- soundtracker-0.5.4/doc/Makefile.in Sat Apr 29 17:38:01 2000
+++ soundtracker-0.5.5/doc/Makefile.in Sat May 27 10:52:39 2000
@@ -1,4 +1,4 @@
-# Makefile.in generated automatically by automake 1.4a from Makefile.am
+# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
@@ -46,10 +46,9 @@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_FLAG =
transform = @program_transform_name@
NORMAL_INSTALL = :
@@ -106,7 +105,7 @@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
-TAR = gtar
+TAR = tar
GZIP_ENV = --best
all: all-redirect
.SUFFIXES:
@@ -129,7 +128,7 @@
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
- cp -pr $$d/$$file $(distdir)/$$file; \
+ cp -pr $$/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
@@ -159,7 +158,7 @@
all-am: Makefile
all-redirect: all-am
install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
diff -urN soundtracker-0.5.4/doc/hacking.html soundtracker-0.5.5/doc/hacking.html
--- soundtracker-0.5.4/doc/hacking.html Mon Mar 13 14:05:04 2000
+++ soundtracker-0.5.5/doc/hacking.html Sat May 27 10:37:57 2000
@@ -1,6 +1,7 @@
-
+
SoundTracker internals
@@ -19,7 +20,8 @@
Output drivers
Input drivers
-Contributing Code
+Mixer API
+Contributing Code
@@ -34,14 +36,14 @@
window is resized, widgets have to be redrawn, which can take a
while. To provide continous sound output, we're using a separate thread.
-
+
Communication between the threads is accomplished using two pipes. The
communication codes for this pipe are defined in audio.h. When messages
are received, they are handled in gui.c::read_mixer_pipe() and
audio.c::audio_thread(), respectively.
-
+
In its current form, the code is limited to dealing with one module at
the same time, with one editing window. Some of the GUI code has already
@@ -51,14 +53,14 @@
containers of generous amounts of global variables are gui.c,
sample-editor.c, instrument-editor.c and xm-player.c.
-
+
For ST to be made fully multi-module capable ("object-oriented"), large
parts of the GUI will have to be changed. Unfortunately, references to
the global "tracker" and "xm" variables can be found virtually
everywhere in the source code.
-
+
@@ -68,7 +70,7 @@
operating systems such as DOS, special care must been taken to take the
audio latency into account.
-
+
The audio thread thus keeps a list of recently reached pattern positions
and their occurence in the mixed audio output stream. The GUI thread
@@ -79,14 +81,14 @@
is the key for this to work correctly. The lists are handled through the
time buffer interface, see time-buffer.[ch].
-
+
The oscilloscope monitors are handled in a similar way through some ring
buffers. This is documented in audio.h, for example. time-buffer can't
be used here because scope data is continuous and is accessed from the
GUI thread in more than one location.
-
+
@@ -101,14 +103,14 @@
oss-output.c::oss_poll_ready_playing() once OSS accepts new data from
ST.
-
+
After opening the output driver, various other things are initialized in
audio.c::audio_prepare_for_playing(). After that, an acknowledgement
message is sent back to the GUI thread, which is in playing mode from
then on (indicated by the global variable gui.c::gui_playing_mode).
-
+
After that, the audio thread goes back into its main poll() loop, which
also waits for the driver callback action now. Once this callback is
@@ -116,13 +118,13 @@
request a new part of the sample output stream in any format and bitrate
it desires, which is then output.
-
+
Calling the XM player at the right moment and handling the pitch bending
feature is all done in audio_mix() which should be rather
straight-forward to read.
-
+
Interesting is also the interaction between xm-player.c and the rest of
the audio subsystem. There are some routines in audio.c starting with
@@ -131,7 +133,7 @@
modularized mixer system could be installed lateron. You can find more
about the Mixer API later in this document.
-
+
@@ -145,7 +147,7 @@
changes to sample-editor.c), so a good amount of the settings widgets
are missing in input drivers.
-
+
Note that the current API doesn't make any provisions for MIDI input /
output. First and foremost, it must be thought about the synchronization
@@ -153,7 +155,7 @@
central audio code in audio.c hasn't been designed with this in mind
either.
-
+
Also not accounted for, but related to the MIDI issue, are wavetable
devices like the GUS which can play multiple samples on their own. But
@@ -163,7 +165,7 @@
can't be rendered by the audio hardware but must be calculated using the
CPU!
-
+
@@ -175,7 +177,7 @@
(should be only one) to drivers/Makefile.am. Now you still have to write
the code, that's what the two next sections are about.
-
+
@@ -187,18 +189,18 @@
variables and functions in your source file should be defined static so
as to hide them from the rest of the program.
-
+
You can keep the *settings functions empty at first, adding the right
code here shouldn't be a problem when you compare with oss-output.c.
-
+
The first function you should write is new(), which allocates a new
object and initializes it with default settings. getwidget() can stay
empty for as long as you don't want the user to change settings.
-
+
The next function you write should be open(), which opens the device
according to the settings in the object structure. release() does the
@@ -206,37 +208,41 @@
the function you're going to write now. That's it, you should have a
working minimal driver now.
-
+
The next important function is getplaytime() which is necessary for the
GUI to synchronize with the audio output. This might require some
experimentation to get right.
-
+
Now you can start adding the settings widget and add code to the load /
save settings functions.
-
+
-
-I'm not sure that this API will stay in its current form. Most probably
-I'll just remove the public interface and integrate a mixer into the
-program's core.
+
+
+
+To be written. Two mixers are already available; shouldn't be hard to
+understand how it works. Basically it's really independent of the rest
+of the tracker.
+
+
-
+
Please follow these rules if you want to donate code to the
SoundTracker project:
-
+
- Coding Style. I prefer 4-space tabulators, and an indentation style
@@ -296,7 +302,8 @@
-This document was generated on 13 March 2000 using
-texi2html 1.56k.
+This document was generated on 27 May 2000 using the
+texi2html
+translator version 1.51.