diff -urN soundtracker-0.3.1/AUTHORS soundtracker-0.3.2/AUTHORS --- soundtracker-0.3.1/AUTHORS Sun Aug 22 20:57:51 1999 +++ soundtracker-0.3.2/AUTHORS Sat Sep 4 19:44:58 1999 @@ -20,11 +20,17 @@ (recode.c derived from the recode-3.4.1 package) Free Software Foundation, Inc. (poll.c quickly c&p'ed from libc-5.4.46 source) +The LibMikMod Team + (reverb code. ripped and hacked a bit by giles) +Fredrik Huss + (XM cheat sheet from ft2 archive) Contributions ============== +Giles Constant + (added player effects/master reverb) Jon Forsberg (bug fix in keys.c) Arthibus Gissehel @@ -39,10 +45,12 @@ (corrected some historical peculiarities in the README) Erik Thiele (pointed out some ... stupid ... XI loader bugs :D) +Kai Vehmanen + (ALSA support) Translations ============= Atsushi Yamagata - (JA of soundtracker_tips.txt, ja.po) + (Japanese) diff -urN soundtracker-0.3.1/ChangeLog soundtracker-0.3.2/ChangeLog --- soundtracker-0.3.1/ChangeLog Sun Aug 29 18:49:55 1999 +++ soundtracker-0.3.2/ChangeLog Sat Sep 4 22:58:27 1999 @@ -1,3 +1,47 @@ +1999-09-04 Michael Krause + + * Released v0.3.2 + + * app/cheat-sheet.[ch]: Added an overview of all XM effects. + + * app/gui-settings.c: Added "Use anti-aliased envelope editor" + option. + + * app/envelope-box.c (envelope_box_canvas_paint_grid): Reduced + left X coordinate of long lines from 30000 to 16384 (non-aa canvas + would bug here). + + * HACKING: Contains some `rules' for developers. + + * README: Added soundtracker.org homepage and information about + the mailing lists. + + * app/tips-dialog.c: The tips are stored in an array inside this + file now -- translation is easier this way. + + * app/preferences.c (prefs_get_line): Remove trailing newlines + from returned strings. + + * app/audioconfig.c (audioconfig_clist_select): Fix driver + selection. + +1999-09-03 Michael Krause + + * FAQ: Removed ALSA-related question. + + * Added ALSA patch from Kai Vehmanen. + +1999-09-02 Giles Constant + + * Playback effects menu added + + * "Master Reverb" added to playback effects (code ripped and + regurgitated from libmikmod) + +1999-08-31 Michael Krause + + * po/ja.po: updated by Atsushi Yamagata. + 1999-08-29 Michael Krause * Released v0.3.1 diff -urN soundtracker-0.3.1/FAQ soundtracker-0.3.2/FAQ --- soundtracker-0.3.1/FAQ Sun Aug 29 18:15:48 1999 +++ soundtracker-0.3.2/FAQ Fri Sep 3 15:36:21 1999 @@ -39,14 +39,6 @@ ------------------------------------------------------------------------ -QQQQ: Will you support ALSA or ESD? - -a: I have no plans on installing this software on my own system, but -feel free to send me a patch. Writing a native driver shouldn't be -hard, as the driver system is quite modular. - ------------------------------------------------------------------------- - QQQQ: What about MIDI support? a: I don't have any MIDI equipment, so I couldn't test MIDI-related diff -urN soundtracker-0.3.1/HACKING soundtracker-0.3.2/HACKING --- soundtracker-0.3.1/HACKING Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.2/HACKING Sat Sep 4 17:29:36 1999 @@ -0,0 +1,40 @@ + +HACKING SOUNDTRACKER +===================== + +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 +like this: + + if(something) { + work(); + } + +instead of: + + if (something) + { + work (); + } + +If you're using Emacs, you can simply use "M-x c-set-style cc-mode" + +* Add yourself to the AUTHORS file. + +* Add a ChangeLog entry. + +* Do a "make dist" in the main directory. This generates a new archive +containing your changes. Do NOT send me the whole archive, instead: + +* Generate a patch. Unpack the previously generated archive and the +original archive (into some other directory), and use + + diff -urN {original-directory} {your-directory} > patch + +to generate a file containing only your changes, and no auto-generated +files. + +* Send the patch to the `soundtracker-discuss' mailing-list. If you're +not subscribed, then subscribe first (see README file). diff -urN soundtracker-0.3.1/INSTALL soundtracker-0.3.2/INSTALL --- soundtracker-0.3.1/INSTALL Sun Aug 29 18:15:52 1999 +++ soundtracker-0.3.2/INSTALL Sat Sep 4 17:13:43 1999 @@ -40,8 +40,9 @@ this case. If SoundTracker keeps crashing as soon as you start it (with strange X I/O errors), you don't have them. -You can get a precompiled version from -http://www.tu-harburg.de/~semk2104/soundtracker/threadedxlibs.tar.bz2. +< You used to be able to download a precompiled version from my +homepage, but somehow I've lost the relevant file :-( > + It's best not to install them over the old X libraries, but to put them into a private directory instead and to let the shell environment variable 'LD_LIBRARY_PATH' point to this directory before starting @@ -82,10 +83,7 @@ 1. Copy the soundtracker executable to /usr/local/bin. -2. Copy soundtracker_tips.txt into /usr/local/share/soundtracker - (Create the directory soundtracker if it doesn't exist). - -3. Optionally: +2. Optionally: chown root.root /usr/local/bin/soundtracker chmod 4755 /usr/local/bin/soundtracker diff -urN soundtracker-0.3.1/Makefile.am soundtracker-0.3.2/Makefile.am --- soundtracker-0.3.1/Makefile.am Thu Aug 12 19:54:06 1999 +++ soundtracker-0.3.2/Makefile.am Sat Sep 4 17:20:25 1999 @@ -2,19 +2,19 @@ SUBDIRS = po intl app -EXTRA_DIST = TODO FAQ soundtracker_tips.txt soundtracker_tips.ja.txt ABOUT-NLS soundtracker.spec +EXTRA_DIST = TODO FAQ ABOUT-NLS soundtracker.spec HACKING -stdir = $(datadir)/soundtracker +#stdir = $(datadir)/soundtracker -st_DATA = \ - soundtracker_tips.txt +#st_DATA = \ +# soundtracker_tips.txt bindist: ./configure --disable-gnome --disable-nls make rm -rf soundtracker-$(VERSION)-bin mkdir soundtracker-$(VERSION)-bin - cp -a README FAQ NEWS AUTHORS INSTALL soundtracker_tips.txt \ + cp -a README FAQ NEWS AUTHORS INSTALL \ soundtracker-$(VERSION)-bin strip app/soundtracker -o soundtracker-$(VERSION)-bin/soundtracker tar zcf arc/soundtracker-$(VERSION)-bin.tar.gz \ diff -urN soundtracker-0.3.1/Makefile.in soundtracker-0.3.2/Makefile.in --- soundtracker-0.3.1/Makefile.in Sun Aug 29 18:50:10 1999 +++ soundtracker-0.3.2/Makefile.in Sat Sep 4 23:13:08 1999 @@ -94,18 +94,11 @@ SUBDIRS = po intl app -EXTRA_DIST = TODO FAQ soundtracker_tips.txt soundtracker_tips.ja.txt ABOUT-NLS soundtracker.spec - -stdir = $(datadir)/soundtracker - -st_DATA = soundtracker_tips.txt - +EXTRA_DIST = TODO FAQ ABOUT-NLS soundtracker.spec HACKING ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = -DATA = $(st_DATA) - DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ INSTALL Makefile.am Makefile.in NEWS TODO acconfig.h aclocal.m4 \ config.h.in configure configure.in install-sh missing mkinstalldirs @@ -160,25 +153,6 @@ maintainer-clean-hdr: -install-stDATA: $(st_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(stdir) - @list='$(st_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(stdir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(stdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(stdir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(stdir)/$$p; \ - fi; fi; \ - done - -uninstall-stDATA: - @$(NORMAL_UNINSTALL) - list='$(st_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(stdir)/$$p; \ - done - # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, @@ -340,21 +314,20 @@ install-exec-am: install-exec: install-exec-recursive -install-data-am: install-stDATA +install-data-am: install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-recursive -uninstall-am: uninstall-stDATA +uninstall-am: uninstall: uninstall-recursive -all-am: Makefile $(DATA) config.h +all-am: Makefile config.h all-redirect: all-recursive-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install installdirs: installdirs-recursive installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(stdir) mostlyclean-generic: @@ -388,8 +361,7 @@ -rm -f config.status .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ -uninstall-stDATA install-stDATA install-data-recursive \ -uninstall-data-recursive install-exec-recursive \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ all-recursive check-recursive installcheck-recursive info-recursive \ dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ @@ -402,12 +374,17 @@ maintainer-clean-generic clean mostlyclean distclean maintainer-clean +#stdir = $(datadir)/soundtracker + +#st_DATA = \ +# soundtracker_tips.txt + bindist: ./configure --disable-gnome --disable-nls make rm -rf soundtracker-$(VERSION)-bin mkdir soundtracker-$(VERSION)-bin - cp -a README FAQ NEWS AUTHORS INSTALL soundtracker_tips.txt \ + cp -a README FAQ NEWS AUTHORS INSTALL \ soundtracker-$(VERSION)-bin strip app/soundtracker -o soundtracker-$(VERSION)-bin/soundtracker tar zcf arc/soundtracker-$(VERSION)-bin.tar.gz \ diff -urN soundtracker-0.3.1/NEWS soundtracker-0.3.2/NEWS --- soundtracker-0.3.1/NEWS Sun Aug 29 18:35:00 1999 +++ soundtracker-0.3.2/NEWS Sat Sep 4 23:08:59 1999 @@ -2,6 +2,15 @@ (This file lists only major user-visible changes; the ChangeLog file contains more details) +What is new in soundtracker-0.3.2 (04-Sep-1999): + +* Native ALSA support +* Master Reverb effect +* Using non-antialiased canvas in envelope editor by default + (page switching is a lot faster now) +* XM effects reference +* soundtracker.org is online! + What is new in soundtracker-0.3.1 (29-Aug-1999): * Transposition and instrument number changing functions diff -urN soundtracker-0.3.1/README soundtracker-0.3.2/README --- soundtracker-0.3.1/README Thu Aug 19 20:20:26 1999 +++ soundtracker-0.3.2/README Sat Sep 4 17:17:34 1999 @@ -1,8 +1,10 @@ - Back to the roots -- this is the Real SoundTracker + Back to the roots -- this is the Real SoundTracker + -------------------------------------------------------------- + http://www.soundtracker.org/ -------------------------------------------------------------- - v0.3.1 --- THIS IS A DEVELOPMENT VERSION! + v0.3.2 --- THIS IS A DEVELOPMENT VERSION! Written and (C) 1998-1999 by Michael Krause [ raw style / lego ] @@ -118,3 +120,34 @@ out with this, you should become familiar with DocBook or similar SGML tools first. +You may of course ask for help in the mailing list (see below)! + + +MAILING LISTS +============= + +There are currently two mailing lists: + +* soundtracker-announce: + + This is a read-only, low-volume mailing-list in which I post + announcements of new versions. + +* soundtracker-discuss: + + A non-moderated list open for ST-related discussions of any kind, for + both users and developers. + +If you want to join any of these lists, send a mail to +`minimalist@soundtracker.org' with a Subject of + + subscribe soundtracker-announce + +or + + subscribe soundtracker-discuss + +Use `unsubscribe' to cancel your list membership. + +Once you have joined `soundtracker-discuss', you send mails to the +list by writing to `soundtracker-discuss@soundtracker.org'. diff -urN soundtracker-0.3.1/TODO soundtracker-0.3.2/TODO --- soundtracker-0.3.1/TODO Sun Aug 29 18:15:49 1999 +++ soundtracker-0.3.2/TODO Sat Sep 4 19:45:04 1999 @@ -33,12 +33,6 @@ OSS-OUTPUT.C: get_play_time(): check for DSP_CAP_REALTIME and use GETxPTR if available. -AUDIOCONFIG: should edit und playback objects be able to use different -drivers? - -AUDIOCONFIG: will probably crash if there are really multiple driver -modules to choose from.. - OSS-OUTPUT.C: make preferences come in effect immediately, without having to restart the song. @@ -192,3 +186,7 @@ virtualbyteorder stuff. GUI: bpm and tempo spins behave a little bit strange sometimes. + +XM-PLAYER thread : re-nice-able :-) (will require some setUID code) + +MIDI-OUT (aka Fasttracker) : (Giles looking at this) diff -urN soundtracker-0.3.1/acconfig.h soundtracker-0.3.2/acconfig.h --- soundtracker-0.3.1/acconfig.h Wed Aug 11 14:53:48 1999 +++ soundtracker-0.3.2/acconfig.h Fri Sep 3 15:33:54 1999 @@ -2,6 +2,7 @@ #undef VERSION #undef DRIVER_OSS +#undef DRIVER_ALSA #undef USE_GNOME #undef NO_AUDIOFILE diff -urN soundtracker-0.3.1/aclocal.m4 soundtracker-0.3.2/aclocal.m4 --- soundtracker-0.3.1/aclocal.m4 Sun Aug 29 18:49:58 1999 +++ soundtracker-0.3.2/aclocal.m4 Fri Sep 3 15:45:10 1999 @@ -872,3 +872,16 @@ rm -f conf.audiofiletest ]) +# Define a conditional. + +AC_DEFUN(AM_CONDITIONAL, +[AC_SUBST($1_TRUE) +AC_SUBST($1_FALSE) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi]) + diff -urN soundtracker-0.3.1/app/Makefile.am soundtracker-0.3.2/app/Makefile.am --- soundtracker-0.3.1/app/Makefile.am Sun Aug 22 12:35:48 1999 +++ soundtracker-0.3.2/app/Makefile.am Sat Sep 4 19:06:33 1999 @@ -1,4 +1,3 @@ - SUBDIRS = drivers mixers bin_PROGRAMS = soundtracker @@ -6,9 +5,11 @@ soundtracker_SOURCES = \ audio.c audio.h \ audioconfig.c audioconfig.h \ + cheat-sheet.c cheat-sheet.h \ clavier.c clavier.h \ - endian-conv.h \ driver.h driver-in.h driver-out.h \ + effectsconfig.c effectsconfig.h \ + endian-conv.h \ envelope-box.c envelope-box.h \ errors.c errors.h \ extspinbutton.c extspinbutton.h \ @@ -47,4 +48,5 @@ INCLUDES = -DDATADIR=\"$(stdir)\" \ -DLOCALEDIR=\"$(datadir)/locale\" + diff -urN soundtracker-0.3.1/app/Makefile.in soundtracker-0.3.2/app/Makefile.in --- soundtracker-0.3.1/app/Makefile.in Sun Aug 29 18:50:15 1999 +++ soundtracker-0.3.2/app/Makefile.in Sat Sep 4 23:13:12 1999 @@ -96,7 +96,7 @@ bin_PROGRAMS = soundtracker -soundtracker_SOURCES = audio.c audio.h audioconfig.c audioconfig.h clavier.c clavier.h endian-conv.h driver.h driver-in.h driver-out.h envelope-box.c envelope-box.h errors.c errors.h extspinbutton.c extspinbutton.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 mixer.h module-info.c module-info.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 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 effectsconfig.c effectsconfig.h endian-conv.h envelope-box.c envelope-box.h errors.c errors.h extspinbutton.c extspinbutton.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 mixer.h module-info.c module-info.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 transposition.c transposition.h xm.c xm.h xm-player.c xm-player.h soundtracker_LDADD = drivers/libdrivers.a mixers/libmixers.a @@ -115,12 +115,12 @@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ -soundtracker_OBJECTS = audio.o audioconfig.o clavier.o envelope-box.o \ -errors.o extspinbutton.o gui-settings.o gui-subs.o gui.o \ -instrument-editor.o keys.o main.o menubar.o module-info.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 \ -transposition.o xm.o xm-player.o +soundtracker_OBJECTS = audio.o audioconfig.o cheat-sheet.o clavier.o \ +effectsconfig.o envelope-box.o errors.o extspinbutton.o gui-settings.o \ +gui-subs.o gui.o instrument-editor.o keys.o main.o menubar.o \ +module-info.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 transposition.o xm.o xm-player.o soundtracker_DEPENDENCIES = drivers/libdrivers.a mixers/libmixers.a soundtracker_LDFLAGS = CFLAGS = @CFLAGS@ @@ -312,13 +312,16 @@ 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 + sample-editor.h xm.h driver-in.h preferences.h gui.h audio.o: audio.c ../config.h poll.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 +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 \ + effectsconfig.h envelope-box.o: envelope-box.c ../config.h i18n.h gui-subs.h \ - envelope-box.h xm.h mixer.h + envelope-box.h xm.h mixer.h gui-settings.h errors.o: errors.c audio.h mixer.h driver-out.h driver.h time-buffer.h extspinbutton.o: extspinbutton.c extspinbutton.h gui.o: gui.c ../config.h poll.h i18n.h gui.h gui-subs.h xm.h mixer.h \ @@ -343,8 +346,8 @@ 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 audioconfig.h gui-settings.h tips-dialog.h \ - instrument-editor.h transposition.h + tracker.h audioconfig.h effectsconfig.h gui-settings.h \ + tips-dialog.h instrument-editor.h transposition.h cheat-sheet.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 \ diff -urN soundtracker-0.3.1/app/audioconfig.c soundtracker-0.3.2/app/audioconfig.c --- soundtracker-0.3.1/app/audioconfig.c Fri Aug 13 13:44:18 1999 +++ soundtracker-0.3.2/app/audioconfig.c Sat Sep 4 11:51:36 1999 @@ -33,12 +33,14 @@ #include "sample-editor.h" #include "driver.h" #include "preferences.h" +#include "sample-editor.h" +#include "gui.h" GList *drivers[2] = { NULL, NULL }; static GtkWidget *configwindow = NULL; static GtkWidget *cw_clist, *cw_hbox; -int cw_currentobject; +static int cw_currentobject = -1; static GtkWidget *driverwidget = NULL; typedef struct audio_object { @@ -77,35 +79,42 @@ gint row, gint column) { - audio_object *object = &audio_objects[cw_currentobject]; - st_driver *old_driver = *object->driver; - st_driver *new_driver = g_list_nth_data(drivers[object->type], row); - GtkWidget *new_driverwidget; - - if(new_driver != old_driver) { - fprintf(stderr, "Setting new driver module...\n"); - // stop playing and sampling here - - // free old driver object - old_driver->destroy(*object->driver_object); - - // get new driver object - *object->driver_object = new_driver->new(); - *object->driver = new_driver; - } + if(cw_currentobject != -1) { + audio_object *object = &audio_objects[cw_currentobject]; + st_driver *old_driver = *object->driver; + void *old_driver_object = *object->driver_object; + st_driver *new_driver = g_list_nth_data(drivers[object->type], row); + GtkWidget *new_driverwidget; + + if(new_driver != old_driver) { + // stop playing and sampling here + sample_editor_stop_sampling(); + gui_play_stop(); + + // get new driver object + *object->driver_object = new_driver->new(); + *object->driver = new_driver; + } + + new_driverwidget = new_driver->getwidget(*object->driver_object); - new_driverwidget = new_driver->getwidget(*object->driver_object); + if(new_driverwidget != driverwidget) { + if(driverwidget) { + gtk_container_remove(GTK_CONTAINER(cw_hbox), driverwidget); + } + driverwidget = new_driverwidget; + gtk_widget_show(driverwidget); + /* we don't want the widget to be destroyed upon removal... */ + gtk_object_ref(GTK_OBJECT(driverwidget)); + gtk_box_pack_start(GTK_BOX(cw_hbox), driverwidget, TRUE, FALSE, 0); + } - if(new_driverwidget != driverwidget) { - if(driverwidget) { - gtk_container_remove(GTK_CONTAINER(cw_hbox), driverwidget); - gtk_widget_hide(driverwidget); + if(new_driver != old_driver) { + // free old driver object + old_driver->destroy(old_driver_object); } - driverwidget = new_driverwidget; - gtk_widget_show(driverwidget); - /* we don't want the widget to be destroyed upon removal... */ - gtk_object_ref(GTK_OBJECT(driverwidget)); - gtk_box_pack_start(GTK_BOX(cw_hbox), driverwidget, TRUE, FALSE, 0); + } else { + // The CList is being updated } } @@ -119,7 +128,7 @@ int i, active = -1; g_assert(n < NUM_AUDIO_OBJECTS); - cw_currentobject = n; + cw_currentobject = -1; // disable clist select callback gtk_clist_freeze(GTK_CLIST(cw_clist)); gtk_clist_clear(GTK_CLIST(cw_clist)); @@ -132,6 +141,7 @@ gtk_clist_thaw(GTK_CLIST(cw_clist)); g_assert(active != -1); + cw_currentobject = n; gtk_clist_select_row(GTK_CLIST(cw_clist), active, 0); } diff -urN soundtracker-0.3.1/app/cheat-sheet.c soundtracker-0.3.2/app/cheat-sheet.c --- soundtracker-0.3.1/app/cheat-sheet.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.2/app/cheat-sheet.c Sat Sep 4 19:42:56 1999 @@ -0,0 +1,137 @@ + +/* + * The Real SoundTracker - XM effects cheat sheet + * + * Copyright (C) 1999 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 + +#include "i18n.h" + +static GtkWidget *cheat_sheet_window = NULL; + +static const char cheat_sheet_string[] = +"\n" +" Standard Effects Column Volume Column\n" +" ---------------------------------------------------------------------\n" +"\n" +" 0 Arpeggio 0 Do nothing\n" +" 1 (*) Porta up $10-$50 Set volume Value-$10\n" +" 2 (*) Porta down : : :\n" +" 3 (*) Tone porta : : :\n" +" 4 (*) Vibrato $60-$6f Volume slide down\n" +" 5 (*) Tone porta+Volume slide $70-$7f Volume slide up\n" +" 6 (*) Vibrato+Volume slide $80-$8f Fine volume slide down\n" +" 7 (*) Tremolo $90-$9f Fine volume slide up\n" +" 8 Set panning $a0-$af Set vibrato speed\n" +" 9 Sample offset $b0-$bf Vibrato\n" +" A (*) Volume slide $c0-$cf Set panning\n" +" B Position jump $d0-$df Panning slide left\n" +" C Set volume $e0-$ef Panning slide right\n" +" D Pattern break $f0-$ff Tone porta\n" +" E1 (*) Fine porta up\n" +" E2 (*) Fine porta down (*) = If the data byte is zero,\n" +" E3 Set gliss control the last nonzero byte for the\n" +" E4 Set vibrato control command should be used.\n" +" E5 Set finetune\n" +" E6 Set loop begin/loop\n" +" E7 Set tremolo control\n" +" E9 Retrig note\n" +" EA (*) Fine volume slide up\n" +" EB (*) Fine volume slide down\n" +" EC Note cut\n" +" ED Note delay\n" +" EE Pattern delay\n" +" F Set tempo/BPM\n" +" G Set global volume\n" +" H (*) Global volume slide\n" +" K Key off\n" +" L Set envelope position\n" +" P (*) Panning slide\n" +" R (*) Multi retrig note\n" +" T Tremor\n" +" X1 (*) Extra fine porta up\n" +" X2 (*) Extra fine porta down"; + +static void +cheat_sheet_close_requested (void) +{ + gtk_widget_destroy(cheat_sheet_window); + cheat_sheet_window = NULL; +} + +void +cheat_sheet_dialog (void) +{ + GtkWidget *mainbox, *scrolled_window, *text; + GdkFont *font; + + if(cheat_sheet_window != NULL) { + gdk_window_raise(cheat_sheet_window->window); + return; + } + +#ifdef USE_GNOME + cheat_sheet_window = gnome_app_new("SoundTracker", _("XM Effects Cheat Sheet")); +#else + cheat_sheet_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(cheat_sheet_window), _("XM Effects Cheat Sheet")); +#endif + gtk_signal_connect (GTK_OBJECT (cheat_sheet_window), "delete_event", + GTK_SIGNAL_FUNC (cheat_sheet_close_requested), NULL); + + mainbox = gtk_vbox_new(FALSE, 2); + gtk_container_border_width(GTK_CONTAINER(mainbox), 4); +#ifdef USE_GNOME + gnome_app_set_contents(GNOME_APP(cheat_sheet_window), mainbox); +#else + gtk_container_add(GTK_CONTAINER(cheat_sheet_window), mainbox); +#endif + gtk_widget_show(mainbox); + + scrolled_window = gtk_scrolled_window_new (NULL, NULL); + gtk_box_pack_start (GTK_BOX (mainbox), scrolled_window, TRUE, TRUE, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), + GTK_POLICY_NEVER, + GTK_POLICY_ALWAYS); + gtk_widget_show (scrolled_window); + + text = gtk_text_new (NULL, NULL); + gtk_text_set_editable (GTK_TEXT (text), FALSE); + gtk_text_set_word_wrap (GTK_TEXT (text), FALSE); + gtk_container_add (GTK_CONTAINER (scrolled_window), text); + gtk_widget_grab_focus (text); + gtk_widget_show (text); + gtk_widget_set_usize(text, 42 * 12, 46 * 12); + + font = gdk_font_load ("-adobe-courier-medium-r-normal--*-120-*-*-*-*-*-*"); + + gtk_text_insert(GTK_TEXT(text), font, NULL, NULL, cheat_sheet_string, -1); + + /* The Text widget will reference count the font, so we + * unreference it here + */ + gdk_font_unref (font); + + gtk_widget_show (cheat_sheet_window); +} diff -urN soundtracker-0.3.1/app/cheat-sheet.h soundtracker-0.3.2/app/cheat-sheet.h --- soundtracker-0.3.1/app/cheat-sheet.h Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.2/app/cheat-sheet.h Sat Sep 4 19:06:33 1999 @@ -0,0 +1,27 @@ + +/* + * The Real SoundTracker - XM effects cheat sheet (header) + * + * Copyright (C) 1999 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 _ST_CHEAT_SHEET_H +#define _ST_CHEAT_SHEET_H + +void cheat_sheet_dialog (void); + +#endif /* _ST_CHEAT_SHEET_H */ diff -urN soundtracker-0.3.1/app/drivers/Makefile.am soundtracker-0.3.2/app/drivers/Makefile.am --- soundtracker-0.3.1/app/drivers/Makefile.am Tue Jul 20 13:20:50 1999 +++ soundtracker-0.3.2/app/drivers/Makefile.am Sat Sep 4 11:54:35 1999 @@ -3,6 +3,8 @@ libdrivers_a_SOURCES = \ oss-output.c \ - oss-input.c + oss-input.c \ + alsa-output.c \ + alsa-input.c -INCLUDES = -I.. \ No newline at end of file +INCLUDES = -I.. diff -urN soundtracker-0.3.1/app/drivers/Makefile.in soundtracker-0.3.2/app/drivers/Makefile.in --- soundtracker-0.3.1/app/drivers/Makefile.in Sun Aug 29 18:50:17 1999 +++ soundtracker-0.3.2/app/drivers/Makefile.in Sat Sep 4 23:13:14 1999 @@ -94,7 +94,7 @@ noinst_LIBRARIES = libdrivers.a -libdrivers_a_SOURCES = oss-output.c oss-input.c +libdrivers_a_SOURCES = oss-output.c oss-input.c alsa-output.c alsa-input.c INCLUDES = -I.. @@ -109,7 +109,8 @@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ libdrivers_a_LIBADD = -libdrivers_a_OBJECTS = oss-output.o oss-input.o +libdrivers_a_OBJECTS = oss-output.o oss-input.o alsa-output.o \ +alsa-input.o AR = ar CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -213,13 +214,16 @@ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done +alsa-input.o: alsa-input.c ../../config.h +alsa-output.o: alsa-output.c ../../config.h oss-input.o: oss-input.c ../../config.h ../i18n.h ../driver-in.h \ ../driver.h ../mixer.h ../errors.h ../gui-subs.h oss-output.o: oss-output.c ../../config.h ../i18n.h ../driver-out.h \ ../driver.h ../mixer.h ../errors.h ../gui-subs.h \ ../preferences.h -oss.o: oss.c ../../config.h ../driver.h ../mixer.h ../preferences.h \ - ../errors.h +test-output.o: test-output.c ../../config.h ../i18n.h ../driver-out.h \ + ../driver.h ../mixer.h ../errors.h ../gui-subs.h \ + ../preferences.h info-am: info: info-am diff -urN soundtracker-0.3.1/app/drivers/alsa-input.c soundtracker-0.3.2/app/drivers/alsa-input.c --- soundtracker-0.3.1/app/drivers/alsa-input.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.2/app/drivers/alsa-input.c Sat Sep 4 23:08:18 1999 @@ -0,0 +1,536 @@ + +/* + * The Real SoundTracker - ALSA (output) driver. + * + * Copyright (C) 1999 Kai Vehmanen + * + * 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 + +#if DRIVER_ALSA + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "i18n.h" +#include "driver-in.h" +#include "mixer.h" +#include "errors.h" +#include "gui-subs.h" +#include "preferences.h" + +typedef struct alsa_driver { + GtkWidget *configwidget; + GtkWidget *prefs_resolution_w[2]; + GtkWidget *prefs_channels_w[2]; + GtkWidget *prefs_mixfreq_w[4]; + GtkWidget *bufsizespin_w, *bufsizelabel_w, *estimatelabel_w; + GtkWidget *alsacardspin_w, *alsadevicespin_w; + + int playrate; + int stereo; + int bits; + int fragsize; + int numfrags; + int mf; + + int card_number; + int device_number; + + GMutex *configmutex; + + snd_pcm_t *soundfd; + void *sndbuf; + gpointer polltag; + int firstpoll; + + int p_resolution; + int p_channels; + int p_mixfreq; + int p_fragsize; + + double outtime; + double playtime; +} alsa_driver; + +static const int mixfreqs[] = { 8000, 16000, 22050, 44100, -1 }; + +static void +alsa_poll_ready_sampling (gpointer data, + gint source, + GdkInputCondition condition) +{ + alsa_driver * const d = data; + int size; + + size = snd_pcm_read(d->soundfd, d->sndbuf, d->fragsize); + + size = size / (d->stereo + 1) / (d->bits / 8); + + sample_editor_sampled(d->sndbuf, size, d->playrate, d->mf); +} + +static void +prefs_init_from_structure (alsa_driver *d) +{ + int i; + + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(d->prefs_resolution_w[d->p_resolution / 8 - 2]), TRUE); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(d->prefs_channels_w[d->p_channels - 1]), TRUE); + + for(i = 0; mixfreqs[i] != -1; i++) { + if(d->p_mixfreq == mixfreqs[i]) + break; + } + if(mixfreqs[i] == -1) { + i = 3; + } + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(d->prefs_mixfreq_w[i]), TRUE); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(d->bufsizespin_w), d->p_fragsize); +} + +static void +prefs_update_estimate (alsa_driver *d) +{ + char buf[64]; + + sprintf(buf, _("Estimated audio delay: %f microseconds"), (double)(1000 * (d->p_fragsize)) / d->p_mixfreq); + gtk_label_set_text(GTK_LABEL(d->estimatelabel_w), buf); +} + +static void +prefs_resolution_changed (void *a, + alsa_driver *d) +{ + d->p_resolution = (find_current_toggle(d->prefs_resolution_w, 2) + 1) * 16; +} + +static void +prefs_channels_changed (void *a, + alsa_driver *d) +{ + d->p_channels = find_current_toggle(d->prefs_channels_w, 2) + 1; +} + +static void +prefs_mixfreq_changed (void *a, + alsa_driver *d) +{ + d->p_mixfreq = mixfreqs[find_current_toggle(d->prefs_mixfreq_w, 4)]; + prefs_update_estimate(d); +} + +static void +prefs_fragsize_changed (GtkSpinButton *w, + alsa_driver *d) +{ + char buf[30]; + + d->p_fragsize = gtk_spin_button_get_value_as_int(w); + + sprintf(buf, _("(%d samples)"), d->p_fragsize); + gtk_label_set_text(GTK_LABEL(d->bufsizelabel_w), buf); + prefs_update_estimate(d); +} + +static void +prefs_alsacard_changed (GtkSpinButton *w, + alsa_driver *d) +{ + d->card_number = gtk_spin_button_get_value_as_int(w); +} + +static void +prefs_alsadevice_changed (GtkSpinButton *w, + alsa_driver *d) +{ + d->device_number = gtk_spin_button_get_value_as_int(w); +} + +static void +alsa_make_config_widgets (alsa_driver *d) +{ + GtkWidget *thing, *mainbox, *box2, *box3, *alsa_card, *alsa_device; +/* static const char *resolutionlabels[] = { "8 bits", "16 bits", NULL }; */ +/* static const char *channelslabels[] = { "Mono", "Stereo", NULL }; */ +/* static const char *mixfreqlabels[] = { "8000", "16000", "22050", "44100", NULL }; */ + + static const char *resolutionlabels[] = { "16 bits", NULL }; + static const char *channelslabels[] = { "Mono", NULL }; + static const char *mixfreqlabels[] = { "8000", "16000", "22050", "44100", NULL }; + + + d->configwidget = mainbox = gtk_vbox_new(FALSE, 2); + + thing = gtk_label_new(_("These changes won't take effect until you restart playing.")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0); + + thing = gtk_hseparator_new(); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Resolution:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + make_radio_group_full(resolutionlabels, box2, d->prefs_resolution_w, FALSE, TRUE, (void(*)())prefs_resolution_changed, d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Channels:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + make_radio_group_full(channelslabels, box2, d->prefs_channels_w, FALSE, TRUE, (void(*)())prefs_channels_changed, d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Frequency [Hz]:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + make_radio_group_full(mixfreqlabels, box2, d->prefs_mixfreq_w, FALSE, TRUE, (void(*)())prefs_mixfreq_changed, d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Buffer Size:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + + box3 = gtk_vbox_new(FALSE, 2); + gtk_box_pack_start(GTK_BOX(box2), box3, FALSE, TRUE, 0); + gtk_widget_show(box3); + + d->bufsizespin_w = thing = gtk_spin_button_new(GTK_ADJUSTMENT(gtk_adjustment_new(d->fragsize, 64.0, 16384.0, 64.0, 0.0, 0.0)), 0, 0); + gtk_box_pack_start(GTK_BOX(box3), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + gtk_signal_connect (GTK_OBJECT(thing), "changed", + GTK_SIGNAL_FUNC(prefs_fragsize_changed), d); + + d->bufsizelabel_w = thing = gtk_label_new(""); + gtk_box_pack_start(GTK_BOX(box3), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + add_empty_hbox(box2); + d->estimatelabel_w = thing = gtk_label_new(""); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + add_empty_hbox(box2); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + alsa_card = gtk_label_new(_("ALSA card number:")); + gtk_widget_show(alsa_card); + gtk_box_pack_start(GTK_BOX(box2), alsa_card, FALSE, TRUE, 0); + add_empty_hbox(box2); + + d->alsacardspin_w = alsa_card = gtk_spin_button_new(GTK_ADJUSTMENT(gtk_adjustment_new(d->card_number, 0.0, 256.0, 1.0, 1.0, 0.0)), 0, 0); + gtk_box_pack_start(GTK_BOX(box2), alsa_card, FALSE, TRUE, 0); + gtk_widget_show(alsa_card); + gtk_signal_connect (GTK_OBJECT(alsa_card), "changed", + GTK_SIGNAL_FUNC(prefs_alsacard_changed), d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + alsa_device = gtk_label_new(_("ALSA device number:")); + gtk_widget_show(alsa_device); + gtk_box_pack_start(GTK_BOX(box2), alsa_device, FALSE, TRUE, 0); + add_empty_hbox(box2); + + d->alsadevicespin_w = alsa_device = gtk_spin_button_new(GTK_ADJUSTMENT(gtk_adjustment_new(d->device_number, 0.0, 256.0, 1.0, 1.0, 0.0)), 0, 0); + gtk_box_pack_start(GTK_BOX(box2), alsa_device, FALSE, TRUE, 0); + gtk_widget_show(alsa_device); + gtk_signal_connect (GTK_OBJECT(alsa_device), "changed", + GTK_SIGNAL_FUNC(prefs_alsadevice_changed), d); + + prefs_init_from_structure(d); +} + +static GtkWidget * +alsa_getwidget (void *dp) +{ + alsa_driver * const d = dp; + + return d->configwidget; +} + +static void * +alsa_new (void) +{ + alsa_driver *d = g_new(alsa_driver, 1); + + d->card_number = 0; + d->device_number = 0; + + d->p_mixfreq = 44100; + d->p_channels = 1; + d->p_resolution = 16; + d->p_fragsize = 512; // 512; + d->soundfd = 0; + d->sndbuf = NULL; + d->polltag = NULL; + d->configmutex = g_mutex_new(); + + alsa_make_config_widgets(d); + + return d; +} + +static void +alsa_destroy (void *dp) +{ + alsa_driver * const d = dp; + + gtk_widget_destroy(d->configwidget); + g_mutex_free(d->configmutex); + + g_free(dp); +} + +static void +alsa_release (void *dp) +{ + alsa_driver * const d = dp; + + free(d->sndbuf); + d->sndbuf = NULL; + + /* audio_poll_remove(d->polltag); */ + gdk_input_remove(d->polltag); + d->polltag = NULL; + + if(d->soundfd != 0) { + /* snd_pcm_drain_capture(d->soundfd); */ + snd_pcm_close(d->soundfd); + d->soundfd = 0; + } +} + +static gboolean +alsa_open (void *dp) +{ + alsa_driver * const d = dp; + int mf; + + snd_pcm_format_t pf; + snd_pcm_capture_info_t pcm_info; + snd_pcm_capture_params_t pp; + snd_pcm_capture_status_t pbstat; + + // int err = snd_pcm_open(&(d->soundfd), d->card_number, d->device_number, + // SND_PCM_OPEN_CAPTURE); + int err = snd_pcm_open(&(d->soundfd), 0, 0, SND_PCM_OPEN_CAPTURE); + + if (err != 0) { + char buf[256]; + sprintf(buf, _("Couldn't open ALSA device for sound input (card:%d, device:%d):\n%s"), + d->card_number, d->device_number, snd_strerror(err)); + error_error(buf); + goto out; + } + + // --- + // Set non-blocking mode. + // --- + + snd_pcm_block_mode(d->soundfd, 1); // enable block mode + + d->bits = 0; + mf = 0; + + // --- + // Select audio format + // --- + + memset(&pf, 0, sizeof(pf)); + + if (d->p_resolution == 16) { + pf.format = SND_PCM_SFMT_S16_LE; + d->bits = 16; + mf = ST_MIXER_FORMAT_S16_LE; + } + else { + pf.format = SND_PCM_SFMT_U8; + d->bits = 8; + mf = ST_MIXER_FORMAT_S8; + } + +/* if(d->p_channels == 2) { */ +/* d->stereo = 1; */ +/* pf.channels = d->p_channels; */ +/* mf |= ST_MIXER_FORMAT_STEREO; */ +/* } */ +/* else { */ +/* pf.channels = d->p_channels; */ +/* d->stereo = 0; */ +/* } */ + + d->stereo = 0; + pf.channels = 1; + + pf.rate = d->p_mixfreq; + d->playrate = d->p_mixfreq; + mf = ST_MIXER_FORMAT_S16_LE; + d->mf = mf; + + err = snd_pcm_capture_format(d->soundfd, &pf); + if (err < 0) { + error_error(_("Required sound output format not supported.\n")); + goto out; + } + + snd_pcm_capture_info(d->soundfd, &pcm_info); + + memset(&pp, 0, sizeof(pp)); + + pp.fragment_size = d->p_fragsize; + /* pp.fragments_max = 1; */ + // pp.fragments_max = 16pcm_info.buffer_size / pp.fragment_size; + pp.fragments_min = 1; + + err = snd_pcm_capture_params(d->soundfd, &pp); + if (err < 0) { + error_error(_("Required sound output parameters not supported.\n")); + goto out; + } + + snd_pcm_capture_status(d->soundfd, &pbstat); + // d->numfrags = pbstat.fragments; + d->numfrags = 1; + d->fragsize = pbstat.fragment_size; + + d->sndbuf = calloc(1, d->fragsize); + +/* if(d->stereo == 1) { */ +/* d->fragsize /= 2; */ +/* } */ +/* if(d->bits == 16) { */ +/* d->fragsize /= 2; */ +/* } */ + + d->polltag = gdk_input_add(snd_pcm_file_descriptor(d->soundfd), GDK_INPUT_READ, alsa_poll_ready_sampling, d); + // d->firstpoll = TRUE; + // d->playtime = 0; + + return TRUE; + + out: + alsa_release(dp); + return FALSE; +} + +static double +alsa_get_play_time (void *dp) +{ + alsa_driver * const d = dp; + struct timeval tv; + double curtime; + + gettimeofday(&tv, NULL); + curtime = tv.tv_sec + tv.tv_usec / 1e6; + + return d->playtime + curtime - d->outtime - d->numfrags * ((double) d->fragsize / d->playrate); +} + +static gboolean +alsa_loadsettings (void *dp, + FILE *f) +{ + alsa_driver * const d = dp; + + prefs_get_int(f, "alsa-resolution", &d->p_resolution); + prefs_get_int(f, "alsa-channels", &d->p_channels); + prefs_get_int(f, "alsa-mixfreq", &d->p_mixfreq); + prefs_get_int(f, "alsa-fragsize", &d->p_fragsize); + + prefs_get_int(f, "alsa-card", &d->card_number); + prefs_get_int(f, "alsa-device", &d->device_number); + + prefs_init_from_structure(d); + + return TRUE; +} + +static gboolean +alsa_savesettings (void *dp, + FILE *f) +{ + alsa_driver * const d = dp; + + prefs_put_int(f, "alsa-resolution", d->p_resolution); + prefs_put_int(f, "alsa-channels", d->p_channels); + prefs_put_int(f, "alsa-mixfreq", d->p_mixfreq); + prefs_put_int(f, "alsa-fragsize", d->p_fragsize); + + prefs_put_int(f, "alsa-card", d->card_number); + prefs_put_int(f, "alsa-device", d->device_number); + + return TRUE; +} + +st_in_driver driver_in_alsa = { + { "ALSA Sampling", + + alsa_new, + alsa_destroy, + + alsa_open, + alsa_release, + + alsa_getwidget, + /* alsa_loadsettings, + alsa_savesettings, */ + } + /* , */ + + /* alsa_get_play_time, */ +}; + +#endif /* DRIVER_ALSA */ diff -urN soundtracker-0.3.1/app/drivers/alsa-output.c soundtracker-0.3.2/app/drivers/alsa-output.c --- soundtracker-0.3.1/app/drivers/alsa-output.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.2/app/drivers/alsa-output.c Fri Sep 3 15:33:58 1999 @@ -0,0 +1,540 @@ + +/* + * The Real SoundTracker - ALSA (output) driver. + * + * Copyright (C) 1999 Kai Vehmanen + * + * 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 + +#if DRIVER_ALSA + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "i18n.h" +#include "driver-out.h" +#include "mixer.h" +#include "errors.h" +#include "gui-subs.h" +#include "preferences.h" + +typedef struct alsa_driver { + GtkWidget *configwidget; + GtkWidget *prefs_resolution_w[2]; + GtkWidget *prefs_channels_w[2]; + GtkWidget *prefs_mixfreq_w[4]; + GtkWidget *bufsizespin_w, *bufsizelabel_w, *estimatelabel_w; + GtkWidget *alsacardspin_w, *alsadevicespin_w; + + int playrate; + int stereo; + int bits; + int fragsize; + int numfrags; + int mf; + + int card_number; + int device_number; + + GMutex *configmutex; + + snd_pcm_t *soundfd; + void *sndbuf; + gpointer polltag; + int firstpoll; + + int p_resolution; + int p_channels; + int p_mixfreq; + int p_fragsize; + + double outtime; + double playtime; +} alsa_driver; + +static const int mixfreqs[] = { 8000, 16000, 22050, 44100, -1 }; + +static void +alsa_poll_ready_playing (gpointer data, + gint source, + GdkInputCondition condition) +{ + alsa_driver * const d = data; + int w; + int size; + struct timeval tv; + + if(!d->firstpoll) { + size = (d->stereo + 1) * (d->bits / 8) * d->fragsize; + +// if((w = write(d->soundfd, d->sndbuf, size) != size)) { + if((w = snd_pcm_write(d->soundfd, d->sndbuf, size) != size)) { + if(w == -1) { + fprintf(stderr, "driver_alsa: write() returned -1.\n"); + } else { + fprintf(stderr, "driver_alsa: write not completely done.\n"); + } + } + + gettimeofday(&tv, NULL); + d->outtime = tv.tv_sec + tv.tv_usec / 1e6; + d->playtime += (double) d->fragsize / d->playrate; + } + + d->firstpoll = FALSE; + + audio_mix(d->sndbuf, d->fragsize, d->playrate, d->mf); +} + +static void +prefs_init_from_structure (alsa_driver *d) +{ + int i; + + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(d->prefs_resolution_w[d->p_resolution / 8 - 1]), TRUE); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(d->prefs_channels_w[d->p_channels - 1]), TRUE); + + for(i = 0; mixfreqs[i] != -1; i++) { + if(d->p_mixfreq == mixfreqs[i]) + break; + } + if(mixfreqs[i] == -1) { + i = 3; + } + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(d->prefs_mixfreq_w[i]), TRUE); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(d->bufsizespin_w), d->p_fragsize); +} + +static void +prefs_update_estimate (alsa_driver *d) +{ + char buf[64]; + + sprintf(buf, _("Estimated audio delay: %f microseconds"), (double)(1000 * (d->p_fragsize)) / d->p_mixfreq); + gtk_label_set_text(GTK_LABEL(d->estimatelabel_w), buf); +} + +static void +prefs_resolution_changed (void *a, + alsa_driver *d) +{ + d->p_resolution = (find_current_toggle(d->prefs_resolution_w, 2) + 1) * 8; +} + +static void +prefs_channels_changed (void *a, + alsa_driver *d) +{ + d->p_channels = find_current_toggle(d->prefs_channels_w, 2) + 1; +} + +static void +prefs_mixfreq_changed (void *a, + alsa_driver *d) +{ + d->p_mixfreq = mixfreqs[find_current_toggle(d->prefs_mixfreq_w, 4)]; + prefs_update_estimate(d); +} + +static void +prefs_fragsize_changed (GtkSpinButton *w, + alsa_driver *d) +{ + char buf[30]; + + d->p_fragsize = gtk_spin_button_get_value_as_int(w); + + sprintf(buf, _("(%d samples)"), d->p_fragsize); + gtk_label_set_text(GTK_LABEL(d->bufsizelabel_w), buf); + prefs_update_estimate(d); +} + +static void +prefs_alsacard_changed (GtkSpinButton *w, + alsa_driver *d) +{ + d->card_number = gtk_spin_button_get_value_as_int(w); +} + +static void +prefs_alsadevice_changed (GtkSpinButton *w, + alsa_driver *d) +{ + d->device_number = gtk_spin_button_get_value_as_int(w); +} + +static void +alsa_make_config_widgets (alsa_driver *d) +{ + GtkWidget *thing, *mainbox, *box2, *box3, *alsa_card, *alsa_device; + static const char *resolutionlabels[] = { "8 bits", "16 bits", NULL }; + static const char *channelslabels[] = { "Mono", "Stereo", NULL }; + static const char *mixfreqlabels[] = { "8000", "16000", "22050", "44100", NULL }; + + d->configwidget = mainbox = gtk_vbox_new(FALSE, 2); + + thing = gtk_label_new(_("These changes won't take effect until you restart playing.")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0); + + thing = gtk_hseparator_new(); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Resolution:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + make_radio_group_full(resolutionlabels, box2, d->prefs_resolution_w, FALSE, TRUE, (void(*)())prefs_resolution_changed, d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Channels:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + make_radio_group_full(channelslabels, box2, d->prefs_channels_w, FALSE, TRUE, (void(*)())prefs_channels_changed, d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Frequency [Hz]:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + make_radio_group_full(mixfreqlabels, box2, d->prefs_mixfreq_w, FALSE, TRUE, (void(*)())prefs_mixfreq_changed, d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + thing = gtk_label_new(_("Buffer Size:")); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + add_empty_hbox(box2); + + box3 = gtk_vbox_new(FALSE, 2); + gtk_box_pack_start(GTK_BOX(box2), box3, FALSE, TRUE, 0); + gtk_widget_show(box3); + + d->bufsizespin_w = thing = gtk_spin_button_new(GTK_ADJUSTMENT(gtk_adjustment_new(d->fragsize, 64.0, 16384.0, 64.0, 0.0, 0.0)), 0, 0); + gtk_box_pack_start(GTK_BOX(box3), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + gtk_signal_connect (GTK_OBJECT(thing), "changed", + GTK_SIGNAL_FUNC(prefs_fragsize_changed), d); + + d->bufsizelabel_w = thing = gtk_label_new(""); + gtk_box_pack_start(GTK_BOX(box3), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + add_empty_hbox(box2); + d->estimatelabel_w = thing = gtk_label_new(""); + gtk_box_pack_start(GTK_BOX(box2), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + add_empty_hbox(box2); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + alsa_card = gtk_label_new(_("ALSA card number:")); + gtk_widget_show(alsa_card); + gtk_box_pack_start(GTK_BOX(box2), alsa_card, FALSE, TRUE, 0); + add_empty_hbox(box2); + + d->alsacardspin_w = alsa_card = gtk_spin_button_new(GTK_ADJUSTMENT(gtk_adjustment_new(d->card_number, 0.0, 256.0, 1.0, 1.0, 0.0)), 0, 0); + gtk_box_pack_start(GTK_BOX(box2), alsa_card, FALSE, TRUE, 0); + gtk_widget_show(alsa_card); + gtk_signal_connect (GTK_OBJECT(alsa_card), "changed", + GTK_SIGNAL_FUNC(prefs_alsacard_changed), d); + + box2 = gtk_hbox_new(FALSE, 4); + gtk_widget_show(box2); + gtk_box_pack_start(GTK_BOX(mainbox), box2, FALSE, TRUE, 0); + + alsa_device = gtk_label_new(_("ALSA device number:")); + gtk_widget_show(alsa_device); + gtk_box_pack_start(GTK_BOX(box2), alsa_device, FALSE, TRUE, 0); + add_empty_hbox(box2); + + d->alsadevicespin_w = alsa_device = gtk_spin_button_new(GTK_ADJUSTMENT(gtk_adjustment_new(d->device_number, 0.0, 256.0, 1.0, 1.0, 0.0)), 0, 0); + gtk_box_pack_start(GTK_BOX(box2), alsa_device, FALSE, TRUE, 0); + gtk_widget_show(alsa_device); + gtk_signal_connect (GTK_OBJECT(alsa_device), "changed", + GTK_SIGNAL_FUNC(prefs_alsadevice_changed), d); + + prefs_init_from_structure(d); +} + +static GtkWidget * +alsa_getwidget (void *dp) +{ + alsa_driver * const d = dp; + + return d->configwidget; +} + +static void * +alsa_new (void) +{ + alsa_driver *d = g_new(alsa_driver, 1); + + d->card_number = 1; + d->device_number = 0; + + d->p_mixfreq = 44100; + d->p_channels = 2; + d->p_resolution = 16; + d->p_fragsize = 1024; // 2048; + d->soundfd = 0; + d->sndbuf = NULL; + d->polltag = NULL; + d->configmutex = g_mutex_new(); + + alsa_make_config_widgets(d); + + return d; +} + +static void +alsa_destroy (void *dp) +{ + alsa_driver * const d = dp; + + gtk_widget_destroy(d->configwidget); + g_mutex_free(d->configmutex); + + g_free(dp); +} + +static void +alsa_release (void *dp) +{ + alsa_driver * const d = dp; + + free(d->sndbuf); + d->sndbuf = NULL; + + audio_poll_remove(d->polltag); + d->polltag = NULL; + + if(d->soundfd != 0) { + snd_pcm_drain_playback(d->soundfd); + snd_pcm_close(d->soundfd); + d->soundfd = 0; + } +} + +static gboolean +alsa_open (void *dp) +{ + alsa_driver * const d = dp; + int mf; + + snd_pcm_format_t pf; + snd_pcm_playback_info_t pcm_info; + snd_pcm_playback_params_t pp; + snd_pcm_playback_status_t pbstat; + + int err = snd_pcm_open(&(d->soundfd), d->card_number, d->device_number, + SND_PCM_OPEN_PLAYBACK); + if (err != 0) { + char buf[256]; + sprintf(buf, _("Couldn't open ALSA device for sound output (card:%d, device:%d):\n%s"), + d->card_number, d->device_number, snd_strerror(err)); + error_error(buf); + goto out; + } + + // --- + // Set non-blocking mode. + // --- + + snd_pcm_block_mode(d->soundfd, 0); // enable block mode + + d->bits = 0; + mf = 0; + + // --- + // Select audio format + // --- + + memset(&pf, 0, sizeof(pf)); + + if (d->p_resolution == 16) { + pf.format = SND_PCM_SFMT_S16_LE; + d->bits = 16; + mf = ST_MIXER_FORMAT_S16_LE; + } + else { + pf.format = SND_PCM_SFMT_U8; + d->bits = 8; + mf = ST_MIXER_FORMAT_S8; + } + + if(d->p_channels == 2) { + d->stereo = 1; + pf.channels = d->p_channels; + mf |= ST_MIXER_FORMAT_STEREO; + } + else { + pf.channels = d->p_channels; + d->stereo = 0; + } + + pf.rate = d->p_mixfreq; + d->playrate = d->p_mixfreq; + d->mf = mf; + + err = snd_pcm_playback_format(d->soundfd, &pf); + if (err < 0) { + error_error(_("Required sound output format not supported.\n")); + goto out; + } + + snd_pcm_playback_info(d->soundfd, &pcm_info); + + memset(&pp, 0, sizeof(pp)); + + pp.fragment_size = d->p_fragsize * pf.channels * d->bits / 8; + pp.fragments_max = 1; + // pp.fragments_max = 16pcm_info.buffer_size / pp.fragment_size; + pp.fragments_room = 2; + + err = snd_pcm_playback_params(d->soundfd, &pp); + if (err < 0) { + error_error(_("Required sound output parameters not supported.\n")); + goto out; + } + + snd_pcm_playback_status(d->soundfd, &pbstat); + // d->numfrags = pbstat.fragments; + d->numfrags = 1; + d->fragsize = pbstat.fragment_size; + + d->sndbuf = calloc(1, d->fragsize); + + if(d->stereo == 1) { + d->fragsize /= 2; + } + if(d->bits == 16) { + d->fragsize /= 2; + } + + d->polltag = audio_poll_add(snd_pcm_file_descriptor(d->soundfd), GDK_INPUT_WRITE, alsa_poll_ready_playing, d); + d->firstpoll = TRUE; + d->playtime = 0; + + return TRUE; + + out: + alsa_release(dp); + return FALSE; +} + +static double +alsa_get_play_time (void *dp) +{ + alsa_driver * const d = dp; + struct timeval tv; + double curtime; + + gettimeofday(&tv, NULL); + curtime = tv.tv_sec + tv.tv_usec / 1e6; + + return d->playtime + curtime - d->outtime - d->numfrags * ((double) d->fragsize / d->playrate); +} + +static gboolean +alsa_loadsettings (void *dp, + FILE *f) +{ + alsa_driver * const d = dp; + + prefs_get_int(f, "alsa-resolution", &d->p_resolution); + prefs_get_int(f, "alsa-channels", &d->p_channels); + prefs_get_int(f, "alsa-mixfreq", &d->p_mixfreq); + prefs_get_int(f, "alsa-fragsize", &d->p_fragsize); + + prefs_get_int(f, "alsa-card", &d->card_number); + prefs_get_int(f, "alsa-device", &d->device_number); + + prefs_init_from_structure(d); + + return TRUE; +} + +static gboolean +alsa_savesettings (void *dp, + FILE *f) +{ + alsa_driver * const d = dp; + + prefs_put_int(f, "alsa-resolution", d->p_resolution); + prefs_put_int(f, "alsa-channels", d->p_channels); + prefs_put_int(f, "alsa-mixfreq", d->p_mixfreq); + prefs_put_int(f, "alsa-fragsize", d->p_fragsize); + + prefs_put_int(f, "alsa-card", d->card_number); + prefs_put_int(f, "alsa-device", d->device_number); + + return TRUE; +} + +st_out_driver driver_out_alsa = { + { "ALSA Output", + + alsa_new, + alsa_destroy, + + alsa_open, + alsa_release, + + alsa_getwidget, + alsa_loadsettings, + alsa_savesettings, + }, + + alsa_get_play_time, +}; + +#endif /* DRIVER_ALSA */ diff -urN soundtracker-0.3.1/app/effectsconfig.c soundtracker-0.3.2/app/effectsconfig.c --- soundtracker-0.3.1/app/effectsconfig.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.2/app/effectsconfig.c Sat Sep 4 12:00:08 1999 @@ -0,0 +1,190 @@ +/* + * The Real SoundTracker - Effects configuration dialog + * (by gc) + * Copyright (C) 1999 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 + +#include "i18n.h" +#include "gui-subs.h" +#include "mixer.h" +#include "effectsconfig.h" + +// The mixer being used - we edit effects through functions here. +extern st_mixer *mixer; + +// The main window. +static GtkWidget *configwindow = NULL; +// Window is split into two halves.. effect selector at top, +// Effect dialog at bottom. +static GtkWidget *cw_vbox; + +// The separate effects dialogs +static GtkWidget *reverb_dialog; + +// Effects dialog is generated from an array of this struct +typedef struct effects_object { + const char *title; + const char *shorttitle; + int type; + GtkWidget **main_dialog_wid; +} effects_object; + + +// All effects objects declared here +static effects_object effects_objects[] = { + { N_("Master Reverb"), + "reverb", + EFFECT_REVERB, + &reverb_dialog + } +}; +#define NUM_EFFECTS_OBJECTS (sizeof(effects_objects) / sizeof(effects_objects[0])) + +/* + * Stuff for the reverb dialog + */ +static GtkWidget *effects_reverb_adj_wid; + +static void effectsconfig_reverb_changed(GtkAdjustment *adj) +{ + mixer->setreverb((int) adj->value); + return; +} + +static void effectsconfig_draw_reverb(void) +{ + GtkAdjustment *effects_reverb_adj; + + // Make the main reverb container + reverb_dialog = gtk_hbox_new(FALSE, 2); + + // Make the adjuster + effects_reverb_adj = GTK_ADJUSTMENT(gtk_adjustment_new(mixer->getreverb(), + 0, 16, 1, 1, 1)); + effects_reverb_adj_wid = gtk_hscale_new(effects_reverb_adj); + + // Connect the adjustment function + gtk_signal_connect(GTK_OBJECT(effects_reverb_adj), "value_changed", + GTK_SIGNAL_FUNC(effectsconfig_reverb_changed), NULL); + // Stick it all together + gtk_box_pack_start(GTK_BOX(reverb_dialog), effects_reverb_adj_wid, + TRUE, TRUE, 0); + gtk_widget_show(effects_reverb_adj_wid); + gtk_box_pack_start(GTK_BOX(cw_vbox), reverb_dialog, TRUE, TRUE, 0); +} + +/* + * Effects dialog control functions + */ +static GtkWidget *current_dialog = NULL; + +static void show_dialog_part(GtkWidget *dialog) +{ + gtk_widget_show(dialog); + current_dialog = dialog; +} + +static void hide_dialog_part_current(void) +{ + if (current_dialog) { + gtk_widget_hide(current_dialog); + } +} + +/* + * Main window control functions + */ +static void +effectsconfig_close_requested (void) +{ + if (current_dialog) { + gtk_widget_hide(current_dialog); + } + + gtk_widget_destroy(configwindow); + configwindow = NULL; +} + +static void +effectsconfig_object_changed (void *a, + void *b) +{ + unsigned n = (int) b; + + hide_dialog_part_current(); + show_dialog_part(*effects_objects[n].main_dialog_wid); + + return; +} + +void +effectsconfig_dialog(void) +{ + GtkWidget *mainbox, *thing; + OptionMenuItem menu1[NUM_EFFECTS_OBJECTS]; + int i; + + if(configwindow != NULL) { + gdk_window_raise(configwindow->window); + return; + } +#ifdef USE_GNOME + configwindow = gnome_app_new("SoundTracker", _("Playback Effects Configuration")); +#else + configwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(configwindow), _("Playback Effects Configuration")); +#endif + gtk_signal_connect (GTK_OBJECT (configwindow), "delete_event", + GTK_SIGNAL_FUNC (effectsconfig_close_requested), NULL); + + mainbox = gtk_vbox_new(FALSE, 2); + gtk_container_border_width(GTK_CONTAINER(mainbox), 4); +#ifdef USE_GNOME + gnome_app_set_contents(GNOME_APP(configwindow), mainbox); +#else + gtk_container_add(GTK_CONTAINER(configwindow), mainbox); +#endif + gtk_widget_show(mainbox); + + // Key Group Selector + for (i = 0; i < NUM_EFFECTS_OBJECTS; i++) { + menu1[i].name = gettext(effects_objects[i].title); + menu1[i].func = effectsconfig_object_changed; + } + thing = build_option_menu(menu1, NUM_EFFECTS_OBJECTS, 0); + gtk_widget_show(thing); + gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, FALSE, 0); + + cw_vbox = gtk_vbox_new(FALSE, 2); + gtk_box_pack_start(GTK_BOX(mainbox), cw_vbox, TRUE, TRUE, 0); + gtk_widget_show(cw_vbox); + + // Get effect dialogs ready : + effectsconfig_draw_reverb(); + + current_dialog = NULL; + effectsconfig_object_changed(NULL, (void*)0); + + gtk_widget_show(configwindow); +} diff -urN soundtracker-0.3.1/app/effectsconfig.h soundtracker-0.3.2/app/effectsconfig.h --- soundtracker-0.3.1/app/effectsconfig.h Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.2/app/effectsconfig.h Fri Sep 3 15:30:23 1999 @@ -0,0 +1,31 @@ +/* + * The Real SoundTracker - Effects configuration dialog (header) + * (by gc) + * Copyright (C) 1999 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 _ST_EFFECTSCONFIG_H +#define _ST_EFFECTSCONFIG_H + +#include + +void effectsconfig_dialog (void); + +#define EFFECT_REVERB 0 + +#endif /* _ST_EFFECTSCONFIG.H */ + diff -urN soundtracker-0.3.1/app/envelope-box.c soundtracker-0.3.2/app/envelope-box.c --- soundtracker-0.3.1/app/envelope-box.c Fri Aug 13 13:44:18 1999 +++ soundtracker-0.3.2/app/envelope-box.c Sat Sep 4 18:29:47 1999 @@ -29,6 +29,7 @@ #include "gui-subs.h" #include "envelope-box.h" #include "xm.h" +#include "gui-settings.h" static STEnvelope dummy_envelope = { { { 0, 0 } }, @@ -138,8 +139,8 @@ -6, 32, 0, 32, -4, 48, 0, 48, -6, 64, 0, 64, - 2, 0, 77777, 0, - 2, 64, 77777, 64, + 2, 0, 16384, 0, + 2, 64, 16384, 64, }; int i; @@ -763,7 +764,7 @@ // Here comes the graphical stuff #ifdef USE_GNOME - if(1) { // gnome-libs-1.0.12 says aa canvas is buggy + if(gui_settings.gui_use_aa_canvas) { // gnome-libs-1.0.12 says aa canvas is buggy gtk_widget_push_visual (gdk_rgb_get_visual ()); gtk_widget_push_colormap (gdk_rgb_get_cmap ()); canvas = gnome_canvas_new_aa (); diff -urN soundtracker-0.3.1/app/gui-settings.c soundtracker-0.3.2/app/gui-settings.c --- soundtracker-0.3.1/app/gui-settings.c Thu Aug 12 20:08:13 1999 +++ soundtracker-0.3.2/app/gui-settings.c Sat Sep 4 18:35:54 1999 @@ -39,6 +39,7 @@ 1, 0, + 0, 1, @@ -99,6 +100,12 @@ } static void +gui_settings_use_aa_canvas_toggled (GtkWidget *widget) +{ + gui_settings.gui_use_aa_canvas = GTK_TOGGLE_BUTTON(widget)->active; +} + +static void gui_settings_non_empty_patterns_toggled (GtkWidget *widget) { gui_settings.save_all_patterns = GTK_TOGGLE_BUTTON(widget)->active; @@ -116,6 +123,7 @@ gui_settings_dialog (void) { GtkWidget *mainbox, *thing, *box1; + GtkTooltips *tooltips; if(configwindow != NULL) { gdk_window_raise(configwindow->window); @@ -140,6 +148,9 @@ #endif gtk_widget_show(mainbox); + tooltips = gtk_tooltips_new(); + gtk_object_set_data(GTK_OBJECT(configwindow), "tooltips", tooltips); + thing = gui_subs_create_slider(&prefs_scopesfreq_slider); gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0); gtk_widget_show(thing); @@ -162,6 +173,14 @@ gtk_signal_connect(GTK_OBJECT(thing), "toggled", GTK_SIGNAL_FUNC(gui_settings_advance_cursor_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(mainbox), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + gtk_signal_connect(GTK_OBJECT(thing), "toggled", + GTK_SIGNAL_FUNC(gui_settings_use_aa_canvas_toggled), NULL); + gtk_tooltips_set_tip(tooltips, thing, _("You need to restart SoundTracker for this change to come into effect."), NULL); + gui_subs_set_slider_value(&prefs_scopesfreq_slider, gui_settings.scopes_update_freq); gui_subs_set_slider_value(&prefs_trackerfreq_slider, gui_settings.tracker_update_freq); @@ -208,6 +227,7 @@ prefs_get_int(f, "gui-advance-cursor-in-fx-columns", &gui_settings.advance_cursor_in_fx_columns); 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, "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); @@ -234,6 +254,7 @@ prefs_put_int(f, "gui-advance-cursor-in-fx-columns", gui_settings.advance_cursor_in_fx_columns); 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, "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.3.1/app/gui-settings.h soundtracker-0.3.2/app/gui-settings.h --- soundtracker-0.3.1/app/gui-settings.h Thu Aug 12 20:02:38 1999 +++ soundtracker-0.3.2/app/gui-settings.h Sat Sep 4 18:27:22 1999 @@ -30,6 +30,7 @@ gboolean gui_display_scopes; gboolean gui_use_backing_store; + gboolean gui_use_aa_canvas; gboolean save_settings_on_exit; diff -urN soundtracker-0.3.1/app/main.c soundtracker-0.3.2/app/main.c --- soundtracker-0.3.1/app/main.c Sun Aug 22 21:06:55 1999 +++ soundtracker-0.3.2/app/main.c Sat Sep 4 23:08:48 1999 @@ -45,7 +45,11 @@ main (int argc, char *argv[]) { - extern void driver_out_oss, driver_in_oss, mixer_lqmono; + extern void driver_out_oss, driver_in_oss, +#ifdef DRIVER_ALSA + driver_out_alsa, driver_in_alsa, +#endif + mixer_lqmono; g_thread_init(NULL); @@ -80,6 +84,13 @@ &driver_out_oss); drivers[DRIVER_INPUT] = g_list_append(drivers[DRIVER_INPUT], &driver_in_oss); +#endif + +#ifdef DRIVER_ALSA + drivers[DRIVER_OUTPUT] = g_list_append(drivers[DRIVER_OUTPUT], + &driver_out_alsa); + drivers[DRIVER_INPUT] = g_list_append(drivers[DRIVER_INPUT], + &driver_in_alsa); #endif g_assert(g_list_length(drivers[DRIVER_OUTPUT]) >= 1 diff -urN soundtracker-0.3.1/app/menubar.c soundtracker-0.3.2/app/menubar.c --- soundtracker-0.3.1/app/menubar.c Sun Aug 22 21:18:39 1999 +++ soundtracker-0.3.2/app/menubar.c Sat Sep 4 19:40:56 1999 @@ -33,10 +33,12 @@ #include "scope-group.h" #include "track-editor.h" #include "audioconfig.h" +#include "effectsconfig.h" #include "gui-settings.h" #include "tips-dialog.h" #include "instrument-editor.h" #include "transposition.h" +#include "cheat-sheet.h" #ifdef USE_GNOME #include @@ -272,6 +274,8 @@ GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_PREF, 0, 0, NULL }, { GNOME_APP_UI_ITEM, N_("_Audio Configuration.."), NULL, audioconfig_dialog, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_PREF, 0, 0, NULL }, + { GNOME_APP_UI_ITEM, N_("_Playback Effects.."), NULL, effectsconfig_dialog, NULL, NULL, + 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 }, @@ -293,6 +297,8 @@ { GNOME_APP_UI_ITEM, N_("Show _Tips.."), NULL, tips_dialog_create, NULL, NULL, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BOOK_RED, 0, 0, NULL }, + { GNOME_APP_UI_ITEM, N_("_XM Effects.."), NULL, cheat_sheet_dialog, NULL, NULL, + GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_BOOK_RED, 'H', GDK_CONTROL_MASK, NULL }, GNOMEUIINFO_END }; @@ -319,7 +325,7 @@ { 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_menu[1].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[9].widget), gui_settings.save_settings_on_exit); } void @@ -360,6 +366,7 @@ { N_("/Settings/-"), NULL, NULL, 0, "" }, { N_("/Settings/_Keyboard Configuration.."), NULL, keys_dialog, 0 }, { N_("/Settings/_Audio Configuration.."), NULL, audioconfig_dialog, 0 }, + { N_("/Settings/_Playback Effects.."), NULL, effectsconfig_dialog, 0 }, { N_("/Settings/_GUI Configuration.."), NULL, gui_settings_dialog, 0 }, { N_("/Settings/-"), NULL, NULL, 0, "" }, { N_("/Settings/_Save Settings now"), NULL, menubar_save_settings_now, 0 }, @@ -368,6 +375,7 @@ { N_("/Help/_About.."), NULL, about_dialog, 0 }, { N_("/Help/-"), NULL, NULL, 0, "" }, { N_("/Help/Show _Tips.."), NULL, tips_dialog_create, 0 }, + { N_("/Help/_XM Effects.."), "H", cheat_sheet_dialog, 0 }, }; void @@ -381,11 +389,11 @@ gtk_item_factory_parse_rc(buf); - w = gtk_item_factory_get_widget(item_factory, N_("/Settings/Display Oscilloscopes")); + w = gtk_item_factory_get_widget(item_factory, _("/Settings/Display Oscilloscopes")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), gui_settings.gui_display_scopes); - w = gtk_item_factory_get_widget(item_factory, N_("/Settings/Use Backing Store")); + w = gtk_item_factory_get_widget(item_factory, _("/Settings/Use Backing Store")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), gui_settings.gui_use_backing_store); - w = gtk_item_factory_get_widget(item_factory, N_("/Settings/Save Settings on Exit")); + w = gtk_item_factory_get_widget(item_factory, _("/Settings/Save Settings on Exit")); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(w), gui_settings.save_settings_on_exit); } diff -urN soundtracker-0.3.1/app/mixer.h soundtracker-0.3.2/app/mixer.h --- soundtracker-0.3.1/app/mixer.h Sun Jul 18 18:42:24 1999 +++ soundtracker-0.3.2/app/mixer.h Fri Sep 3 15:30:23 1999 @@ -76,6 +76,11 @@ /* set final amplification factor (0.0 = mute ... 1.0 = normal ... +inf = REAL LOUD! :D)*/ void (*setampfactor) (float amplification); + /* set reverb value */ + void (*setreverb) (int r); + /* get reverb value */ + int (*getreverb) (void); + /* returns true if last mix() call had to clip the signal */ gboolean (*getclipflag) (void); diff -urN soundtracker-0.3.1/app/mixers/lqmono.c soundtracker-0.3.2/app/mixers/lqmono.c --- soundtracker-0.3.1/app/mixers/lqmono.c Fri Aug 13 13:45:12 1999 +++ soundtracker-0.3.2/app/mixers/lqmono.c Sat Sep 4 17:49:38 1999 @@ -33,6 +33,16 @@ static int mixbufsize = 0, clipflag; static int stereo; +/* Reverb control variables */ +#define REVERBERATION 110000L +static int RVc1, RVc2, RVc3, RVc4, RVc5, RVc6, RVc7, RVc8; +static int Ridx1=0, Ridx2=0, Ridx3=0, Ridx4=0, Ridx5=0, Ridx6=0, Ridx7=0, Ridx8=0; +static gint32 *RVbufL1=NULL,*RVbufL2=NULL,*RVbufL3=NULL,*RVbufL4=NULL, + *RVbufL5=NULL,*RVbufL6=NULL,*RVbufL7=NULL,*RVbufL8=NULL; +static gint32 *RVbufR1=NULL,*RVbufR2=NULL,*RVbufR3=NULL,*RVbufR4=NULL, + *RVbufR5=NULL,*RVbufR6=NULL,*RVbufR7=NULL,*RVbufR8=NULL; +static guint32 md_reverb=0; + typedef struct lqmono_channel { st_mixer_sample_info *sample; @@ -136,6 +146,81 @@ lqmono_reset (void) { memset(channels, 0, sizeof(channels)); + + RVc1 = (5000L * 44100) / REVERBERATION; + RVc2 = (5078L * 44100) / REVERBERATION; + RVc3 = (5313L * 44100) / REVERBERATION; + RVc4 = (5703L * 44100) / REVERBERATION; + RVc5 = (6250L * 44100) / REVERBERATION; + RVc6 = (6953L * 44100) / REVERBERATION; + RVc7 = (7813L * 44100) / REVERBERATION; + RVc8 = (8828L * 44100) / REVERBERATION; + + Ridx1 = 0, Ridx2 = 0, Ridx3 = 0, Ridx4 = 0; + Ridx5 = 0, Ridx6 = 0, Ridx7 = 0, Ridx8 = 0; + + if(!RVbufL1) + if(!(RVbufL1=(gint32*) calloc((RVc1+1),sizeof(gint32)))) exit(0); + memset(RVbufL1, 0, (RVc1+1)*sizeof(gint32)); + if(!RVbufL2) + if(!(RVbufL2=(gint32*) calloc((RVc2+1),sizeof(gint32)))) exit(0); + memset(RVbufL2, 0, (RVc2+1)*sizeof(gint32)); + if(!RVbufL3) + if(!(RVbufL3=(gint32*) calloc((RVc3+1),sizeof(gint32)))) exit(0); + memset(RVbufL3, 0, (RVc3+1)*sizeof(gint32)); + if(!RVbufL4) + if(!(RVbufL4=(gint32*) calloc((RVc4+1),sizeof(gint32)))) exit(0); + memset(RVbufL4, 0, (RVc4+1)*sizeof(gint32)); + if(!RVbufL5) + if(!(RVbufL5=(gint32*) calloc((RVc5+1),sizeof(gint32)))) exit(0); + memset(RVbufL5, 0, (RVc5+1)*sizeof(gint32)); + if(!RVbufL6) + if(!(RVbufL6=(gint32*) calloc((RVc6+1),sizeof(gint32)))) exit(0); + memset(RVbufL6, 0, (RVc6+1)*sizeof(gint32)); + if(!RVbufL7) + if(!(RVbufL7=(gint32*) calloc((RVc7+1),sizeof(gint32)))) exit(0); + memset(RVbufL7, 0, (RVc7+1)*sizeof(gint32)); + if(!RVbufL8) + if(!(RVbufL8=(gint32*) calloc((RVc8+1),sizeof(gint32)))) exit(0); + memset(RVbufL8, 0, (RVc8+1)*sizeof(gint32)); + + if(!RVbufR1) + if(!(RVbufR1=(gint32*) calloc((RVc1+1),sizeof(gint32)))) exit(0); + memset(RVbufR1, 0, (RVc1+1)*sizeof(gint32)); + if(!RVbufR2) + if(!(RVbufR2=(gint32*) calloc((RVc2+1),sizeof(gint32)))) exit(0); + memset(RVbufR2, 0, (RVc2+1)*sizeof(gint32)); + if(!RVbufR3) + if(!(RVbufR3=(gint32*) calloc((RVc3+1),sizeof(gint32)))) exit(0); + memset(RVbufR3, 0, (RVc3+1)*sizeof(gint32)); + if(!RVbufR4) + if(!(RVbufR4=(gint32*) calloc((RVc4+1),sizeof(gint32)))) exit(0); + memset(RVbufR4, 0, (RVc4+1)*sizeof(gint32)); + if(!RVbufR5) + if(!(RVbufR5=(gint32*) calloc((RVc5+1),sizeof(gint32)))) exit(0); + memset(RVbufR5, 0, (RVc5+1)*sizeof(gint32)); + if(!RVbufR6) + if(!(RVbufR6=(gint32*) calloc((RVc6+1),sizeof(gint32)))) exit(0); + memset(RVbufR6, 0, (RVc6+1)*sizeof(gint32)); + if(!RVbufR7) + if(!(RVbufR7=(gint32*) calloc((RVc7+1),sizeof(gint32)))) exit(0); + memset(RVbufR7, 0, (RVc7+1)*sizeof(gint32)); + if(!RVbufR8) + if(!(RVbufR8=(gint32*) calloc((RVc8+1),sizeof(gint32)))) exit(0); + memset(RVbufR8, 0, (RVc8+1)*sizeof(gint32)); +} + +static void +lqmono_setreverb (int r) +{ + md_reverb = r; + return; +} + +static int +lqmono_getreverb (void) +{ + return md_reverb; } static void @@ -226,6 +311,8 @@ gint8 *scopedata = NULL; int panleftmul = 0; int panrightmul = 0; + gint32 speedup; + gint32 ReverbPct; if(count > mixbufsize) { free(mixbuf); @@ -382,6 +469,51 @@ g_mutex_unlock(c->sample->lock); } + /* time for some reverb! (code ripped and optimised from libmikmod) */ + /* Reverb macros.. */ +#define COMPUTE_LECHO(n) RVbufL##n [Ridx##n ]=speedup+((ReverbPct*RVbufL##n [Ridx##n ])>>7) +#define COMPUTE_RECHO(n) RVbufR##n [Ridx##n ]=speedup+((ReverbPct*RVbufR##n [Ridx##n ])>>7) +#define INCR_LOOP(n) Ridx##n ++; if (Ridx##n >= RVc##n ) Ridx##n = 0; + + if(md_reverb != 0) { + ReverbPct=92+(md_reverb<<1); + + if (stereo) { + for(todo=0; todo < (count*2); todo+=2) { + + /* Compute the left channel echo buffers */ + speedup = mixbuf[todo]>>3; + COMPUTE_LECHO(1); COMPUTE_LECHO(2); COMPUTE_LECHO(3); COMPUTE_LECHO(4); + COMPUTE_LECHO(5); COMPUTE_LECHO(6); COMPUTE_LECHO(7); COMPUTE_LECHO(8); + + speedup = mixbuf[todo+1]>>3; + COMPUTE_RECHO(1); COMPUTE_RECHO(2); COMPUTE_RECHO(3); COMPUTE_RECHO(4); + COMPUTE_RECHO(5); COMPUTE_RECHO(6); COMPUTE_RECHO(7); COMPUTE_RECHO(8); + + INCR_LOOP(1); INCR_LOOP(2); INCR_LOOP(3); INCR_LOOP(4); + INCR_LOOP(5); INCR_LOOP(6); INCR_LOOP(7); INCR_LOOP(8); + + mixbuf[todo] += RVbufL1[Ridx1]-RVbufL2[Ridx2]+RVbufL3[Ridx3]-RVbufL4[Ridx4]+ + RVbufL5[Ridx5]-RVbufL6[Ridx6]+RVbufL7[Ridx7]-RVbufL8[Ridx8]; + mixbuf[todo+1] += RVbufR1[Ridx1]-RVbufR2[Ridx2]+RVbufR3[Ridx3]-RVbufR4[Ridx4]+ + RVbufR5[Ridx5]-RVbufR6[Ridx6]+RVbufR7[Ridx7]-RVbufR8[Ridx8]; + } + } else { // mono + for(todo=0; todo < (count); todo++) { + /* Compute the left channel echo buffers */ + speedup = mixbuf[todo]>>3; + COMPUTE_LECHO(1); COMPUTE_LECHO(2); COMPUTE_LECHO(3); COMPUTE_LECHO(4); + COMPUTE_LECHO(5); COMPUTE_LECHO(6); COMPUTE_LECHO(7); COMPUTE_LECHO(8); + + INCR_LOOP(1); INCR_LOOP(2); INCR_LOOP(3); INCR_LOOP(4); + INCR_LOOP(5); INCR_LOOP(6); INCR_LOOP(7); INCR_LOOP(8); + + mixbuf[todo] += RVbufL1[Ridx1]-RVbufL2[Ridx2]+RVbufL3[Ridx3]-RVbufL4[Ridx4]+ + RVbufL5[Ridx5]-RVbufL6[Ridx6]+RVbufL7[Ridx7]-RVbufL8[Ridx8]; + } + } + } + /* modules with many channels get additional amplification here */ t = (4 * log(num_channels) / log(4)) * 64 * 8; @@ -392,7 +524,7 @@ a *= amp; /* amplify */ a /= t; - b = MAX(-32768, MIN(32767, a)); + b = CLAMP(a, -32768, 32767); if(a != b) { clipflag = 1; } @@ -428,6 +560,8 @@ lqmono_setstereo, lqmono_setmixfreq, lqmono_setampfactor, + lqmono_setreverb, + lqmono_getreverb, lqmono_getclipflag, lqmono_reset, lqmono_startnote, diff -urN soundtracker-0.3.1/app/preferences.c soundtracker-0.3.2/app/preferences.c --- soundtracker-0.3.1/app/preferences.c Thu Aug 12 15:29:48 1999 +++ soundtracker-0.3.2/app/preferences.c Sat Sep 4 11:51:36 1999 @@ -78,7 +78,12 @@ } p[-1] = 0; if(!strcmp(readbuf, key)) { - strncpy(destbuf, p + 2, destbuflen); + strncpy(destbuf, p + 2, destbuflen - 1); + destbuf[destbuflen - 1] = 0; + + if(strlen(destbuf) > 0 && destbuf[strlen(destbuf) - 1] == '\n') + destbuf[strlen(destbuf) - 1] = 0; + return 1; } } diff -urN soundtracker-0.3.1/app/sample-editor.c soundtracker-0.3.2/app/sample-editor.c --- soundtracker-0.3.1/app/sample-editor.c Sun Aug 29 17:50:17 1999 +++ soundtracker-0.3.2/app/sample-editor.c Sat Sep 4 11:31:50 1999 @@ -102,7 +102,6 @@ static int copybuffertype; -static void sample_editor_cancel_clicked(void); static void sample_editor_ok_clicked(void); static void sample_editor_start_sampling_clicked(void); @@ -1172,7 +1171,7 @@ thing = gtk_button_new_with_label(_("Cancel")); gtk_signal_connect(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(sample_editor_cancel_clicked), NULL); + GTK_SIGNAL_FUNC(sample_editor_stop_sampling), NULL); gtk_box_pack_start(GTK_BOX(box2), thing, TRUE, TRUE, 0); gtk_widget_show(thing); cancelbutton = thing; @@ -1204,7 +1203,7 @@ gtk_window_set_title(GTK_WINDOW(samplingwindow), _("Sampling Window")); #endif gtk_signal_connect (GTK_OBJECT (samplingwindow), "delete_event", - GTK_SIGNAL_FUNC (sample_editor_cancel_clicked), NULL); + GTK_SIGNAL_FUNC (sample_editor_stop_sampling), NULL); mainbox = gtk_vbox_new(FALSE, 2); gtk_container_border_width(GTK_CONTAINER(mainbox), 4); @@ -1230,7 +1229,7 @@ gtk_widget_show (samplingwindow); if(!sampling_driver->common.open(sampling_driver_object)) { - sample_editor_cancel_clicked(); + sample_editor_stop_sampling(); } } @@ -1274,10 +1273,14 @@ } } -static void -sample_editor_cancel_clicked (void) +void +sample_editor_stop_sampling (void) { struct recordbuf *r, *r2; + + if(!samplingwindow) { + return; + } sampling_driver->common.release(sampling_driver_object); diff -urN soundtracker-0.3.1/app/sample-editor.h soundtracker-0.3.2/app/sample-editor.h --- soundtracker-0.3.1/app/sample-editor.h Sun Aug 22 18:17:46 1999 +++ soundtracker-0.3.2/app/sample-editor.h Sat Sep 4 11:19:28 1999 @@ -38,6 +38,8 @@ void sample_editor_update_mixer_position (double songtime); void sample_editor_update (void); +void sample_editor_stop_sampling (void); + extern st_in_driver *sampling_driver; extern void *sampling_driver_object; diff -urN soundtracker-0.3.1/app/tips-dialog.c soundtracker-0.3.2/app/tips-dialog.c --- soundtracker-0.3.1/app/tips-dialog.c Thu Aug 12 15:29:48 1999 +++ soundtracker-0.3.2/app/tips-dialog.c Sat Sep 4 17:31:22 1999 @@ -33,16 +33,14 @@ #include "tips-dialog.h" #include "preferences.h" -#define TIPS_FILE_NAME "soundtracker_tips.txt" - static int tips_dialog_hide (GtkWidget *widget, gpointer data); static int tips_show_next (GtkWidget *widget, gpointer data); static void tips_toggle_update (GtkWidget *widget, gpointer data); -static void read_tips_file(char *filename); +static void read_tips_file (void); static GtkWidget *tips_dialog = NULL; static GtkWidget *tips_label; -static char ** tips_text = NULL; +static const char **tips_text = NULL; static int tips_count = 0; static int old_show_tips; @@ -63,7 +61,6 @@ GtkWidget *button_prev; GtkWidget *vbox_check; GtkWidget *button_check; - gchar * temp; #if 0 GtkWidget *frame; @@ -77,10 +74,7 @@ if (tips_count == 0) { - temp = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "%s", - DATADIR, TIPS_FILE_NAME); - read_tips_file (temp); - g_free (temp); + read_tips_file (); } if (last_tip >= tips_count || last_tip < 0) @@ -91,7 +85,6 @@ tips_dialog = gtk_window_new (GTK_WINDOW_DIALOG); gtk_window_set_wmclass (GTK_WINDOW (tips_dialog), "tip_of_the_day", "SoundTracker"); gtk_window_set_title (GTK_WINDOW (tips_dialog), (_("SoundTracker Tip of the day"))); - gtk_window_set_position (GTK_WINDOW (tips_dialog), GTK_WIN_POS_CENTER); gtk_signal_connect (GTK_OBJECT (tips_dialog), "delete_event", GTK_SIGNAL_FUNC (tips_dialog_hide), NULL); /* destroy the tips window if the mainlevel gtk_main() function is left */ @@ -247,64 +240,43 @@ } static void -store_tip (char *str) +store_tip (const char *str) { tips_count++; tips_text = g_realloc(tips_text, sizeof(char *) * tips_count); tips_text[tips_count - 1] = str; } +static char const * const tips_array[] = { + N_("Welcome to SoundTracker!\n" + "\n" + "If you are new to this type of program, you will want to get hold of\n" + "some XM or MOD files first and play with them."), + + N_("You can make SoundTracker's edit mode more responsive to keyboard\n" + "input by decreasing the mixing buffer size of the \"Editing\" object in\n" + "the Audio Configuration."), + + N_("You can adjust the loop points in the sample editor by holding Shift\n" + "and using the left and right mousebuttons.\n"), + + N_("If you want to know more about tracking, and how the various commands\n" + "work, have a look at http://www.united-trackers.org/"), + + N_("You can assign samples of an instrument to the individual keys by\n" + "activating its sample and then clicking on the keyboard in the\n" + "instrument editor page.") +}; + static void -read_tips_file (char *filename) +read_tips_file (void) { - FILE *fp; - char *tip = NULL; - char *str = NULL; - - fp = fopen (filename, "r"); - if (!fp) - { - store_tip (("Your SoundTracker tips file appears to be missing!\n" - "There should be a file called " TIPS_FILE_NAME " in\n" - DATADIR " -- please check your installation.")); - return; - } + int i; - str = g_new (char, 1024); - while (!feof (fp)) - { - if (!fgets (str, 1024, fp)) - continue; - - if (str[0] == '#' || str[0] == '\n') - { - if (tip != NULL) - { - tip[strlen (tip) - 1] = '\000'; - store_tip (tip); - tip = NULL; - } - } - else - { - if (tip == NULL) - { - tip = g_malloc (strlen (str) + 1); - strcpy (tip, str); - } - else - { - tip = g_realloc (tip, strlen (tip) + strlen (str) + 1); - strcat (tip, str); - } - } + for(i = 0; i < sizeof(tips_array) / sizeof(tips_array[0]); i++) { + store_tip(gettext(tips_array[i])); } - if (tip != NULL) - store_tip (tip); - g_free (str); - fclose (fp); } - void tips_dialog_load_settings (void) diff -urN soundtracker-0.3.1/config.h.in soundtracker-0.3.2/config.h.in --- soundtracker-0.3.1/config.h.in Wed Aug 11 14:56:48 1999 +++ soundtracker-0.3.2/config.h.in Fri Sep 3 15:34:06 1999 @@ -48,6 +48,7 @@ #undef WORDS_BIGENDIAN #undef DRIVER_OSS +#undef DRIVER_ALSA #undef USE_GNOME #undef NO_AUDIOFILE @@ -108,9 +109,6 @@ /* Define if you have the header file. */ #undef HAVE_ARGZ_H -/* Define if you have the header file. */ -#undef HAVE_FCNTL_H - /* Define if you have the header file. */ #undef HAVE_LIMITS_H @@ -129,9 +127,6 @@ /* Define if you have the header file. */ #undef HAVE_STRING_H -/* Define if you have the header file. */ -#undef HAVE_SYS_IOCTL_H - /* Define if you have the header file. */ #undef HAVE_SYS_PARAM_H @@ -140,9 +135,6 @@ /* Define if you have the header file. */ #undef HAVE_SYS_SOUNDCARD_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TIME_H /* Define if you have the header file. */ #undef HAVE_UNISTD_H diff -urN soundtracker-0.3.1/configure soundtracker-0.3.2/configure --- soundtracker-0.3.1/configure Sun Aug 29 18:50:00 1999 +++ soundtracker-0.3.2/configure Fri Sep 3 15:45:11 1999 @@ -31,6 +31,8 @@ --with-audiofile-exec-prefix=PFX Exec prefix where AUDIOFILE is installed (optional)" ac_help="$ac_help --disable-audiofiletest Do not try to compile and run a test AUDIOFILE program" +ac_help="$ac_help + --disable-alsa Disable ALSA (default = no)" # Initialize some variables set by options. # The variables have the same names as the options, with @@ -572,7 +574,7 @@ # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:576: checking for a BSD compatible install" >&5 +echo "configure:578: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -625,7 +627,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:629: checking whether build environment is sane" >&5 +echo "configure:631: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -682,7 +684,7 @@ test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:686: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:688: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -712,7 +714,7 @@ PACKAGE=soundtracker -VERSION=0.3.1 +VERSION=0.3.2 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; } @@ -729,7 +731,7 @@ missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:733: checking for working aclocal" >&5 +echo "configure:735: 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. @@ -742,7 +744,7 @@ fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:746: checking for working autoconf" >&5 +echo "configure:748: 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. @@ -755,7 +757,7 @@ fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:759: checking for working automake" >&5 +echo "configure:761: 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. @@ -768,7 +770,7 @@ fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:772: checking for working autoheader" >&5 +echo "configure:774: 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. @@ -781,7 +783,7 @@ fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:785: checking for working makeinfo" >&5 +echo "configure:787: 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. @@ -801,7 +803,7 @@ ALL_LINGUAS="ja" echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:805: checking how to run the C preprocessor" >&5 +echo "configure:807: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -816,13 +818,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:826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:828: \"$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 : @@ -833,13 +835,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:843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:845: \"$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 : @@ -850,13 +852,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:860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:862: \"$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 : @@ -883,7 +885,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:887: checking for $ac_word" >&5 +echo "configure:889: 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 @@ -913,7 +915,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:917: checking for $ac_word" >&5 +echo "configure:919: 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 @@ -964,7 +966,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:968: checking for $ac_word" >&5 +echo "configure:970: 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 @@ -996,7 +998,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1000: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1002: 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. @@ -1007,12 +1009,12 @@ cat > conftest.$ac_ext << EOF -#line 1011 "configure" +#line 1013 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1016: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1018: \"$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 @@ -1038,12 +1040,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:1042: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1044: 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:1047: checking whether we are using GNU C" >&5 +echo "configure:1049: 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 @@ -1052,7 +1054,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1056: \"$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:1058: \"$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 @@ -1071,7 +1073,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1075: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1077: 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 @@ -1105,7 +1107,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:1109: checking for $ac_word" >&5 +echo "configure:1111: 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 @@ -1133,7 +1135,7 @@ fi echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:1137: checking for POSIXized ISC" >&5 +echo "configure:1139: 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 @@ -1154,12 +1156,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:1158: checking for ANSI C header files" >&5 +echo "configure:1160: 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 @@ -1167,7 +1169,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1171: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1173: \"$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* @@ -1184,7 +1186,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 @@ -1202,7 +1204,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 @@ -1223,7 +1225,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -1234,7 +1236,7 @@ exit (0); } EOF -if { (eval echo configure:1238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:1240: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -1258,12 +1260,12 @@ fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:1262: checking for working const" >&5 +echo "configure:1264: 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:1318: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -1333,21 +1335,21 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:1337: checking for inline" >&5 +echo "configure:1339: 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:1353: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -1373,12 +1375,12 @@ esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:1377: checking for off_t" >&5 +echo "configure:1379: 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 @@ -1406,12 +1408,12 @@ fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:1410: checking for size_t" >&5 +echo "configure:1412: 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 @@ -1441,19 +1443,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:1445: checking for working alloca.h" >&5 +echo "configure:1447: 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:1457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1459: \"$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 @@ -1474,12 +1476,12 @@ fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:1478: checking for alloca" >&5 +echo "configure:1480: 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:1513: \"$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 @@ -1539,12 +1541,12 @@ echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:1543: checking whether alloca needs Cray hooks" >&5 +echo "configure:1545: 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:1573: checking for $ac_func" >&5 +echo "configure:1575: 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:1603: \"$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 @@ -1624,7 +1626,7 @@ fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:1628: checking stack direction for C alloca" >&5 +echo "configure:1630: 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 @@ -1632,7 +1634,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:1657: \"$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 @@ -1676,17 +1678,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1680: checking for $ac_hdr" >&5 +echo "configure:1682: 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:1690: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1692: \"$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* @@ -1715,12 +1717,12 @@ for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1719: checking for $ac_func" >&5 +echo "configure:1721: 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:1749: \"$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 @@ -1768,7 +1770,7 @@ done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:1772: checking for working mmap" >&5 +echo "configure:1774: 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 @@ -1776,7 +1778,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:1922: \"$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 @@ -1944,17 +1946,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1948: checking for $ac_hdr" >&5 +echo "configure:1950: 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:1958: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1960: \"$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* @@ -1984,12 +1986,12 @@ strdup __argz_count __argz_stringify __argz_next do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1988: checking for $ac_func" >&5 +echo "configure:1990: 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:2018: \"$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 @@ -2041,12 +2043,12 @@ for ac_func in stpcpy do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2045: checking for $ac_func" >&5 +echo "configure:2047: 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:2075: \"$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 @@ -2103,19 +2105,19 @@ if test $ac_cv_header_locale_h = yes; then echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 -echo "configure:2107: checking for LC_MESSAGES" >&5 +echo "configure:2109: 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:2119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2121: \"$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 @@ -2136,7 +2138,7 @@ fi fi echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 -echo "configure:2140: checking whether NLS is requested" >&5 +echo "configure:2142: 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" @@ -2156,7 +2158,7 @@ EOF echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 -echo "configure:2160: checking whether included gettext is requested" >&5 +echo "configure:2162: 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" @@ -2175,17 +2177,17 @@ ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 -echo "configure:2179: checking for libintl.h" >&5 +echo "configure:2181: 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:2189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2191: \"$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* @@ -2202,19 +2204,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:2206: checking for gettext in libc" >&5 +echo "configure:2208: 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:2218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2220: \"$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 @@ -2230,7 +2232,7 @@ if test "$gt_cv_func_gettext_libc" != "yes"; then echo $ac_n "checking for bindtextdomain in -lintl""... $ac_c" 1>&6 -echo "configure:2234: checking for bindtextdomain in -lintl" >&5 +echo "configure:2236: 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 @@ -2238,7 +2240,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:2255: \"$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 @@ -2265,12 +2267,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:2269: checking for gettext in libintl" >&5 +echo "configure:2271: 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:2274: checking for gettext in -lintl" >&5 +echo "configure:2276: 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 @@ -2278,7 +2280,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:2295: \"$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 @@ -2328,7 +2330,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:2332: checking for $ac_word" >&5 +echo "configure:2334: 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 @@ -2362,12 +2364,12 @@ for ac_func in dcgettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2366: checking for $ac_func" >&5 +echo "configure:2368: 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:2396: \"$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 @@ -2417,7 +2419,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:2421: checking for $ac_word" >&5 +echo "configure:2423: 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 @@ -2453,7 +2455,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:2457: checking for $ac_word" >&5 +echo "configure:2459: 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 @@ -2485,7 +2487,7 @@ fi cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* CATOBJEXT=.gmo DATADIRNAME=share @@ -2516,7 +2518,7 @@ if test "$CATOBJEXT" = "NONE"; then echo $ac_n "checking whether catgets can be used""... $ac_c" 1>&6 -echo "configure:2520: checking whether catgets can be used" >&5 +echo "configure:2522: 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" @@ -2529,7 +2531,7 @@ if test "$nls_cv_use_catgets" = "yes"; then echo $ac_n "checking for main in -li""... $ac_c" 1>&6 -echo "configure:2533: checking for main in -li" >&5 +echo "configure:2535: 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 @@ -2537,14 +2539,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:2550: \"$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 @@ -2572,12 +2574,12 @@ fi echo $ac_n "checking for catgets""... $ac_c" 1>&6 -echo "configure:2576: checking for catgets" >&5 +echo "configure:2578: 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:2606: \"$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 @@ -2622,7 +2624,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:2626: checking for $ac_word" >&5 +echo "configure:2628: 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 @@ -2658,7 +2660,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:2662: checking for $ac_word" >&5 +echo "configure:2664: 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 @@ -2695,7 +2697,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:2699: checking for $ac_word" >&5 +echo "configure:2701: 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 @@ -2730,7 +2732,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:2734: checking for $ac_word" >&5 +echo "configure:2736: 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 @@ -2788,7 +2790,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:2792: checking for $ac_word" >&5 +echo "configure:2794: 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 @@ -2822,7 +2824,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:2826: checking for $ac_word" >&5 +echo "configure:2828: 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 @@ -2858,7 +2860,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:2862: checking for $ac_word" >&5 +echo "configure:2864: 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 @@ -2951,7 +2953,7 @@ LINGUAS= else echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 -echo "configure:2955: checking for catalogs to be installed" >&5 +echo "configure:2957: checking for catalogs to be installed" >&5 NEW_LINGUAS= for lang in ${LINGUAS=$ALL_LINGUAS}; do case "$ALL_LINGUAS" in @@ -2979,17 +2981,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:2983: checking for linux/version.h" >&5 +echo "configure:2985: 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:2993: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2995: \"$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* @@ -3058,7 +3060,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:3062: checking for $ac_word" >&5 +echo "configure:3064: 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 @@ -3088,7 +3090,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:3092: checking for $ac_word" >&5 +echo "configure:3094: 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 @@ -3139,7 +3141,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:3143: checking for $ac_word" >&5 +echo "configure:3145: 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 @@ -3171,7 +3173,7 @@ fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:3175: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:3177: 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. @@ -3182,12 +3184,12 @@ cat > conftest.$ac_ext << EOF -#line 3186 "configure" +#line 3188 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:3191: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3193: \"$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 @@ -3213,12 +3215,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:3217: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:3219: 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:3222: checking whether we are using GNU C" >&5 +echo "configure:3224: 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 @@ -3227,7 +3229,7 @@ yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:3231: \"$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:3233: \"$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 @@ -3246,7 +3248,7 @@ ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:3250: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:3252: 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 @@ -3280,7 +3282,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:3284: checking for $ac_word" >&5 +echo "configure:3286: 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 @@ -3323,7 +3325,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:3327: checking for $ac_word" >&5 +echo "configure:3329: 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 @@ -3402,7 +3404,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:3406: checking for $ac_word" >&5 +echo "configure:3408: 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 @@ -3437,7 +3439,7 @@ min_gtk_version=1.2.2 echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:3441: checking for GTK - version >= $min_gtk_version" >&5 +echo "configure:3443: checking for GTK - version >= $min_gtk_version" >&5 no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes @@ -3460,7 +3462,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -3538,7 +3540,7 @@ } EOF -if { (eval echo configure:3542: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3544: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3572,7 +3574,7 @@ CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -3582,7 +3584,7 @@ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:3586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3588: \"$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" @@ -3635,7 +3637,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:3639: checking for $ac_word" >&5 +echo "configure:3641: 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 @@ -3668,7 +3670,7 @@ fi echo $ac_n "checking for Gnome compile flags""... $ac_c" 1>&6 -echo "configure:3672: checking for Gnome compile flags" >&5 +echo "configure:3674: 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/'` @@ -3740,7 +3742,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:3744: checking for $ac_word" >&5 +echo "configure:3746: 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 @@ -3775,7 +3777,7 @@ min_audiofile_version=0.1.5 echo $ac_n "checking for AUDIOFILE - version >= $min_audiofile_version""... $ac_c" 1>&6 -echo "configure:3779: checking for AUDIOFILE - version >= $min_audiofile_version" >&5 +echo "configure:3781: checking for AUDIOFILE - version >= $min_audiofile_version" >&5 no_audiofile="" if test "$AUDIOFILE_CONFIG" = "no" ; then no_audiofile=yes @@ -3798,7 +3800,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -3856,7 +3858,7 @@ EOF -if { (eval echo configure:3860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3891,7 +3893,7 @@ CFLAGS="$CFLAGS $AUDIOFILE_CFLAGS" LIBS="$LIBS $AUDIOFILE_LIBS" cat > conftest.$ac_ext < @@ -3901,7 +3903,7 @@ return 0; ; return 0; } EOF -if { (eval echo configure:3905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3907: \"$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" @@ -3941,12 +3943,12 @@ echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3945: checking for ANSI C header files" >&5 +echo "configure:3947: 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 @@ -3954,7 +3956,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3958: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3960: \"$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* @@ -3971,7 +3973,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 @@ -3989,7 +3991,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 @@ -4010,7 +4012,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -4021,7 +4023,7 @@ exit (0); } EOF -if { (eval echo configure:4025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4027: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -4044,21 +4046,23 @@ fi -for ac_hdr in fcntl.h sys/ioctl.h sys/time.h unistd.h + + +for ac_hdr in sys/soundcard.h machine/soundcard.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4052: checking for $ac_hdr" >&5 +echo "configure:4056: 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:4062: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4066: \"$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* @@ -4081,59 +4085,81 @@ else echo "$ac_t""no" 1>&6 -{ echo "configure: error: Need those header files." 1>&2; exit 1; } fi done +if test "${ac_cv_header_sys_soundcard_h}" = "yes" || \ + test "${ac_cv_header_machine_soundcard_h}" = "yes"; then + cat >> confdefs.h <<\EOF +#define DRIVER_OSS 1 +EOF +fi -for ac_hdr in sys/soundcard.h machine/soundcard.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4095: checking for $ac_hdr" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + +echo $ac_n "checking for snd_cards in -lasound""... $ac_c" 1>&6 +echo "configure:4102: 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 else - cat > conftest.$ac_ext < conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char snd_cards(); + +int main() { +snd_cards() +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4105: \"$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 +if { (eval echo configure:4121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* +LIBS="$ac_save_LIBS" + fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 +alsa_support=no fi -done -if test "${ac_cv_header_sys_soundcard_h}" = "yes" || \ - test "${ac_cv_header_machine_soundcard_h}" = "yes"; then - cat >> confdefs.h <<\EOF -#define DRIVER_OSS 1 -EOF +# Check whether --enable-alsa or --disable-alsa was given. +if test "${enable_alsa+set}" = set; then + enableval="$enable_alsa" + alsa_support=no +fi + + +if test x$alsa_support = xyes; then + DRIVER_ALSA_TRUE= + DRIVER_ALSA_FALSE='#' +else + DRIVER_ALSA_TRUE='#' + DRIVER_ALSA_FALSE= fi +if test x$alsa_support = xyes; then +cat >> confdefs.h <<\EOF +#define DRIVER_ALSA 1 +EOF + +LIBS="$LIBS -lasound" +fi HAVE_POLL="no" @@ -4141,17 +4167,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4145: checking for $ac_hdr" >&5 +echo "configure:4171: 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:4155: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4181: \"$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* @@ -4174,12 +4200,12 @@ for ac_func in poll do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4178: checking for $ac_func" >&5 +echo "configure:4204: 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:4232: \"$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 @@ -4237,12 +4263,12 @@ for ac_func in select do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4241: checking for $ac_func" >&5 +echo "configure:4267: 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:4295: \"$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 @@ -4294,14 +4320,14 @@ echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4298: checking whether byte ordering is bigendian" >&5 +echo "configure:4324: 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 @@ -4312,11 +4338,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:4316: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4342: \"$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 @@ -4327,7 +4353,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:4331: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4357: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4347,7 +4373,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:4390: \"$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 @@ -4568,6 +4594,8 @@ s%@AUDIOFILE_CONFIG@%$AUDIOFILE_CONFIG%g s%@AUDIOFILE_CFLAGS@%$AUDIOFILE_CFLAGS%g s%@AUDIOFILE_LIBS@%$AUDIOFILE_LIBS%g +s%@DRIVER_ALSA_TRUE@%$DRIVER_ALSA_TRUE%g +s%@DRIVER_ALSA_FALSE@%$DRIVER_ALSA_FALSE%g CEOF EOF diff -urN soundtracker-0.3.1/configure.in soundtracker-0.3.2/configure.in --- soundtracker-0.3.1/configure.in Sun Aug 29 18:49:54 1999 +++ soundtracker-0.3.2/configure.in Fri Sep 3 15:45:07 1999 @@ -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.3.1) +AM_INIT_AUTOMAKE(soundtracker, 0.3.2) AM_CONFIG_HEADER(config.h) dnl ----------------------------------------------------------------------- @@ -87,7 +87,7 @@ dnl ----------------------------------------------------------------------- AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h unistd.h,, AC_MSG_ERROR(Need those header files.)) +dnl AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h unistd.h,, AC_MSG_ERROR(Need those header files.)) dnl ----------------------------------------------------------------------- dnl Test for OSS headers @@ -98,6 +98,20 @@ test "${ac_cv_header_machine_soundcard_h}" = "yes"; then AC_DEFINE(DRIVER_OSS) fi + +dnl ----------------------------------------------------------------------- +dnl Test for ALSA-lib +dnl ----------------------------------------------------------------------- + +AC_CHECK_LIB(asound,snd_cards,alsa_support=yes,alsa_support=no) +AC_ARG_ENABLE(alsa, +[ --disable-alsa Disable ALSA (default = no)], +alsa_support=no) +AM_CONDITIONAL(DRIVER_ALSA, test x$alsa_support = xyes) +if test x$alsa_support = xyes; then +AC_DEFINE(DRIVER_ALSA) +LIBS="$LIBS -lasound" +fi dnl ----------------------------------------------------------------------- dnl Test for poll() diff -urN soundtracker-0.3.1/po/POTFILES.in soundtracker-0.3.2/po/POTFILES.in --- soundtracker-0.3.1/po/POTFILES.in Thu Aug 12 16:12:59 1999 +++ soundtracker-0.3.2/po/POTFILES.in Sat Sep 4 18:43:41 1999 @@ -1,8 +1,11 @@ app/audio.c app/audioconfig.c app/clavier.c +app/drivers/alsa-input.c +app/drivers/alsa-output.c app/drivers/oss-input.c app/drivers/oss-output.c +app/effectsconfig.c app/envelope-box.c app/errors.c app/extspinbutton.c @@ -26,5 +29,6 @@ app/tips-dialog.c app/track-editor.c app/tracker.c +app/transposition.c app/xm-player.c app/xm.c diff -urN soundtracker-0.3.1/po/cat-id-tbl.c soundtracker-0.3.2/po/cat-id-tbl.c --- soundtracker-0.3.1/po/cat-id-tbl.c Wed Aug 25 13:38:28 1999 +++ soundtracker-0.3.2/po/cat-id-tbl.c Sat Sep 4 19:41:15 1999 @@ -13,276 +13,331 @@ {"Sampling", 4}, {"Driver Module", 5}, {"Audio Configuration", 6}, - {"no settings (yet), sorry!", 7}, + {"Estimated audio delay: %f microseconds", 7}, + {"(%d samples)", 8}, + {"These changes won't take effect until you restart playing.", 9}, + {"Resolution:", 10}, + {"Channels:", 11}, + {"Frequency [Hz]:", 12}, + {"Buffer Size:", 13}, + {"ALSA card number:", 14}, + {"ALSA device number:", 15}, + {"\ +Couldn't open ALSA device for sound input (card:%d, device:%d):\n\ +%s", 16}, + {"Required sound output format not supported.\n", 17}, + {"Required sound output parameters not supported.\n", 18}, + {"\ +Couldn't open ALSA device for sound output (card:%d, device:%d):\n\ +%s", 19}, + {"no settings (yet), sorry!", 20}, {"\ Couldn't open /dev/dsp for sampling:\n\ -%s", 8}, - {"Required sound output format not supported.\n", 9}, - {"Estimated audio delay: %f microseconds", 10}, - {"(%d samples)", 11}, - {"These changes won't take effect until you restart playing.", 12}, - {"Resolution:", 13}, - {"Channels:", 14}, - {"Frequency [Hz]:", 15}, - {"Buffer Size:", 16}, +%s", 21}, {"\ Couldn't open /dev/dsp for sound output:\n\ -%s", 17}, - {"Length", 18}, - {"Current", 19}, - {"Offset", 20}, - {"Value", 21}, - {"Insert", 22}, - {"Delete", 23}, +%s", 22}, + {"Master Reverb", 23}, + {"Playback Effects Configuration", 24}, + {"Length", 25}, + {"Current", 26}, + {"Offset", 27}, + {"Value", 28}, + {"Insert", 29}, + {"Delete", 30}, {"\ Graphical\n\ Envelope\n\ Editor\n\ only in\n\ -GNOME Version", 24}, - {"Sustain", 25}, - {"Point", 26}, - {"Loop", 27}, - {"Start", 28}, - {"End", 29}, - {"Scopes Frequency", 30}, - {"Tracker Frequency", 31}, - {"GUI Configuration", 32}, - {"Use Hexadecimal Numbers", 33}, - {"Advance Cursor in FX Columns", 34}, - {"Scopes buffer size [MB]", 35}, - {"`Save XM' saves all non-empty patterns", 36}, - {"Question", 37}, - {"Cancel", 38}, - {"Warning", 39}, - {"Error!", 40}, - {"Tempo", 41}, +GNOME Version", 31}, + {"Sustain", 32}, + {"Point", 33}, + {"Loop", 34}, + {"Start", 35}, + {"End", 36}, + {"Scopes Frequency", 37}, + {"Tracker Frequency", 38}, + {"GUI Configuration", 39}, + {"Use Hexadecimal Numbers", 40}, + {"Advance Cursor in FX Columns", 41}, + {"Use anti-aliased envelope editor", 42}, + {"You need to restart SoundTracker for this change to come into effect.", 43}, + {"Scopes buffer size [MB]", 44}, + {"`Save XM' saves all non-empty patterns", 45}, + {"Question", 46}, + {"Cancel", 47}, + {"Warning", 48}, + {"Error!", 49}, + {"Tempo", 50}, {"\ Are you sure you want to free the current project?\n\ -All changes will be lost!", 42}, - {"Are you sure you want to overwrite the file?", 43}, - {"Song length", 44}, - {"Current pos", 45}, - {"Pattern", 46}, - {"Restart pos", 47}, - {"Load XM...", 48}, - {"Save XM...", 49}, - {"Play Song", 50}, - {"Play Pattern", 51}, - {"Stop", 52}, - {"Number of Channels:", 53}, - {"PatLength", 54}, - {"Octave", 55}, - {"Jump", 56}, - {"Instr", 57}, - {"Sample", 58}, - {"VolFade", 59}, - {"VibSpeed", 60}, - {"VibDepth", 61}, - {"VibSweep", 62}, - {"Can't open file.", 63}, - {"Saving Instruments not yet supported.", 64}, - {"Sine", 65}, - {"Square", 66}, - {"Saw Down", 67}, - {"Saw Up", 68}, - {"Instrument Editor", 69}, - {"Volume envelope", 70}, - {"Panning envelope", 71}, - {"Load Instrument..", 72}, - {"Save Instrument..", 73}, - {"Load XI", 74}, - {"Save XI", 75}, - {"Vibrato Type:", 76}, - {"Note:", 77}, - {"Initialize", 78}, - {"The key that inserts the special keyoff note for FastTracker modules.", 79}, - {"Upper Octave Keys..", 80}, +All changes will be lost!", 51}, + {"Are you sure you want to overwrite the file?", 52}, + {"Song length", 53}, + {"Current pos", 54}, + {"Pattern", 55}, + {"Restart pos", 56}, + {"Load XM...", 57}, + {"Save XM...", 58}, + {"Play Song", 59}, + {"Play Pattern", 60}, + {"Stop", 61}, + {"Number of Channels:", 62}, + {"PatLength", 63}, + {"Octave", 64}, + {"Jump", 65}, + {"Instr", 66}, + {"Sample", 67}, + {"VolFade", 68}, + {"VibSpeed", 69}, + {"VibDepth", 70}, + {"VibSweep", 71}, + {"Can't open file.", 72}, + {"Saving Instruments not yet supported.", 73}, + {"Sine", 74}, + {"Square", 75}, + {"Saw Down", 76}, + {"Saw Up", 77}, + {"Instrument Editor", 78}, + {"Volume envelope", 79}, + {"Panning envelope", 80}, + {"Load Instrument..", 81}, + {"Save Instrument..", 82}, + {"Load XI", 83}, + {"Save XI", 84}, + {"Vibrato Type:", 85}, + {"Note:", 86}, + {"Initialize", 87}, + {"The key that inserts the special keyoff note for FastTracker modules.", 88}, + {"Upper Octave Keys..", 89}, {"\ These are the keys on the upper half of the keyboard. The c key is normally \ the key to the right of the TAB key. The rest of the keys should be ordered \ -in a piano keyboard fashion, including the number keys row above.", 81}, - {"Lower Octave Keys..", 82}, +in a piano keyboard fashion, including the number keys row above.", 90}, + {"Lower Octave Keys..", 91}, {"\ These are the keys on the lower half of the keyboard. The c key is normally \ the first character key to the right of the left Shift key. The rest of the \ -keys should be ordered in a piano keyboard fashion, including the row above.", 83}, - {"Other Keys..", 84}, - {"Various other keys", 85}, - {"Function", 86}, - {"Assignment", 87}, - {"Keyboard Configuration", 88}, - {"Key Group Explanation", 89}, - {"Key Explanation", 90}, - {"Modifiers:", 91}, - {"Learn selected key", 92}, - {"Learn all keys", 93}, +keys should be ordered in a piano keyboard fashion, including the row above.", 92}, + {"Other Keys..", 93}, + {"Various other keys", 94}, + {"Function", 95}, + {"Assignment", 96}, + {"Keyboard Configuration", 97}, + {"Key Group Explanation", 98}, + {"Key Explanation", 99}, + {"Modifiers:", 100}, + {"Learn selected key", 101}, + {"Learn all keys", 102}, {"\ Please press the desired key combination!\n\ -Click into left list to cancel", 94}, +Click into left list to cancel", 103}, {"\ The keyboard configuration file is defective.\n\ -Please use the Keyboard Configuration dialog.", 95}, +Please use the Keyboard Configuration dialog.", 104}, {"\ Automatic key configuration unsuccessful.\n\ Please use the Keyboard Configuration dialog\n\ -in the Settings menu.", 96}, - {"Ok", 97}, +in the Settings menu.", 105}, + {"Ok", 106}, {"\ Are you sure you want to do this?\n\ -All changes will be lost!", 98}, +All changes will be lost!", 107}, {"\ Are you sure you want to quit?\n\ -All changes will be lost!", 99}, - {"_Open..", 100}, - {"Save _as..", 101}, - {"_Quit", 102}, - {"Clear _All", 103}, - {"Clear _Patterns Only", 104}, - {"_Optimize Module", 105}, - {"_Jazz Edit Mode", 106}, - {"_Transposition..", 107}, - {"_Find Unused Pattern", 108}, - {"_Copy Current to Unused Pattern", 109}, - {"C_lear Unused Patterns", 110}, - {"_Pack Patterns", 111}, - {"_Load XI..", 112}, - {"_Delete Unused Instruments", 113}, - {"Display _Oscilloscopes", 114}, - {"Use _Backing Store", 115}, - {"_Keyboard Configuration..", 116}, - {"_Audio Configuration..", 117}, - {"_GUI Configuration..", 118}, - {"_Save Settings now", 119}, - {"Save Settings on _Exit", 120}, - {"_About..", 121}, - {"Show _Tips..", 122}, - {"_File", 123}, - {"_Module", 124}, - {"_Edit", 125}, - {"_Pattern", 126}, - {"_Instrument", 127}, - {"_Settings", 128}, - {"_Help", 129}, - {"/_File", 130}, - {"/File/_Open..", 131}, - {"/File/Save _as..", 132}, - {"/File/-", 133}, - {"/File/_Quit", 134}, - {"/_Module", 135}, - {"/Module/Clear _All", 136}, - {"/Module/Clear _Patterns Only", 137}, - {"/Module/_Optimize Module", 138}, - {"/_Edit", 139}, - {"/Edit/_Jazz Edit Mode", 140}, - {"/Edit/-", 141}, - {"/Edit/_Transposition..", 142}, - {"/_Pattern", 143}, - {"/Pattern/_Find Unused Pattern", 144}, - {"/Pattern/_Copy Current to Unused Pattern", 145}, - {"/Pattern/C_lear Unused Patterns", 146}, - {"/Pattern/_Pack Patterns", 147}, - {"/_Instrument", 148}, - {"/Instrument/_Load XI..", 149}, - {"/Instrument/-", 150}, - {"/Instrument/_Delete Unused Instruments", 151}, - {"/_Settings", 152}, - {"/Settings/Display _Oscilloscopes", 153}, - {"/Settings/Use _Backing Store", 154}, - {"/Settings/-", 155}, - {"/Settings/_Keyboard Configuration..", 156}, - {"/Settings/_Audio Configuration..", 157}, - {"/Settings/_GUI Configuration..", 158}, - {"/Settings/_Save Settings now", 159}, - {"/Settings/Save Settings on _Exit", 160}, - {"/_Help", 161}, - {"/Help/_About..", 162}, - {"/Help/-", 163}, - {"/Help/Show _Tips..", 164}, - {"/Settings/Display Oscilloscopes", 165}, - {"/Settings/Use Backing Store", 166}, - {"/Settings/Save Settings on Exit", 167}, - {"Instrument Name", 168}, - {"#smpl", 169}, - {"Sample Name", 170}, - {"Linear", 171}, - {"Amiga", 172}, - {"Module Info", 173}, - {"Songname:", 174}, - {"Frequencies:", 175}, - {"ProTracker Mode", 176}, +All changes will be lost!", 108}, + {"_Open..", 109}, + {"Save _as..", 110}, + {"_Quit", 111}, + {"Clear _All", 112}, + {"Clear _Patterns Only", 113}, + {"_Optimize Module", 114}, + {"_Jazz Edit Mode", 115}, + {"_Transposition..", 116}, + {"_Find Unused Pattern", 117}, + {"_Copy Current to Unused Pattern", 118}, + {"C_lear Unused Patterns", 119}, + {"_Pack Patterns", 120}, + {"_Load XI..", 121}, + {"_Delete Unused Instruments", 122}, + {"Display _Oscilloscopes", 123}, + {"Use _Backing Store", 124}, + {"_Keyboard Configuration..", 125}, + {"_Audio Configuration..", 126}, + {"_Playback Effects..", 127}, + {"_GUI Configuration..", 128}, + {"_Save Settings now", 129}, + {"Save Settings on _Exit", 130}, + {"_About..", 131}, + {"Show _Tips..", 132}, + {"_XM Effects..", 133}, + {"_File", 134}, + {"_Module", 135}, + {"_Edit", 136}, + {"_Pattern", 137}, + {"_Instrument", 138}, + {"_Settings", 139}, + {"_Help", 140}, + {"/_File", 141}, + {"/File/_Open..", 142}, + {"/File/Save _as..", 143}, + {"/File/-", 144}, + {"/File/_Quit", 145}, + {"/_Module", 146}, + {"/Module/Clear _All", 147}, + {"/Module/Clear _Patterns Only", 148}, + {"/Module/_Optimize Module", 149}, + {"/_Edit", 150}, + {"/Edit/_Jazz Edit Mode", 151}, + {"/Edit/-", 152}, + {"/Edit/_Transposition..", 153}, + {"/_Pattern", 154}, + {"/Pattern/_Find Unused Pattern", 155}, + {"/Pattern/_Copy Current to Unused Pattern", 156}, + {"/Pattern/C_lear Unused Patterns", 157}, + {"/Pattern/_Pack Patterns", 158}, + {"/_Instrument", 159}, + {"/Instrument/_Load XI..", 160}, + {"/Instrument/-", 161}, + {"/Instrument/_Delete Unused Instruments", 162}, + {"/_Settings", 163}, + {"/Settings/Display _Oscilloscopes", 164}, + {"/Settings/Use _Backing Store", 165}, + {"/Settings/-", 166}, + {"/Settings/_Keyboard Configuration..", 167}, + {"/Settings/_Audio Configuration..", 168}, + {"/Settings/_Playback Effects..", 169}, + {"/Settings/_GUI Configuration..", 170}, + {"/Settings/_Save Settings now", 171}, + {"/Settings/Save Settings on _Exit", 172}, + {"/_Help", 173}, + {"/Help/_About..", 174}, + {"/Help/-", 175}, + {"/Help/Show _Tips..", 176}, + {"/Help/_XM Effects..", 177}, + {"/Settings/Display Oscilloscopes", 178}, + {"/Settings/Use Backing Store", 179}, + {"/Settings/Save Settings on Exit", 180}, + {"Instrument Name", 181}, + {"#smpl", 182}, + {"Sample Name", 183}, + {"Linear", 184}, + {"Amiga", 185}, + {"Module Info", 186}, + {"Songname:", 187}, + {"Frequencies:", 188}, + {"ProTracker Mode", 189}, {"\ A directory called '.soundtracker' has been created in your\n\ -home directory to store configuration files.\n", 177}, - {"No loop", 178}, - {"PingPong", 179}, - {"8 bits", 180}, - {"16 bits", 181}, - {"Sample Editor", 182}, - {"Volume", 183}, - {"Panning", 184}, - {"Finetune", 185}, - {"SelStart", 186}, - {"SelEnd", 187}, - {"Reset Sel", 188}, - {"RelNote", 189}, - {"Length: 0", 190}, - {"Load Sample..", 191}, - {"Save WAV..", 192}, - {"Load Sample", 193}, - {"Save WAV", 194}, - {"Clear", 195}, - {"Monitor", 196}, - {"Volume Ramp", 197}, - {"Zoom to selection", 198}, - {"Show all", 199}, - {"Zoom in (+50%)", 200}, - {"Zoom out (-50%)", 201}, - {"Resample", 202}, - {"Cut", 203}, - {"Remove", 204}, - {"Copy", 205}, - {"Paste", 206}, - {"Filter", 207}, - {"Length: %d", 208}, - {"No memory for copybuffer.\n", 209}, - {"", 210}, - {"Can't read sample", 211}, - {"Sample is too long for current mixer module. Loading anyway.", 212}, - {"Can only handle mono 8 and 16 bit samples", 213}, - {"Out of memory for sample data.", 214}, - {"Read error.", 215}, - {"Can't open file for writing.", 216}, - {"OK", 217}, - {"Start sampling", 218}, - {"Sampling Window", 219}, - {"out of memory while sampling...", 220}, - {"", 221}, - {"Recorded sample is too long for current mixer module. Using it anyway.", 222}, - {"Normalize", 223}, - {"Execute", 224}, - {"Close", 225}, - {"Volume Ramping", 226}, - {"Perform linear volume fade on Selection", 227}, - {"Left [%]:", 228}, - {"Right [%]:", 229}, - {"SoundTracker Tip of the day", 230}, - {"Previous Tip", 231}, - {"Next Tip", 232}, - {"Show tip next time", 233}, - {"Jazz Edit:", 234}, - {"Pattern length out of range: %d.\n", 235}, - {"Invalid vibtype %d, using Sine.\n", 236}, - {"File is no XI instrument.", 237}, - {"Unknown XI version 0x%x\n", 238}, - {"No FastTracker XM and no supported MOD format!", 239}, - {"Error while loading patterns.", 240}, - {"Can't open file", 241}, - {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 242}, - {"Error while loading instruments.", 243}, +home directory to store configuration files.\n", 190}, + {"No loop", 191}, + {"PingPong", 192}, + {"8 bits", 193}, + {"16 bits", 194}, + {"Sample Editor", 195}, + {"Volume", 196}, + {"Panning", 197}, + {"Finetune", 198}, + {"SelStart", 199}, + {"SelEnd", 200}, + {"Reset Sel", 201}, + {"RelNote", 202}, + {"Length: 0", 203}, + {"Load Sample..", 204}, + {"Save WAV..", 205}, + {"Load Sample", 206}, + {"Save WAV", 207}, + {"Clear", 208}, + {"Monitor", 209}, + {"Volume Ramp", 210}, + {"Zoom to selection", 211}, + {"Show all", 212}, + {"Zoom in (+50%)", 213}, + {"Zoom out (-50%)", 214}, + {"Resample", 215}, + {"Cut", 216}, + {"Remove", 217}, + {"Copy", 218}, + {"Paste", 219}, + {"Filter", 220}, + {"Length: %d", 221}, + {"No memory for copybuffer.\n", 222}, + {"", 223}, + {"Can't read sample", 224}, + {"Sample is too long for current mixer module. Loading anyway.", 225}, + {"Can only handle mono 8 and 16 bit samples", 226}, + {"Out of memory for sample data.", 227}, + {"Read error.", 228}, + {"Can't open file for writing.", 229}, + {"OK", 230}, + {"Start sampling", 231}, + {"Sampling Window", 232}, + {"out of memory while sampling...", 233}, + {"", 234}, + {"Recorded sample is too long for current mixer module. Using it anyway.", 235}, + {"Normalize", 236}, + {"Execute", 237}, + {"Close", 238}, + {"Volume Ramping", 239}, + {"Perform linear volume fade on Selection", 240}, + {"Left [%]:", 241}, + {"Right [%]:", 242}, + {"SoundTracker Tip of the day", 243}, + {"Previous Tip", 244}, + {"Next Tip", 245}, + {"Show tip next time", 246}, + {"\ +Welcome to SoundTracker!\n\ +\n\ +If you are new to this type of program, you will want to get hold of\n\ +some XM or MOD files first and play with them.", 247}, + {"\ +You can make SoundTracker's edit mode more responsive to keyboard\n\ +input by decreasing the mixing buffer size of the \"Editing\" object in\n\ +the Audio Configuration.", 248}, + {"\ +You can adjust the loop points in the sample editor by holding Shift\n\ +and using the left and right mousebuttons.\n", 249}, + {"\ +If you want to know more about tracking, and how the various commands\n\ +work, have a look at http://www.united-trackers.org/", 250}, + {"\ +You can assign samples of an instrument to the individual keys by\n\ +activating its sample and then clicking on the keyboard in the\n\ +instrument editor page.", 251}, + {"Jazz Edit:", 252}, + {"Whole Song", 253}, + {"All Patterns", 254}, + {"Current Pattern", 255}, + {"Current Track", 256}, + {"Current Instrument", 257}, + {"All Instruments", 258}, + {"Half note up", 259}, + {"Half note down", 260}, + {"Octave up", 261}, + {"Octave down", 262}, + {"Exchange 1 <-> 2", 263}, + {"Change 1 -> 2", 264}, + {"Transposition Tools", 265}, + {"Scope of the operation:", 266}, + {"Note Transposition", 267}, + {"Instrument Changing", 268}, + {"Instrument 1:", 269}, + {"Current instrument", 270}, + {"Instrument 2:", 271}, + {"Pattern length out of range: %d.\n", 272}, + {"Invalid vibtype %d, using Sine.\n", 273}, + {"File is no XI instrument.", 274}, + {"Unknown XI version 0x%x\n", 275}, + {"No FastTracker XM and no supported MOD format!", 276}, + {"Error while loading patterns.", 277}, + {"Can't open file", 278}, + {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 279}, + {"Error while loading instruments.", 280}, {"\ Module contains sample(s) that are too long for the current mixer.\n\ -Maximum sample length is %d.", 244}, +Maximum sample length is %d.", 281}, }; -int _msg_tbl_length = 244; +int _msg_tbl_length = 281; Binary files soundtracker-0.3.1/po/ja.gmo and soundtracker-0.3.2/po/ja.gmo differ diff -urN soundtracker-0.3.1/po/ja.po soundtracker-0.3.2/po/ja.po --- soundtracker-0.3.1/po/ja.po Sun Aug 29 18:35:42 1999 +++ soundtracker-0.3.2/po/ja.po Tue Aug 31 15:35:56 1999 @@ -5,9 +5,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: SoundTracker 0.3.0\n" +"Project-Id-Version: SoundTracker 0.3.1\n" "POT-Creation-Date: 1999-08-29 17:53+0200\n" -"PO-Revision-Date: 1999-08-18 12:10+09:00\n" +"PO-Revision-Date: 1999-08-31 11:52+09:00\n" "Last-Translator: Atsushi Yamagata \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" @@ -44,7 +44,7 @@ "Couldn't open /dev/dsp for sampling:\n" "%s" msgstr "" -"¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë¤Î¤Ë /dev/dsp ¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿:\n" +"¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë¤Î¤Ë/dev/dsp¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿:\n" "%s" #: app/drivers/oss-input.c:221 app/drivers/oss-output.c:387 @@ -54,16 +54,16 @@ #: app/drivers/oss-output.c:136 #, c-format msgid "Estimated audio delay: %f microseconds" -msgstr "¿äÄꥪ¡¼¥Ç¥£¥ª¡¦¥Ç¥£¥ì¥¤: %f ¥Þ¥¤¥¯¥íÉÃ" +msgstr "¿äÄꥪ¡¼¥Ç¥£¥ª¡¦¥Ç¥£¥ì¥¤: %f¥Þ¥¤¥¯¥íÉÃ" #: app/drivers/oss-output.c:170 #, c-format msgid "(%d samples)" -msgstr "(%d ¥µ¥ó¥×¥ë)" +msgstr "(%d¥µ¥ó¥×¥ë)" #: app/drivers/oss-output.c:185 msgid "These changes won't take effect until you restart playing." -msgstr "" +msgstr "±éÁÕ¤òºÆ³«¤¹¤ë¤Þ¤Ç¤³¤ì¤é¤ÎÊѹ¹¤Ï¤Ê¤µ¤ì¤Þ¤»¤ó¡£" #: app/drivers/oss-output.c:197 msgid "Resolution:" @@ -87,7 +87,7 @@ "Couldn't open /dev/dsp for sound output:\n" "%s" msgstr "" -"¥µ¥¦¥ó¥É½ÐÎϤËÂФ·¤Æ /dev/dsp ¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿:\n" +"¥µ¥¦¥ó¥É½ÐÎϤËÂФ·¤Æ/dev/dsp¤¬³«¤±¤Þ¤»¤ó¤Ç¤·¤¿:\n" "%s" #: app/envelope-box.c:739 @@ -122,7 +122,7 @@ "only in\n" "GNOME Version" msgstr "" -"GNOME ÈÇ\n" +"GNOMEÈÇ\n" "¤Î¤ß¤Î\n" "¥°¥é¥Õ¥£¥«¥ë\n" "¥¨¥ó¥Ù¥í¡¼¥×\n" @@ -158,15 +158,15 @@ #: app/gui-settings.c:126 app/gui-settings.c:129 msgid "GUI Configuration" -msgstr "GUI ÀßÄê" +msgstr "GUIÀßÄê" #: app/gui-settings.c:151 msgid "Use Hexadecimal Numbers" -msgstr "16 ¿Ê¿ô¤ò»ÈÍÑ" +msgstr "16¿Ê¿ô¤ò»ÈÍÑ" #: app/gui-settings.c:158 msgid "Advance Cursor in FX Columns" -msgstr "FX ¥«¥é¥à¤Ç¤Î¥¢¥É¥Ð¥ó¥¹¡¦¥«¡¼¥½¥ë" +msgstr "FX¥«¥é¥à¤Ç¤Î¥¢¥É¥Ð¥ó¥¹¡¦¥«¡¼¥½¥ë" #: app/gui-settings.c:172 msgid "Scopes buffer size [MB]" @@ -174,7 +174,7 @@ #: app/gui-settings.c:187 msgid "`Save XM' saves all non-empty patterns" -msgstr "`Êݸ XM' ¤ÇÁ´¤Æ¤Î¶õ¤Ç¤Ê¤¤¥Ñ¥¿¡¼¥ó¤òÊݸ" +msgstr "`ÊݸXM' ¤ÇÁ´¤Æ¤Î¶õ¤Ç¤Ê¤¤¥Ñ¥¿¡¼¥ó¤òÊݸ" #: app/gui-subs.c:374 msgid "Question" @@ -226,11 +226,11 @@ #: app/gui.c:1142 msgid "Load XM..." -msgstr "XM ¥í¡¼¥É..." +msgstr "XM¥í¡¼¥É..." #: app/gui.c:1143 msgid "Save XM..." -msgstr "XM Êݸ..." +msgstr "XMÊݸ..." #: app/gui.c:1181 msgid "Play Song" @@ -302,11 +302,11 @@ #: app/instrument-editor.c:180 msgid "Saw Down" -msgstr "²¼¸þ¤­µøÇÈ" +msgstr "²¼¸þµøÇÈ" #: app/instrument-editor.c:180 msgid "Saw Up" -msgstr "¾å¸þ¤­µøÇÈ" +msgstr "¾å¸þµøÇÈ" #: app/instrument-editor.c:184 msgid "Instrument Editor" @@ -330,11 +330,11 @@ #: app/instrument-editor.c:221 msgid "Load XI" -msgstr "XI ¥í¡¼¥É" +msgstr "XI¥í¡¼¥É" #: app/instrument-editor.c:227 msgid "Save XI" -msgstr "XI Êݸ" +msgstr "XIÊݸ" #: app/instrument-editor.c:247 msgid "Vibrato Type:" @@ -342,16 +342,15 @@ #: app/instrument-editor.c:319 msgid "Note:" -msgstr "" +msgstr "²»Éä" #: app/instrument-editor.c:337 msgid "Initialize" -msgstr "" +msgstr "½é´ü²½" #: app/keys.c:123 msgid "The key that inserts the special keyoff note for FastTracker modules." -msgstr "" -"ÁÞÆþ¤µ¤ì¤¿¥­¡¼¤Ï FastTracker ¥â¥¸¥å¡¼¥ë¤Ë´Ø¤¹¤ëÆÃÊ̤ʥ­¡¼¥ª¥Õ²»Éä¤Ç¤¹¡£" +msgstr "ÁÞÆþ¤µ¤ì¤¿¥­¡¼¤ÏFastTracker¥â¥¸¥å¡¼¥ë¤Ë´Ø¤¹¤ëÆÃÊ̤ʥ­¡¼¥ª¥Õ²»Éä¤Ç¤¹¡£" #: app/keys.c:135 msgid "Upper Octave Keys.." @@ -363,9 +362,8 @@ "the key to the right of the TAB key. The rest of the keys should be ordered " "in a piano keyboard fashion, including the number keys row above." msgstr "" -"¸°ÈפξåȾʬ¤Ë¥­¡¼¤¬¤¢¤ê¤Þ¤¹¡£¥­¡¼ c ¤ÏÉáÄÌ TAB " -"¥­¡¼¤Î±¦¤Î¥­¡¼¤Ç¤¹¡£»Ä¤ê¤Î¥­¡¼¤Ï¡¢¾åÉô¤Î¿ô»ú¥­¡¼¤Î¹Ô¤ò´Þ¤ó¤Ç¡¢¥Ô¥¢¥Î¤Î¸°ÈפÎÎ" -"®µ·¤Çʤó¤Ç¤¤¤Þ¤¹¡£" +"¸°ÈפξåȾʬ¤Ë¥­¡¼¤¬¤¢¤ê¤Þ¤¹¡£¥­¡¼c¤ÏÉáÄÌTAB¥­¡¼¤Î±¦¤Î¥­¡¼¤Ç¤¹¡£»Ä¤ê¤Î¥­¡¼\n" +"¤Ï¡¢¾åÉô¤Î¿ô»ú¥­¡¼¤Î¹Ô¤ò´Þ¤ó¤Ç¡¢¥Ô¥¢¥Î¤Î¸°ÈפΤ褦¤Ëʤó¤Ç¤¤¤Þ¤¹¡£" #: app/keys.c:142 msgid "Lower Octave Keys.." @@ -377,9 +375,8 @@ "the first character key to the right of the left Shift key. The rest of the " "keys should be ordered in a piano keyboard fashion, including the row above." msgstr "" -"¸°Èפβ¼È¾Ê¬¤Ë¥­¡¼¤¬¤¢¤ê¤Þ¤¹¡£¥­¡¼ c ¤ÏÉáÄ̺¸ Shift " -"¥­¡¼¤Î±¦¤ÎºÇ½é¤Îʸ»ú¥­¡¼¤Ç¤¹¡£»Ä¤ê¤Î¥­¡¼¤Ï¡¢¾åÉô¤Î¹Ô¤ò´Þ¤ó¤Ç¡¢¥Ô¥¢¥Î¤Î¸°ÈפÎÎ" -"®µ·¤Çʤó¤Ç¤¤¤Þ¤¹¡£" +"¸°Èפβ¼È¾Ê¬¤Ë¥­¡¼¤¬¤¢¤ê¤Þ¤¹¡£¥­¡¼c¤ÏÉáÄ̺¸Shift¥­¡¼¤Î±¦¤ÎºÇ½é¤Îʸ»ú¥­¡¼\n" +"¤Ç¤¹¡£»Ä¤ê¤Î¥­¡¼¤Ï¡¢¾åÉô¤Î¹Ô¤ò´Þ¤ó¤Ç¡¢¥Ô¥¢¥Î¤Î¸°ÈפΤ褦¤Ëʤó¤Ç¤¤¤Þ¤¹¡£" #: app/keys.c:149 msgid "Other Keys.." @@ -470,116 +467,116 @@ #: app/menubar.c:201 #, fuzzy msgid "_Open.." -msgstr "³«¤¯.." +msgstr "³«¤¯(_O).." #: app/menubar.c:203 #, fuzzy msgid "Save _as.." -msgstr "Êݸ.." +msgstr "Êݸ(_a).." #: app/menubar.c:208 #, fuzzy msgid "_Quit" -msgstr "½ªÎ»" +msgstr "½ªÎ»(_Q)" #: app/menubar.c:215 #, fuzzy msgid "Clear _All" -msgstr "Á´¤Æ¾Ãµî" +msgstr "Á´¤Æ¾Ãµî(_A)" #: app/menubar.c:217 #, fuzzy msgid "Clear _Patterns Only" -msgstr "¥Ñ¥¿¡¼¥ó¤Î¤ß¾Ãµî" +msgstr "¥Ñ¥¿¡¼¥ó¤Î¤ß¾Ãµî(_P)" #: app/menubar.c:219 #, fuzzy msgid "_Optimize Module" -msgstr "¥â¥¸¥å¡¼¥ëºÇŬ²½" +msgstr "¥â¥¸¥å¡¼¥ëºÇŬ²½(_O)" #: app/menubar.c:226 #, fuzzy msgid "_Jazz Edit Mode" -msgstr "Jazz ÊÔ½¸" +msgstr "_JazzÊÔ½¸" #: app/menubar.c:231 msgid "_Transposition.." -msgstr "" +msgstr "_Transposition.." #: app/menubar.c:238 #, fuzzy msgid "_Find Unused Pattern" -msgstr "̤»ÈÍѥѥ¿¡¼¥ó¸¡º÷" +msgstr "̤»ÈÍѥѥ¿¡¼¥ó¸¡º÷(_F)" #: app/menubar.c:240 #, fuzzy msgid "_Copy Current to Unused Pattern" -msgstr "̤»ÈÍѥѥ¿¡¼¥ó¤Ë¥«¥ì¥ó¥È¤ò¥³¥Ô¡¼" +msgstr "̤»ÈÍѥѥ¿¡¼¥ó¤Ë¥«¥ì¥ó¥È¤ò¥³¥Ô¡¼(_C)" #: app/menubar.c:242 #, fuzzy msgid "C_lear Unused Patterns" -msgstr "̤»ÈÍѥѥ¿¡¼¥ó¾Ãµî" +msgstr "̤»ÈÍѥѥ¿¡¼¥ó¾Ãµî(_l)" #: app/menubar.c:244 #, fuzzy msgid "_Pack Patterns" -msgstr "¥Ñ¥¿¡¼¥ó¡¦¥Ñ¥Ã¥¯" +msgstr "¥Ñ¥¿¡¼¥ó¡¦¥Ñ¥Ã¥¯(_P)" #: app/menubar.c:251 #, fuzzy msgid "_Load XI.." -msgstr "XI ¥í¡¼¥É.." +msgstr "XI¥í¡¼¥É(_L).." #: app/menubar.c:256 #, fuzzy msgid "_Delete Unused Instruments" -msgstr "̤»ÈÍѳڴïºï½ü" +msgstr "̤»ÈÍѳڴïºï½ü(_D)" #: app/menubar.c:264 #, fuzzy msgid "Display _Oscilloscopes" -msgstr "¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨" +msgstr "¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨(_O)" #: app/menubar.c:266 #, fuzzy msgid "Use _Backing Store" -msgstr "¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ" +msgstr "¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ(_B)" #: app/menubar.c:271 #, fuzzy msgid "_Keyboard Configuration.." -msgstr "¥­¡¼¥Ü¡¼¥ÉÀßÄê.." +msgstr "¥­¡¼¥Ü¡¼¥ÉÀßÄê(_K).." #: app/menubar.c:273 #, fuzzy msgid "_Audio Configuration.." -msgstr "¥ª¡¼¥Ç¥£¥ªÀßÄê.." +msgstr "¥ª¡¼¥Ç¥£¥ªÀßÄê(_A).." #: app/menubar.c:275 #, fuzzy msgid "_GUI Configuration.." -msgstr "GUI ÀßÄê.." +msgstr "_GUIÀßÄê.." #: app/menubar.c:280 #, fuzzy msgid "_Save Settings now" -msgstr "ÀßÄê¤òº£Êݸ" +msgstr "ÀßÄê¤òº£Êݸ(_S)" #: app/menubar.c:282 #, fuzzy msgid "Save Settings on _Exit" -msgstr "½ªÎ»»þ¤ËÀßÄê¤òÊݸ" +msgstr "½ªÎ»»þ¤ËÀßÄê¤òÊݸ(_E)" #: app/menubar.c:289 #, fuzzy msgid "_About.." -msgstr "SoundTracker ¤Ë¤Ä¤¤¤Æ.." +msgstr "¾ðÊó(_A).." #: app/menubar.c:294 #, fuzzy msgid "Show _Tips.." -msgstr "µ»¤Îɽ¼¨.." +msgstr "µ»¤Îɽ¼¨(_T).." #: app/menubar.c:301 msgid "_File" @@ -591,7 +588,7 @@ #: app/menubar.c:303 msgid "_Edit" -msgstr "" +msgstr "ÊÔ½¸(_E)" #: app/menubar.c:304 msgid "_Pattern" @@ -612,187 +609,187 @@ #: app/menubar.c:335 #, fuzzy msgid "/_File" -msgstr "¥Õ¥¡¥¤¥ë(_F)" +msgstr "/¥Õ¥¡¥¤¥ë(_F)" #: app/menubar.c:336 #, fuzzy msgid "/File/_Open.." -msgstr "³«¤¯.." +msgstr "/¥Õ¥¡¥¤¥ë/³«¤¯(_O).." #: app/menubar.c:337 #, fuzzy msgid "/File/Save _as.." -msgstr "Êݸ.." +msgstr "/¥Õ¥¡¥¤¥ë/Êݸ(_S).." #: app/menubar.c:338 #, fuzzy msgid "/File/-" -msgstr "¥Õ¥¡¥¤¥ë" +msgstr "/¥Õ¥¡¥¤¥ë/-" #: app/menubar.c:339 msgid "/File/_Quit" -msgstr "" +msgstr "/¥Õ¥¡¥¤¥ë/½ªÎ»(_Q)" #: app/menubar.c:340 #, fuzzy msgid "/_Module" -msgstr "¥â¥¸¥å¡¼¥ë(_M)" +msgstr "/¥â¥¸¥å¡¼¥ë(_M)" #: app/menubar.c:341 #, fuzzy msgid "/Module/Clear _All" -msgstr "Á´¤Æ¾Ãµî" +msgstr "/¥â¥¸¥å¡¼¥ë/Á´¤Æ¾Ãµî(_A)" #: app/menubar.c:342 #, fuzzy msgid "/Module/Clear _Patterns Only" -msgstr "¥Ñ¥¿¡¼¥ó¤Î¤ß¾Ãµî" +msgstr "/¥â¥¸¥å¡¼¥ë/¥Ñ¥¿¡¼¥ó¤Î¤ß¾Ãµî(_P)" #: app/menubar.c:343 #, fuzzy msgid "/Module/_Optimize Module" -msgstr "¥â¥¸¥å¡¼¥ëºÇŬ²½" +msgstr "/¥â¥¸¥å¡¼¥ë/¥â¥¸¥å¡¼¥ëºÇŬ²½(_O)" #: app/menubar.c:344 msgid "/_Edit" -msgstr "" +msgstr "/ÊÔ½¸(_E)" #: app/menubar.c:345 msgid "/Edit/_Jazz Edit Mode" -msgstr "" +msgstr "/ÊÔ½¸/_JazzÊÔ½¸¥â¡¼¥É" #: app/menubar.c:346 msgid "/Edit/-" -msgstr "" +msgstr "/ÊÔ½¸/-" #: app/menubar.c:347 msgid "/Edit/_Transposition.." -msgstr "" +msgstr "/ÊÔ½¸/_Transposition.." #: app/menubar.c:348 #, fuzzy msgid "/_Pattern" -msgstr "¥Ñ¥¿¡¼¥ó(_P)" +msgstr "/¥Ñ¥¿¡¼¥ó(_P)" #: app/menubar.c:349 #, fuzzy msgid "/Pattern/_Find Unused Pattern" -msgstr "̤»ÈÍѥѥ¿¡¼¥ó¸¡º÷" +msgstr "/¥Ñ¥¿¡¼¥ó/̤»ÈÍѥѥ¿¡¼¥ó¸¡º÷(_F)" #: app/menubar.c:350 #, fuzzy msgid "/Pattern/_Copy Current to Unused Pattern" -msgstr "̤»ÈÍѥѥ¿¡¼¥ó¤Ë¥«¥ì¥ó¥È¤ò¥³¥Ô¡¼" +msgstr "/¥Ñ¥¿¡¼¥ó/̤»ÈÍѥѥ¿¡¼¥ó¤Ë¥«¥ì¥ó¥È¤ò¥³¥Ô¡¼(_C)" #: app/menubar.c:351 #, fuzzy msgid "/Pattern/C_lear Unused Patterns" -msgstr "̤»ÈÍѥѥ¿¡¼¥ó¾Ãµî" +msgstr "/¥Ñ¥¿¡¼¥ó/̤»ÈÍѥѥ¿¡¼¥ó¾Ãµî(_l)" #: app/menubar.c:352 #, fuzzy msgid "/Pattern/_Pack Patterns" -msgstr "¥Ñ¥¿¡¼¥ó¡¦¥Ñ¥Ã¥¯" +msgstr "/¥Ñ¥¿¡¼¥ó/¥Ñ¥¿¡¼¥ó¡¦¥Ñ¥Ã¥¯(_P)" #: app/menubar.c:353 #, fuzzy msgid "/_Instrument" -msgstr "³Ú´ï(_I)" +msgstr "/³Ú´ï(_I)" #: app/menubar.c:354 #, fuzzy msgid "/Instrument/_Load XI.." -msgstr "³Ú´ï" +msgstr "/³Ú´ï/XI¥í¡¼¥É(_L).." #: app/menubar.c:355 #, fuzzy msgid "/Instrument/-" -msgstr "³Ú´ï" +msgstr "/³Ú´ï/-" #: app/menubar.c:356 #, fuzzy msgid "/Instrument/_Delete Unused Instruments" -msgstr "̤»ÈÍѳڴïºï½ü" +msgstr "/³Ú´ï/̤»ÈÍѳڴïºï½ü(_D)" #: app/menubar.c:357 #, fuzzy msgid "/_Settings" -msgstr "ÀßÄê(_S)" +msgstr "/ÀßÄê(_S)" #: app/menubar.c:358 #, fuzzy msgid "/Settings/Display _Oscilloscopes" -msgstr "¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨" +msgstr "/ÀßÄê/¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨(_O)" #: app/menubar.c:359 #, fuzzy msgid "/Settings/Use _Backing Store" -msgstr "¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ" +msgstr "/ÀßÄê/¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ(_B)" #: app/menubar.c:360 app/menubar.c:364 #, fuzzy msgid "/Settings/-" -msgstr "ÀßÄê" +msgstr "/ÀßÄê/-" #: app/menubar.c:361 #, fuzzy msgid "/Settings/_Keyboard Configuration.." -msgstr "¥­¡¼¥Ü¡¼¥ÉÀßÄê.." +msgstr "/ÀßÄê/¥­¡¼¥Ü¡¼¥ÉÀßÄê(_K).." #: app/menubar.c:362 #, fuzzy msgid "/Settings/_Audio Configuration.." -msgstr "¥ª¡¼¥Ç¥£¥ªÀßÄê.." +msgstr "/ÀßÄê/¥ª¡¼¥Ç¥£¥ªÀßÄê(_A).." #: app/menubar.c:363 #, fuzzy msgid "/Settings/_GUI Configuration.." -msgstr "GUI ÀßÄê.." +msgstr "/ÀßÄê/_GUIÀßÄê.." #: app/menubar.c:365 #, fuzzy msgid "/Settings/_Save Settings now" -msgstr "ÀßÄê¤òº£Êݸ" +msgstr "/ÀßÄê/ÀßÄê¤òº£Êݸ(_S)" #: app/menubar.c:366 #, fuzzy msgid "/Settings/Save Settings on _Exit" -msgstr "½ªÎ»»þ¤ËÀßÄê¤òÊݸ" +msgstr "/ÀßÄê/½ªÎ»»þ¤ËÀßÄê¤òÊݸ(_E)" #: app/menubar.c:367 #, fuzzy msgid "/_Help" -msgstr "¥Ø¥ë¥×(_H)" +msgstr "/¥Ø¥ë¥×(_H)" #: app/menubar.c:368 #, fuzzy msgid "/Help/_About.." -msgstr "SoundTracker ¤Ë¤Ä¤¤¤Æ.." +msgstr "/¥Ø¥ë¥×/¾ðÊó(_A).." #: app/menubar.c:369 #, fuzzy msgid "/Help/-" -msgstr "¥Ø¥ë¥×" +msgstr "/¥Ø¥ë¥×/-" #: app/menubar.c:370 #, fuzzy msgid "/Help/Show _Tips.." -msgstr "µ»¤Îɽ¼¨.." +msgstr "/¥Ø¥ë¥×/µ»¤Îɽ¼¨(_T).." #: app/menubar.c:384 #, fuzzy msgid "/Settings/Display Oscilloscopes" -msgstr "¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨" +msgstr "/ÀßÄê/¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨(_O)" #: app/menubar.c:386 #, fuzzy msgid "/Settings/Use Backing Store" -msgstr "¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ" +msgstr "/ÀßÄê/¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ(_B)" #: app/menubar.c:388 #, fuzzy msgid "/Settings/Save Settings on Exit" -msgstr "½ªÎ»»þ¤ËÀßÄê¤òÊݸ" +msgstr "/ÀßÄê/½ªÎ»»þ¤ËÀßÄê¤òÊݸ" #: app/module-info.c:116 msgid "Instrument Name" @@ -828,7 +825,7 @@ #: app/module-info.c:185 msgid "ProTracker Mode" -msgstr "ProTracker ¥â¡¼¥É" +msgstr "ProTracker¥â¡¼¥É" #: app/preferences.c:58 msgid "" @@ -836,7 +833,7 @@ "home directory to store configuration files.\n" msgstr "" "ÀßÄê¥Õ¥¡¥¤¥ë¤òµ­²±¤¹¤ë¤¿¤á¡¢¤¢¤Ê¤¿¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë\n" -"¥Ç¥£¥ì¥¯¥È¥ê '.soundtracker' ¤¬À¸À®¤µ¤ì¤Þ¤¹¡£\n" +"¥Ç¥£¥ì¥¯¥È¥ê'.soundtracker'¤¬À¸À®¤µ¤ì¤Þ¤¹¡£\n" #: app/sample-editor.c:167 msgid "No loop" @@ -848,11 +845,11 @@ #: app/sample-editor.c:173 msgid "8 bits" -msgstr "8 ¥Ó¥Ã¥È" +msgstr "8¥Ó¥Ã¥È" #: app/sample-editor.c:174 msgid "16 bits" -msgstr "16 ¥Ó¥Ã¥È" +msgstr "16¥Ó¥Ã¥È" #: app/sample-editor.c:180 msgid "Sample Editor" @@ -872,11 +869,11 @@ #: app/sample-editor.c:233 msgid "SelStart" -msgstr "ÁªÂò³«»Ï" +msgstr "ÁªÂò»ÏÅÀ" #: app/sample-editor.c:234 msgid "SelEnd" -msgstr "ÁªÂò½ªÎ»" +msgstr "ÁªÂò½ªÅÀ" #: app/sample-editor.c:237 msgid "Reset Sel" @@ -897,7 +894,7 @@ #: app/sample-editor.c:257 msgid "Save WAV.." -msgstr "WAV Êݸ.." +msgstr "WAVÊݸ.." #: app/sample-editor.c:260 msgid "Load Sample" @@ -905,7 +902,7 @@ #: app/sample-editor.c:269 msgid "Save WAV" -msgstr "WAV Êݸ" +msgstr "WAVÊݸ" #: app/sample-editor.c:279 msgid "Clear" @@ -930,11 +927,11 @@ #: app/sample-editor.c:313 msgid "Zoom in (+50%)" -msgstr "³ÈÂç (+50%)" +msgstr "³ÈÂç(+50%)" #: app/sample-editor.c:319 msgid "Zoom out (-50%)" -msgstr "½Ì¾® (-50%)" +msgstr "½Ì¾®(-50%)" #: app/sample-editor.c:325 #, fuzzy @@ -947,7 +944,7 @@ #: app/sample-editor.c:342 msgid "Remove" -msgstr "½üµî" +msgstr "°Üư" #: app/sample-editor.c:348 msgid "Copy" @@ -960,7 +957,7 @@ #: app/sample-editor.c:360 #, fuzzy msgid "Filter" -msgstr "¥Õ¥¡¥¤¥ë" +msgstr "¥Õ¥£¥ë¥¿" #: app/sample-editor.c:460 #, c-format @@ -973,7 +970,7 @@ #: app/sample-editor.c:958 msgid "" -msgstr "<º£Å½ÉÕ¤µ¤ì¤Þ¤·¤¿>" +msgstr "<º£Å½ÉÕ¤±¤µ¤ì¤Þ¤·¤¿>" #: app/sample-editor.c:1035 msgid "Can't read sample" @@ -985,7 +982,7 @@ #: app/sample-editor.c:1055 msgid "Can only handle mono 8 and 16 bit samples" -msgstr "¥â¥Î¥é¥ë¤Î 8¡¢16 ¥Ó¥Ã¥È¡¦¥µ¥ó¥×¥ë¤Î¤ß½èÍý¤Ç¤­¤Þ¤¹" +msgstr "¥â¥Î¥é¥ë¤Î 8¡¢16¥Ó¥Ã¥È¡¦¥µ¥ó¥×¥ë¤Î¤ß½èÍý¤Ç¤­¤Þ¤¹" #: app/sample-editor.c:1061 msgid "Out of memory for sample data." @@ -1022,16 +1019,16 @@ #: app/sample-editor.c:1330 msgid "Recorded sample is too long for current mixer module. Using it anyway." msgstr "" -"Ï¿²»¤·¤¿¥µ¥ó¥×¥ë¤¬¸½ºß¤Î¥ß¥­¥µ¡¦¥â¥¸¥å¡¼¥ë¤Ë¤ÏĹ²á¤®¤Þ¤¹¡£¤È¤Ë¤«¤¯¤½¤ì¤ò»ÈÍѤ" -"·¤Þ¤¹¡£" +"Ï¿²»¤·¤¿¥µ¥ó¥×¥ë¤¬¸½ºß¤Î¥ß¥­¥µ¡¦¥â¥¸¥å¡¼¥ë¤Ë¤ÏĹ²á¤®¤Þ¤¹¡£¤È¤Ë¤«¤¯¤½¤ì¤ò\n" +"»È¤¤¤Þ¤¹¡£" #: app/sample-editor.c:1362 msgid "Normalize" -msgstr "" +msgstr "µ¬³Ê²½" #: app/sample-editor.c:1363 msgid "Execute" -msgstr "" +msgstr "¼Â¹Ô" #: app/sample-editor.c:1364 app/tips-dialog.c:172 msgid "Close" @@ -1040,23 +1037,23 @@ #: app/sample-editor.c:1373 app/sample-editor.c:1376 #, fuzzy msgid "Volume Ramping" -msgstr "²»ÎÌ" +msgstr "Volume Ramping" #: app/sample-editor.c:1393 msgid "Perform linear volume fade on Selection" -msgstr "" +msgstr "ÁªÂò»þ¤Ë²»Î̤òÀþ·¿¤Ë¥Õ¥§¡¼¥É¤¹¤ë" #: app/sample-editor.c:1405 msgid "Left [%]:" -msgstr "" +msgstr "º¸ [%]:" #: app/sample-editor.c:1410 msgid "Right [%]:" -msgstr "" +msgstr "±¦ [%]:" #: app/tips-dialog.c:93 msgid "SoundTracker Tip of the day" -msgstr "º£Æü¤Î SoundTracker ¤Îµ»" +msgstr "º£Æü¤ÎSoundTracker¤Îµ»" #: app/tips-dialog.c:156 msgid "Previous Tip" @@ -1072,7 +1069,7 @@ #: app/track-editor.c:80 msgid "Jazz Edit:" -msgstr "Jazz ÊÔ½¸" +msgstr "JazzÊÔ½¸" #: app/xm.c:161 #, c-format @@ -1082,21 +1079,20 @@ #: app/xm.c:441 app/xm.c:510 #, c-format msgid "Invalid vibtype %d, using Sine.\n" -msgstr "ÉÔÀµ¤Ê¥Ð¥¤¥Ö¥ì¡¼¥·¥ç¥ó·¿ %d¡¢Àµ¸¹ÇȤò»ÈÍѤ·¤Þ¤¹¡£\n" +msgstr "ÉÔÀµ¤Ê¥Ð¥¤¥Ö¥ì¡¼¥·¥ç¥ó·¿%d¡¢Àµ¸¹ÇȤò»ÈÍѤ·¤Þ¤¹¡£\n" #: app/xm.c:472 msgid "File is no XI instrument." -msgstr "¥Õ¥¡¥¤¥ë¤¬ XI ³Ú´ï¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£" +msgstr "¥Õ¥¡¥¤¥ë¤¬XI³Ú´ï¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£" #: app/xm.c:482 #, c-format msgid "Unknown XI version 0x%x\n" -msgstr "̤ÃΤΠXI ¥Ð¡¼¥¸¥ç¥ó 0x%x ¤Ç¤¹\n" +msgstr "̤ÃΤÎXI¥Ð¡¼¥¸¥ç¥ó0x%x¤Ç¤¹\n" #: app/xm.c:702 msgid "No FastTracker XM and no supported MOD format!" -msgstr "" -"FastTracker XM ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤¿ MOD ¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¤¢¤ê¤Þ¤»¤ó!" +msgstr "FastTracker XM¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¥µ¥Ý¡¼¥È¤µ¤ì¤¿MOD¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¤â¤¢¤ê¤Þ¤»¤ó!" #: app/xm.c:716 app/xm.c:816 msgid "Error while loading patterns." @@ -1108,9 +1104,7 @@ #: app/xm.c:788 msgid "XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n" -msgstr "" -"XM ¥Ø¥Ã¥ÀŤ¬ 276 ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¶²¤é¤¯ pre-0.0.12 SoundTracker " -"¥â¥¸¥å¡¼¥ë¤Ç¤Ï? :-)\n" +msgstr "XM¥Ø¥Ã¥ÀŤ¬276¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¶²¤é¤¯pre-0.0.12 SoundTracker¥â¥¸¥å¡¼¥ë¤Ç¤Ï? :-)\n" #: app/xm.c:822 msgid "Error while loading instruments." @@ -1123,7 +1117,7 @@ "Maximum sample length is %d." msgstr "" "¥â¥¸¥å¡¼¥ë¤¬¸½ºß¤Î¥ß¥­¥µ¡¦¥â¥¸¥å¡¼¥ë¤Ë¤ÏĹ²á¤®¤ë¥µ¥ó¥×¥ë¤ò´Þ¤ó¤Ç¤¤¤Þ¤¹¡£\n" -"¥µ¥ó¥×¥ë¤ÎºÇÂçĹ¤Ï %d ¤Ç¤¹¡£" +"¥µ¥ó¥×¥ë¤ÎºÇÂçŤÏ%d¤Ç¤¹¡£" #~ msgid "driver_oss: write() returned -1.\n" #~ msgstr "driver_oss: write() ¤¬ -1 ¤òÊÖ¤·¤Þ¤·¤¿¡£\n" diff -urN soundtracker-0.3.1/po/soundtracker.pot soundtracker-0.3.2/po/soundtracker.pot --- soundtracker-0.3.1/po/soundtracker.pot Sun Aug 29 17:53:28 1999 +++ soundtracker-0.3.2/po/soundtracker.pot Sat Sep 4 23:08:52 1999 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-08-29 17:53+0200\n" +"POT-Creation-Date: 1999-09-04 23:08+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -14,71 +14,105 @@ "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: ENCODING\n" -#: app/audioconfig.c:53 +#: app/audioconfig.c:55 msgid "Playback Output" msgstr "" -#: app/audioconfig.c:59 +#: app/audioconfig.c:61 msgid "Editing Output" msgstr "" -#: app/audioconfig.c:65 +#: app/audioconfig.c:67 msgid "Sampling" msgstr "" -#: app/audioconfig.c:158 +#: app/audioconfig.c:168 msgid "Driver Module" msgstr "" -#: app/audioconfig.c:166 app/audioconfig.c:169 +#: app/audioconfig.c:176 app/audioconfig.c:179 msgid "Audio Configuration" msgstr "" -#: app/drivers/oss-input.c:90 -msgid "no settings (yet), sorry!" -msgstr "" - -#: app/drivers/oss-input.c:188 -#, c-format -msgid "" -"Couldn't open /dev/dsp for sampling:\n" -"%s" -msgstr "" - -#: app/drivers/oss-input.c:221 app/drivers/oss-output.c:387 -msgid "Required sound output format not supported.\n" -msgstr "" - +#: app/drivers/alsa-input.c:124 app/drivers/alsa-output.c:141 #: app/drivers/oss-output.c:136 #, c-format msgid "Estimated audio delay: %f microseconds" msgstr "" +#: app/drivers/alsa-input.c:158 app/drivers/alsa-output.c:175 #: app/drivers/oss-output.c:170 #, c-format msgid "(%d samples)" msgstr "" +#: app/drivers/alsa-input.c:192 app/drivers/alsa-output.c:204 #: app/drivers/oss-output.c:185 msgid "These changes won't take effect until you restart playing." msgstr "" +#: app/drivers/alsa-input.c:204 app/drivers/alsa-output.c:216 #: app/drivers/oss-output.c:197 msgid "Resolution:" msgstr "" +#: app/drivers/alsa-input.c:214 app/drivers/alsa-output.c:226 #: app/drivers/oss-output.c:207 msgid "Channels:" msgstr "" +#: app/drivers/alsa-input.c:224 app/drivers/alsa-output.c:236 #: app/drivers/oss-output.c:217 msgid "Frequency [Hz]:" msgstr "" +#: app/drivers/alsa-input.c:234 app/drivers/alsa-output.c:246 #: app/drivers/oss-output.c:227 msgid "Buffer Size:" msgstr "" +#: app/drivers/alsa-input.c:267 app/drivers/alsa-output.c:279 +msgid "ALSA card number:" +msgstr "" + +#: app/drivers/alsa-input.c:282 app/drivers/alsa-output.c:294 +msgid "ALSA device number:" +msgstr "" + +#: app/drivers/alsa-input.c:373 +#, c-format +msgid "" +"Couldn't open ALSA device for sound input (card:%d, device:%d):\n" +"%s" +msgstr "" + +#: app/drivers/alsa-input.c:425 app/drivers/alsa-output.c:430 +#: app/drivers/oss-input.c:221 app/drivers/oss-output.c:387 +msgid "Required sound output format not supported.\n" +msgstr "" + +#: app/drivers/alsa-input.c:440 app/drivers/alsa-output.c:445 +msgid "Required sound output parameters not supported.\n" +msgstr "" + +#: app/drivers/alsa-output.c:382 +#, c-format +msgid "" +"Couldn't open ALSA device for sound output (card:%d, device:%d):\n" +"%s" +msgstr "" + +#: app/drivers/oss-input.c:90 +msgid "no settings (yet), sorry!" +msgstr "" + +#: app/drivers/oss-input.c:188 +#, c-format +msgid "" +"Couldn't open /dev/dsp for sampling:\n" +"%s" +msgstr "" + #: app/drivers/oss-output.c:354 #, c-format msgid "" @@ -86,31 +120,39 @@ "%s" msgstr "" -#: app/envelope-box.c:739 -msgid "Length" +#: app/effectsconfig.c:56 +msgid "Master Reverb" +msgstr "" + +#: app/effectsconfig.c:153 app/effectsconfig.c:156 +msgid "Playback Effects Configuration" msgstr "" #: app/envelope-box.c:740 -msgid "Current" +msgid "Length" msgstr "" #: app/envelope-box.c:741 -msgid "Offset" +msgid "Current" msgstr "" #: app/envelope-box.c:742 +msgid "Offset" +msgstr "" + +#: app/envelope-box.c:743 msgid "Value" msgstr "" -#: app/envelope-box.c:748 app/gui.c:1080 +#: app/envelope-box.c:749 app/gui.c:1080 msgid "Insert" msgstr "" -#: app/envelope-box.c:754 app/gui.c:1087 +#: app/envelope-box.c:755 app/gui.c:1087 msgid "Delete" msgstr "" -#: app/envelope-box.c:842 +#: app/envelope-box.c:843 msgid "" "Graphical\n" "Envelope\n" @@ -119,51 +161,59 @@ "GNOME Version" msgstr "" -#: app/envelope-box.c:857 +#: app/envelope-box.c:858 msgid "Sustain" msgstr "" -#: app/envelope-box.c:865 +#: app/envelope-box.c:866 msgid "Point" msgstr "" -#: app/envelope-box.c:867 +#: app/envelope-box.c:868 msgid "Loop" msgstr "" -#: app/envelope-box.c:875 app/sample-editor.c:208 +#: app/envelope-box.c:876 app/sample-editor.c:207 msgid "Start" msgstr "" -#: app/envelope-box.c:876 app/sample-editor.c:209 +#: app/envelope-box.c:877 app/sample-editor.c:208 msgid "End" msgstr "" -#: app/gui-settings.c:65 +#: app/gui-settings.c:66 msgid "Scopes Frequency" msgstr "" -#: app/gui-settings.c:68 +#: app/gui-settings.c:69 msgid "Tracker Frequency" msgstr "" -#: app/gui-settings.c:126 app/gui-settings.c:129 +#: app/gui-settings.c:134 app/gui-settings.c:137 msgid "GUI Configuration" msgstr "" -#: app/gui-settings.c:151 +#: app/gui-settings.c:162 msgid "Use Hexadecimal Numbers" msgstr "" -#: app/gui-settings.c:158 +#: app/gui-settings.c:169 msgid "Advance Cursor in FX Columns" msgstr "" -#: app/gui-settings.c:172 +#: app/gui-settings.c:176 +msgid "Use anti-aliased envelope editor" +msgstr "" + +#: app/gui-settings.c:182 +msgid "You need to restart SoundTracker for this change to come into effect." +msgstr "" + +#: app/gui-settings.c:191 msgid "Scopes buffer size [MB]" msgstr "" -#: app/gui-settings.c:187 +#: app/gui-settings.c:206 msgid "`Save XM' saves all non-empty patterns" msgstr "" @@ -171,7 +221,7 @@ msgid "Question" msgstr "" -#: app/gui-subs.c:391 app/sample-editor.c:1173 +#: app/gui-subs.c:391 app/sample-editor.c:1172 msgid "Cancel" msgstr "" @@ -422,291 +472,307 @@ "in the Settings menu." msgstr "" -#: app/menubar.c:96 +#: app/menubar.c:98 msgid "Ok" msgstr "" -#: app/menubar.c:132 +#: app/menubar.c:134 msgid "" "Are you sure you want to do this?\n" "All changes will be lost!" msgstr "" -#: app/menubar.c:154 +#: app/menubar.c:156 msgid "" "Are you sure you want to quit?\n" "All changes will be lost!" msgstr "" -#: app/menubar.c:201 +#: app/menubar.c:203 msgid "_Open.." msgstr "" -#: app/menubar.c:203 +#: app/menubar.c:205 msgid "Save _as.." msgstr "" -#: app/menubar.c:208 +#: app/menubar.c:210 msgid "_Quit" msgstr "" -#: app/menubar.c:215 +#: app/menubar.c:217 msgid "Clear _All" msgstr "" -#: app/menubar.c:217 +#: app/menubar.c:219 msgid "Clear _Patterns Only" msgstr "" -#: app/menubar.c:219 +#: app/menubar.c:221 msgid "_Optimize Module" msgstr "" -#: app/menubar.c:226 +#: app/menubar.c:228 msgid "_Jazz Edit Mode" msgstr "" -#: app/menubar.c:231 +#: app/menubar.c:233 msgid "_Transposition.." msgstr "" -#: app/menubar.c:238 +#: app/menubar.c:240 msgid "_Find Unused Pattern" msgstr "" -#: app/menubar.c:240 +#: app/menubar.c:242 msgid "_Copy Current to Unused Pattern" msgstr "" -#: app/menubar.c:242 +#: app/menubar.c:244 msgid "C_lear Unused Patterns" msgstr "" -#: app/menubar.c:244 +#: app/menubar.c:246 msgid "_Pack Patterns" msgstr "" -#: app/menubar.c:251 +#: app/menubar.c:253 msgid "_Load XI.." msgstr "" -#: app/menubar.c:256 +#: app/menubar.c:258 msgid "_Delete Unused Instruments" msgstr "" -#: app/menubar.c:264 +#: app/menubar.c:266 msgid "Display _Oscilloscopes" msgstr "" -#: app/menubar.c:266 +#: app/menubar.c:268 msgid "Use _Backing Store" msgstr "" -#: app/menubar.c:271 +#: app/menubar.c:273 msgid "_Keyboard Configuration.." msgstr "" -#: app/menubar.c:273 +#: app/menubar.c:275 msgid "_Audio Configuration.." msgstr "" -#: app/menubar.c:275 +#: app/menubar.c:277 +msgid "_Playback Effects.." +msgstr "" + +#: app/menubar.c:279 msgid "_GUI Configuration.." msgstr "" -#: app/menubar.c:280 +#: app/menubar.c:284 msgid "_Save Settings now" msgstr "" -#: app/menubar.c:282 +#: app/menubar.c:286 msgid "Save Settings on _Exit" msgstr "" -#: app/menubar.c:289 +#: app/menubar.c:293 msgid "_About.." msgstr "" -#: app/menubar.c:294 +#: app/menubar.c:298 msgid "Show _Tips.." msgstr "" -#: app/menubar.c:301 +#: app/menubar.c:300 +msgid "_XM Effects.." +msgstr "" + +#: app/menubar.c:307 msgid "_File" msgstr "" -#: app/menubar.c:302 +#: app/menubar.c:308 msgid "_Module" msgstr "" -#: app/menubar.c:303 +#: app/menubar.c:309 msgid "_Edit" msgstr "" -#: app/menubar.c:304 +#: app/menubar.c:310 msgid "_Pattern" msgstr "" -#: app/menubar.c:305 +#: app/menubar.c:311 msgid "_Instrument" msgstr "" -#: app/menubar.c:306 +#: app/menubar.c:312 msgid "_Settings" msgstr "" -#: app/menubar.c:307 +#: app/menubar.c:313 msgid "_Help" msgstr "" -#: app/menubar.c:335 +#: app/menubar.c:341 msgid "/_File" msgstr "" -#: app/menubar.c:336 +#: app/menubar.c:342 msgid "/File/_Open.." msgstr "" -#: app/menubar.c:337 +#: app/menubar.c:343 msgid "/File/Save _as.." msgstr "" -#: app/menubar.c:338 +#: app/menubar.c:344 msgid "/File/-" msgstr "" -#: app/menubar.c:339 +#: app/menubar.c:345 msgid "/File/_Quit" msgstr "" -#: app/menubar.c:340 +#: app/menubar.c:346 msgid "/_Module" msgstr "" -#: app/menubar.c:341 +#: app/menubar.c:347 msgid "/Module/Clear _All" msgstr "" -#: app/menubar.c:342 +#: app/menubar.c:348 msgid "/Module/Clear _Patterns Only" msgstr "" -#: app/menubar.c:343 +#: app/menubar.c:349 msgid "/Module/_Optimize Module" msgstr "" -#: app/menubar.c:344 +#: app/menubar.c:350 msgid "/_Edit" msgstr "" -#: app/menubar.c:345 +#: app/menubar.c:351 msgid "/Edit/_Jazz Edit Mode" msgstr "" -#: app/menubar.c:346 +#: app/menubar.c:352 msgid "/Edit/-" msgstr "" -#: app/menubar.c:347 +#: app/menubar.c:353 msgid "/Edit/_Transposition.." msgstr "" -#: app/menubar.c:348 +#: app/menubar.c:354 msgid "/_Pattern" msgstr "" -#: app/menubar.c:349 +#: app/menubar.c:355 msgid "/Pattern/_Find Unused Pattern" msgstr "" -#: app/menubar.c:350 +#: app/menubar.c:356 msgid "/Pattern/_Copy Current to Unused Pattern" msgstr "" -#: app/menubar.c:351 +#: app/menubar.c:357 msgid "/Pattern/C_lear Unused Patterns" msgstr "" -#: app/menubar.c:352 +#: app/menubar.c:358 msgid "/Pattern/_Pack Patterns" msgstr "" -#: app/menubar.c:353 +#: app/menubar.c:359 msgid "/_Instrument" msgstr "" -#: app/menubar.c:354 +#: app/menubar.c:360 msgid "/Instrument/_Load XI.." msgstr "" -#: app/menubar.c:355 +#: app/menubar.c:361 msgid "/Instrument/-" msgstr "" -#: app/menubar.c:356 +#: app/menubar.c:362 msgid "/Instrument/_Delete Unused Instruments" msgstr "" -#: app/menubar.c:357 +#: app/menubar.c:363 msgid "/_Settings" msgstr "" -#: app/menubar.c:358 +#: app/menubar.c:364 msgid "/Settings/Display _Oscilloscopes" msgstr "" -#: app/menubar.c:359 +#: app/menubar.c:365 msgid "/Settings/Use _Backing Store" msgstr "" -#: app/menubar.c:360 app/menubar.c:364 +#: app/menubar.c:366 app/menubar.c:371 msgid "/Settings/-" msgstr "" -#: app/menubar.c:361 +#: app/menubar.c:367 msgid "/Settings/_Keyboard Configuration.." msgstr "" -#: app/menubar.c:362 +#: app/menubar.c:368 msgid "/Settings/_Audio Configuration.." msgstr "" -#: app/menubar.c:363 +#: app/menubar.c:369 +msgid "/Settings/_Playback Effects.." +msgstr "" + +#: app/menubar.c:370 msgid "/Settings/_GUI Configuration.." msgstr "" -#: app/menubar.c:365 +#: app/menubar.c:372 msgid "/Settings/_Save Settings now" msgstr "" -#: app/menubar.c:366 +#: app/menubar.c:373 msgid "/Settings/Save Settings on _Exit" msgstr "" -#: app/menubar.c:367 +#: app/menubar.c:374 msgid "/_Help" msgstr "" -#: app/menubar.c:368 +#: app/menubar.c:375 msgid "/Help/_About.." msgstr "" -#: app/menubar.c:369 +#: app/menubar.c:376 msgid "/Help/-" msgstr "" -#: app/menubar.c:370 +#: app/menubar.c:377 msgid "/Help/Show _Tips.." msgstr "" -#: app/menubar.c:384 +#: app/menubar.c:378 +msgid "/Help/_XM Effects.." +msgstr "" + +#: app/menubar.c:392 msgid "/Settings/Display Oscilloscopes" msgstr "" -#: app/menubar.c:386 +#: app/menubar.c:394 msgid "/Settings/Use Backing Store" msgstr "" -#: app/menubar.c:388 +#: app/menubar.c:396 msgid "/Settings/Save Settings on Exit" msgstr "" @@ -726,7 +792,7 @@ msgid "Linear" msgstr "" -#: app/module-info.c:118 app/sample-editor.c:168 +#: app/module-info.c:118 app/sample-editor.c:167 msgid "Amiga" msgstr "" @@ -752,233 +818,343 @@ "home directory to store configuration files.\n" msgstr "" -#: app/sample-editor.c:167 +#: app/sample-editor.c:166 msgid "No loop" msgstr "" -#: app/sample-editor.c:169 +#: app/sample-editor.c:168 msgid "PingPong" msgstr "" -#: app/sample-editor.c:173 +#: app/sample-editor.c:172 msgid "8 bits" msgstr "" -#: app/sample-editor.c:174 +#: app/sample-editor.c:173 msgid "16 bits" msgstr "" -#: app/sample-editor.c:180 +#: app/sample-editor.c:179 msgid "Sample Editor" msgstr "" -#: app/sample-editor.c:220 +#: app/sample-editor.c:219 msgid "Volume" msgstr "" -#: app/sample-editor.c:221 +#: app/sample-editor.c:220 msgid "Panning" msgstr "" -#: app/sample-editor.c:222 +#: app/sample-editor.c:221 msgid "Finetune" msgstr "" -#: app/sample-editor.c:233 +#: app/sample-editor.c:232 msgid "SelStart" msgstr "" -#: app/sample-editor.c:234 +#: app/sample-editor.c:233 msgid "SelEnd" msgstr "" -#: app/sample-editor.c:237 +#: app/sample-editor.c:236 msgid "Reset Sel" msgstr "" -#: app/sample-editor.c:242 +#: app/sample-editor.c:241 msgid "RelNote" msgstr "" -#: app/sample-editor.c:243 +#: app/sample-editor.c:242 msgid "Length: 0" msgstr "" -#: app/sample-editor.c:256 +#: app/sample-editor.c:255 msgid "Load Sample.." msgstr "" -#: app/sample-editor.c:257 +#: app/sample-editor.c:256 msgid "Save WAV.." msgstr "" -#: app/sample-editor.c:260 +#: app/sample-editor.c:259 msgid "Load Sample" msgstr "" -#: app/sample-editor.c:269 +#: app/sample-editor.c:268 msgid "Save WAV" msgstr "" -#: app/sample-editor.c:279 +#: app/sample-editor.c:278 msgid "Clear" msgstr "" -#: app/sample-editor.c:285 +#: app/sample-editor.c:284 msgid "Monitor" msgstr "" -#: app/sample-editor.c:291 +#: app/sample-editor.c:290 msgid "Volume Ramp" msgstr "" -#: app/sample-editor.c:301 +#: app/sample-editor.c:300 msgid "Zoom to selection" msgstr "" -#: app/sample-editor.c:307 +#: app/sample-editor.c:306 msgid "Show all" msgstr "" -#: app/sample-editor.c:313 +#: app/sample-editor.c:312 msgid "Zoom in (+50%)" msgstr "" -#: app/sample-editor.c:319 +#: app/sample-editor.c:318 msgid "Zoom out (-50%)" msgstr "" -#: app/sample-editor.c:325 +#: app/sample-editor.c:324 msgid "Resample" msgstr "" -#: app/sample-editor.c:336 +#: app/sample-editor.c:335 msgid "Cut" msgstr "" -#: app/sample-editor.c:342 +#: app/sample-editor.c:341 msgid "Remove" msgstr "" -#: app/sample-editor.c:348 +#: app/sample-editor.c:347 msgid "Copy" msgstr "" -#: app/sample-editor.c:354 +#: app/sample-editor.c:353 msgid "Paste" msgstr "" -#: app/sample-editor.c:360 +#: app/sample-editor.c:359 msgid "Filter" msgstr "" -#: app/sample-editor.c:460 +#: app/sample-editor.c:459 #, c-format msgid "Length: %d" msgstr "" -#: app/sample-editor.c:866 +#: app/sample-editor.c:865 msgid "No memory for copybuffer.\n" msgstr "" -#: app/sample-editor.c:958 +#: app/sample-editor.c:957 msgid "" msgstr "" -#: app/sample-editor.c:1035 +#: app/sample-editor.c:1034 msgid "Can't read sample" msgstr "" -#: app/sample-editor.c:1041 +#: app/sample-editor.c:1040 msgid "Sample is too long for current mixer module. Loading anyway." msgstr "" -#: app/sample-editor.c:1055 +#: app/sample-editor.c:1054 msgid "Can only handle mono 8 and 16 bit samples" msgstr "" -#: app/sample-editor.c:1061 +#: app/sample-editor.c:1060 msgid "Out of memory for sample data." msgstr "" -#: app/sample-editor.c:1066 +#: app/sample-editor.c:1065 msgid "Read error." msgstr "" -#: app/sample-editor.c:1121 +#: app/sample-editor.c:1120 msgid "Can't open file for writing." msgstr "" -#: app/sample-editor.c:1158 +#: app/sample-editor.c:1157 msgid "OK" msgstr "" -#: app/sample-editor.c:1166 +#: app/sample-editor.c:1165 msgid "Start sampling" msgstr "" -#: app/sample-editor.c:1201 app/sample-editor.c:1204 +#: app/sample-editor.c:1200 app/sample-editor.c:1203 msgid "Sampling Window" msgstr "" -#: app/sample-editor.c:1253 +#: app/sample-editor.c:1252 msgid "out of memory while sampling..." msgstr "" -#: app/sample-editor.c:1300 +#: app/sample-editor.c:1303 msgid "" msgstr "" -#: app/sample-editor.c:1330 +#: app/sample-editor.c:1333 msgid "Recorded sample is too long for current mixer module. Using it anyway." msgstr "" -#: app/sample-editor.c:1362 +#: app/sample-editor.c:1365 msgid "Normalize" msgstr "" -#: app/sample-editor.c:1363 +#: app/sample-editor.c:1366 msgid "Execute" msgstr "" -#: app/sample-editor.c:1364 app/tips-dialog.c:172 +#: app/sample-editor.c:1367 app/tips-dialog.c:165 msgid "Close" msgstr "" -#: app/sample-editor.c:1373 app/sample-editor.c:1376 +#: app/sample-editor.c:1376 app/sample-editor.c:1379 msgid "Volume Ramping" msgstr "" -#: app/sample-editor.c:1393 +#: app/sample-editor.c:1396 msgid "Perform linear volume fade on Selection" msgstr "" -#: app/sample-editor.c:1405 +#: app/sample-editor.c:1408 msgid "Left [%]:" msgstr "" -#: app/sample-editor.c:1410 +#: app/sample-editor.c:1413 msgid "Right [%]:" msgstr "" -#: app/tips-dialog.c:93 +#: app/tips-dialog.c:87 msgid "SoundTracker Tip of the day" msgstr "" -#: app/tips-dialog.c:156 +#: app/tips-dialog.c:149 msgid "Previous Tip" msgstr "" -#: app/tips-dialog.c:164 +#: app/tips-dialog.c:157 msgid "Next Tip" msgstr "" -#: app/tips-dialog.c:184 +#: app/tips-dialog.c:177 msgid "Show tip next time" msgstr "" +#: app/tips-dialog.c:251 +msgid "" +"Welcome to SoundTracker!\n" +"\n" +"If you are new to this type of program, you will want to get hold of\n" +"some XM or MOD files first and play with them." +msgstr "" + +#: app/tips-dialog.c:256 +msgid "" +"You can make SoundTracker's edit mode more responsive to keyboard\n" +"input by decreasing the mixing buffer size of the \"Editing\" object in\n" +"the Audio Configuration." +msgstr "" + +#: app/tips-dialog.c:260 +msgid "" +"You can adjust the loop points in the sample editor by holding Shift\n" +"and using the left and right mousebuttons.\n" +msgstr "" + +#: app/tips-dialog.c:263 +msgid "" +"If you want to know more about tracking, and how the various commands\n" +"work, have a look at http://www.united-trackers.org/" +msgstr "" + +#: app/tips-dialog.c:266 +msgid "" +"You can assign samples of an instrument to the individual keys by\n" +"activating its sample and then clicking on the keyboard in the\n" +"instrument editor page." +msgstr "" + #: app/track-editor.c:80 msgid "Jazz Edit:" +msgstr "" + +#: app/transposition.c:165 +msgid "Whole Song" +msgstr "" + +#: app/transposition.c:166 +msgid "All Patterns" +msgstr "" + +#: app/transposition.c:167 +msgid "Current Pattern" +msgstr "" + +#: app/transposition.c:168 +msgid "Current Track" +msgstr "" + +#: app/transposition.c:172 +msgid "Current Instrument" +msgstr "" + +#: app/transposition.c:173 +msgid "All Instruments" +msgstr "" + +#: app/transposition.c:177 +msgid "Half note up" +msgstr "" + +#: app/transposition.c:178 +msgid "Half note down" +msgstr "" + +#: app/transposition.c:179 +msgid "Octave up" +msgstr "" + +#: app/transposition.c:180 +msgid "Octave down" +msgstr "" + +#: app/transposition.c:183 +msgid "Exchange 1 <-> 2" +msgstr "" + +#: app/transposition.c:184 +msgid "Change 1 -> 2" +msgstr "" + +#: app/transposition.c:193 app/transposition.c:196 +msgid "Transposition Tools" +msgstr "" + +#: app/transposition.c:216 +msgid "Scope of the operation:" +msgstr "" + +#: app/transposition.c:223 +msgid "Note Transposition" +msgstr "" + +#: app/transposition.c:253 +msgid "Instrument Changing" +msgstr "" + +#: app/transposition.c:268 +msgid "Instrument 1:" +msgstr "" + +#: app/transposition.c:270 app/transposition.c:280 +msgid "Current instrument" +msgstr "" + +#: app/transposition.c:278 +msgid "Instrument 2:" msgstr "" #: app/xm.c:161 diff -urN soundtracker-0.3.1/soundtracker.spec soundtracker-0.3.2/soundtracker.spec --- soundtracker-0.3.1/soundtracker.spec Sun Aug 29 18:48:55 1999 +++ soundtracker-0.3.2/soundtracker.spec Sat Sep 4 23:03:48 1999 @@ -1,6 +1,6 @@ %define name soundtracker -%define version 0.3.1 -%define release 2 +%define version 0.3.2 +%define release 3 %define prefix /usr Summary: Sound modules editor/player @@ -38,7 +38,6 @@ %defattr(-,root,root) %doc ABOUT-NLS FAQ NEWS TODO README ChangeLog %{prefix}/bin/soundtracker -%{prefix}/share/soundtracker/soundtracker_tips.txt %{prefix}/share/locale/*/*/* %clean diff -urN soundtracker-0.3.1/soundtracker_tips.ja.txt soundtracker-0.3.2/soundtracker_tips.ja.txt --- soundtracker-0.3.1/soundtracker_tips.ja.txt Thu Aug 12 19:52:55 1999 +++ soundtracker-0.3.2/soundtracker_tips.ja.txt Thu Jan 1 01:00:00 1970 @@ -1,43 +0,0 @@ -# This is a list of tips for SoundTracker. Every time ST is -# started, one tip will be selected from this file and will be -# displayed in the "Tip of the day" dialog. -# -# [ja] trans: Atsushi yamagata -# this is the translated tips file from version 0.1.8 -# -# - Lines starting with '#' are comments. -# - Blank lines or comments separate two tips (they are not ignored). -# Multiple blank lines are treated as one. If you want to have a -# blank line in a tip, put a space or tab in it. -# - Text will appear in the dialog as it is in this file. This is -# done on purpose in order to have more freedom in the layout of the -# tips than with automatic word-wrapping, but this also means that -# you have to avoid excessively long lines in this file. -# - Tips should be concise: 3 lines or less. -# -# -------------------------------------------------------------------- - -# The first tip should be a welcome message, because this is the -# first thing that a new user will see. -# - -SoundTracker ¤Ø¤è¤¦¤³¤½! - -¤³¤¦¤¤¤Ã¤¿¥×¥í¥°¥é¥à¤Ë·Ð¸³¤¬¤Ê¤±¤ì¤Ð¡¢¤¤¤¯¤Ä¤« XM ¤ä MOD ¥Õ¥¡¥¤¥ë¤ò»ý¤Ã -¤Æ¤­¤Æ±éÁÕ¤·¤¿Êý¤¬¤¤¤¤¤Í¡£ - -# ¤³¤³¤«¤éµ»¤Î¤Ï¤¸¤Þ¤ê - -¥ª¡¼¥Ç¥£¥ªÀßÄê¤Î"ÊÔ½¸¤·¤Æ¤¤¤ë"¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ß¥­¥·¥ó¥°¡¦¥Ð¥Ã¥Õ¥¡¡¦¥µ¥¤¥º -¤ò¸º¤é¤»¤Ð¡¢SoundTracker ¤ÎÊÔ½¸¥â¡¼¥É¤Ç¥­¡¼¥Ü¡¼¥ÉÆþÎϤËÂФ·¤Æ¤â¤Ã¤ÈÈ¿±þ -¤¹¤ë¤è¤¦¤Ë¤Ç¤­¤ë¤è¡£ - -¥µ¥ó¥×¥ë¡¦¥¨¥Ç¥£¥¿¤Ç¡¢¥·¥Õ¥È¡¦¥­¡¼¤ò²¡¤·¤Ê¤¬¤é¥Þ¥¦¥¹¤Î±¦¤Èº¸¤Î¥Ü¥¿¥ó¤ò»È -¤Ã¤Æ¡¢¥ë¡¼¥×¡¦¥Ý¥¤¥ó¥È¤ò¹ç¤»¤é¤ì¤ë¤è¡£ - -¥È¥é¥Ã¥­¥ó¥°¤ä¤¤¤í¤¤¤í¤Ê¥³¥Þ¥ó¥É¤¬¤É¤¦¤¤¤¦¤Õ¤¦¤Ëưºî¤¹¤ë¤Î¤«¤â¤Ã¤ÈÃΤꤿ -¤±¤ì¤Ð¡¢http://www.united-trackers.org/ ¤Çõ¤·¤Æ¤Í¡£ - - -³Ú´ï¥¨¥Ç¥£¥¿¡¦¥Ú¡¼¥¸¤Ç¡¢¥µ¥ó¥×¥ë¤ò¥¢¥¯¥Æ¥£¥Ö¤Ë¤·¤Æ¤«¤é¥­¡¼¥Ü¡¼¥É¤ò¥¯¥ê¥Ã -¥¯¤¹¤ë¤È¸Ä¡¹¤Î¥­¡¼¤Ë³Ú´ï¤Î¥µ¥ó¥×¥ë¤ò³äÅö¤Æ¤é¤ì¤ë¤è¡£ diff -urN soundtracker-0.3.1/soundtracker_tips.txt soundtracker-0.3.2/soundtracker_tips.txt --- soundtracker-0.3.1/soundtracker_tips.txt Wed Jul 21 14:04:37 1999 +++ soundtracker-0.3.2/soundtracker_tips.txt Thu Jan 1 01:00:00 1970 @@ -1,40 +0,0 @@ -# This is a list of tips for SoundTracker. Every time ST is -# started, one tip will be selected from this file and will be -# displayed in the "Tip of the day" dialog. -# -# - Lines starting with '#' are comments. -# - Blank lines or comments separate two tips (they are not ignored). -# Multiple blank lines are treated as one. If you want to have a -# blank line in a tip, put a space or tab in it. -# - Text will appear in the dialog as it is in this file. This is -# done on purpose in order to have more freedom in the layout of the -# tips than with automatic word-wrapping, but this also means that -# you have to avoid excessively long lines in this file. -# - Tips should be concise: 3 lines or less. -# -# -------------------------------------------------------------------- - -# The first tip should be a welcome message, because this is the -# first thing that a new user will see. -# - -Welcome to SoundTracker! - -If you are new to this type of program, you will want to get hold of -some XM or MOD files first and play with them. - -# The tips start here - -You can make SoundTracker's edit mode more responsive to keyboard -input by decreasing the mixing buffer size of the "Editing" object in -the Audio Configuration. - -You can adjust the loop points in the sample editor by holding Shift -and using the left and right mousebuttons. - -If you want to know more about tracking, and how the various commands -work, have a look at http://www.united-trackers.org/ - -You can assign samples of an instrument to the individual keys by -activating its sample and then clicking on the keyboard in the -instrument editor page.