diff -urN soundtracker-0.3.8/ChangeLog soundtracker-0.3.9/ChangeLog --- soundtracker-0.3.8/ChangeLog Sun Dec 26 19:28:32 1999 +++ soundtracker-0.3.9/ChangeLog Wed Jan 12 20:39:25 2000 @@ -1,3 +1,26 @@ +2000-01-12 Michael Krause + + * Released v0.3.9 + +2000-01-12 Kai Vehmanen + + * Added ALSA pcm2 input and output plugins (ALSA 0.5.0 and newer) + +2000-01-08 Michael Krause + + * po: Updated ja.po. + + * app/playlist.c (playlist_insert_clicked): + (playlist_delete_clicked): Force emission of "song_length_changed" + signal. Fixes crashes due to not updated XM structures (bug + reported by globber). + + * app/sample-editor.c: Adds "Sel All" button, renames other + buttons, clears up _update_sample() (patch by Conrad Parker). + + * app/keys.c (keys_fixup_xkeymap): Fix strange keymaps. Fixes + problem a Polish user was having. + 1999-12-26 Michael Krause * Released v0.3.8 diff -urN soundtracker-0.3.8/NEWS soundtracker-0.3.9/NEWS --- soundtracker-0.3.8/NEWS Sun Dec 26 19:28:31 1999 +++ soundtracker-0.3.9/NEWS Wed Jan 12 20:39:23 2000 @@ -2,6 +2,12 @@ (This file lists only major user-visible changes; the ChangeLog file contains more details) +What is new in soundtracker-0.3.9 (12-Jan-2000): + +* ALSA updates for v0.5.0 +* Keyboard mapping fixes +* Other clean-ups + What is new in soundtracker-0.3.8 (26-Dec-1999): * Can handle stereo WAV's (will be converted to mono) diff -urN soundtracker-0.3.8/README soundtracker-0.3.9/README --- soundtracker-0.3.8/README Sun Dec 26 19:28:33 1999 +++ soundtracker-0.3.9/README Wed Jan 12 20:35:18 2000 @@ -4,9 +4,9 @@ http://www.soundtracker.org/ -------------------------------------------------------------- - v0.3.8 --- THIS IS A DEVELOPMENT VERSION! + v0.3.9 --- THIS IS A DEVELOPMENT VERSION! - Written and (C) 1998-1999 + Written and (C) 1998-2000 by Michael Krause [ raw style / lego ] m.krause@tu-harburg.de, http://www.tu-harburg.de/~semk2104/ diff -urN soundtracker-0.3.8/TODO soundtracker-0.3.9/TODO --- soundtracker-0.3.8/TODO Sun Dec 26 14:26:44 1999 +++ soundtracker-0.3.9/TODO Wed Jan 12 20:33:56 2000 @@ -1,6 +1,8 @@ things to do and known bugs (in no particular order) ------------------------------------------------------- +docu: das mit dem diff ist so nicht ganz korrekt + jazz edit: zu dem kanal springen, auf dem keine note spielt, oder auf dem zumindest das keyoff schon gekommen ist! @@ -153,6 +155,10 @@ > [ volume ] [ portamento ] > > -N.Leveille (Knos) + +> Displaying all zeroes instead of blank spaces makes it +> harder to read the tracks... + ====== PLAYER / LOADER ======== diff -urN soundtracker-0.3.8/acconfig.h soundtracker-0.3.9/acconfig.h --- soundtracker-0.3.8/acconfig.h Sat Oct 9 18:06:55 1999 +++ soundtracker-0.3.9/acconfig.h Wed Jan 12 20:28:51 2000 @@ -3,6 +3,7 @@ #undef DRIVER_OSS #undef DRIVER_ALSA +#undef DRIVER_ALSA_050 #undef DRIVER_ESD #undef USE_GNOME #undef NO_AUDIOFILE diff -urN soundtracker-0.3.8/app/drivers/Makefile.am soundtracker-0.3.9/app/drivers/Makefile.am --- soundtracker-0.3.8/app/drivers/Makefile.am Sat Nov 13 14:36:30 1999 +++ soundtracker-0.3.9/app/drivers/Makefile.am Wed Jan 12 20:29:59 2000 @@ -6,6 +6,8 @@ oss-input.c \ alsa-output.c \ alsa-input.c \ + alsa2-output.c \ + alsa2-input.c \ esd-output.c \ file-output.c diff -urN soundtracker-0.3.8/app/drivers/Makefile.in soundtracker-0.3.9/app/drivers/Makefile.in --- soundtracker-0.3.8/app/drivers/Makefile.in Sun Dec 26 19:38:44 1999 +++ soundtracker-0.3.9/app/drivers/Makefile.in Wed Jan 12 20:42:48 2000 @@ -97,7 +97,7 @@ noinst_LIBRARIES = libdrivers.a -libdrivers_a_SOURCES = oss-output.c oss-input.c alsa-output.c alsa-input.c esd-output.c file-output.c +libdrivers_a_SOURCES = oss-output.c oss-input.c alsa-output.c alsa-input.c alsa2-output.c alsa2-input.c esd-output.c file-output.c INCLUDES = -I.. @@ -113,7 +113,7 @@ LIBS = @LIBS@ libdrivers_a_LIBADD = libdrivers_a_OBJECTS = oss-output.o oss-input.o alsa-output.o \ -alsa-input.o esd-output.o file-output.o +alsa-input.o alsa2-output.o alsa2-input.o esd-output.o file-output.o AR = ar CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -217,9 +217,13 @@ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done +alsa2-input.o: alsa2-input.c ../../config.h +alsa2-output.o: alsa2-output.c ../../config.h alsa-input.o: alsa-input.c ../../config.h alsa-output.o: alsa-output.c ../../config.h -esd-output.o: esd-output.c ../../config.h +esd-output.o: esd-output.c ../../config.h ../i18n.h ../driver-out.h \ + ../driver.h ../mixer.h ../errors.h ../gui-subs.h \ + ../preferences.h file-output.o: file-output.c ../../config.h ../i18n.h ../driver-out.h \ ../driver.h ../mixer.h ../errors.h ../gui-subs.h \ ../preferences.h diff -urN soundtracker-0.3.8/app/drivers/alsa-input.c soundtracker-0.3.9/app/drivers/alsa-input.c --- soundtracker-0.3.8/app/drivers/alsa-input.c Tue Sep 7 16:26:46 1999 +++ soundtracker-0.3.9/app/drivers/alsa-input.c Wed Jan 12 20:29:15 2000 @@ -68,7 +68,7 @@ snd_pcm_t *soundfd; void *sndbuf; - gpointer polltag; + int polltag; int firstpoll; int p_resolution; @@ -316,7 +316,7 @@ d->p_fragsize = 2048; // 512; d->soundfd = 0; d->sndbuf = NULL; - d->polltag = NULL; + d->polltag = 0; d->configmutex = g_mutex_new(); alsa_make_config_widgets(d); @@ -345,7 +345,7 @@ /* audio_poll_remove(d->polltag); */ gdk_input_remove(d->polltag); - d->polltag = NULL; + d->polltag = 0; if(d->soundfd != 0) { /* snd_pcm_drain_capture(d->soundfd); */ diff -urN soundtracker-0.3.8/app/drivers/alsa-output.c soundtracker-0.3.9/app/drivers/alsa-output.c --- soundtracker-0.3.8/app/drivers/alsa-output.c Sat Oct 16 17:26:19 1999 +++ soundtracker-0.3.9/app/drivers/alsa-output.c Wed Jan 12 20:29:21 2000 @@ -1,4 +1,3 @@ - /* * The Real SoundTracker - ALSA (output) driver * - requires ALSA 0.4.0 or newer diff -urN soundtracker-0.3.8/app/drivers/alsa2-input.c soundtracker-0.3.9/app/drivers/alsa2-input.c --- soundtracker-0.3.8/app/drivers/alsa2-input.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.9/app/drivers/alsa2-input.c Wed Jan 12 20:30:03 2000 @@ -0,0 +1,554 @@ + +/* + * The Real SoundTracker - ALSA (input) driver + * - requires ALSA 0.5.0 or newer + * + * Copyright (C) 2000 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_050 + +#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; + int 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 = (d->stereo + 1) * (d->bits / 8) * d->fragsize; + + size = snd_pcm_read(d->soundfd, d->sndbuf, size); + + sample_editor_sampled(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 - 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, _("(%d bytes)"), d->p_fragsize * d->p_channels * d->p_resolution / 8); + gtk_label_set_text(GTK_LABEL(d->bufsizelabel_w), buf); + + sprintf(buf, _("Estimated audio delay: %f microseconds"), (double)(1000 * d->p_fragsize / d->p_mixfreq)); + 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; + prefs_update_estimate(d); +} + +static void +prefs_channels_changed (void *a, + alsa_driver *d) +{ + d->p_channels = find_current_toggle(d->prefs_channels_w, 2) + 1; + prefs_update_estimate(d); +} + +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) +{ + d->p_fragsize = gtk_spin_button_get_value_as_int(w); + 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; + d->soundfd = 0; + d->sndbuf = NULL; + d->polltag = 0; + 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 = 0; + + 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, err; + + snd_pcm_format_t pf; + + // snd_pcm_channel_info_t pcm_info; + snd_pcm_channel_params_t pp; + snd_pcm_channel_setup_t setup; + + snd_pcm_channel_flush(d->soundfd, SND_PCM_CHANNEL_CAPTURE); + memset(&pp, 0, sizeof(pp)); + + err = snd_pcm_open(&(d->soundfd), d->card_number, d->device_number, SND_PCM_OPEN_CAPTURE); + 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_nonblock_mode(d->soundfd, 1); + + d->outtime = 0; + d->bits = 0; + mf = 0; + + // -- + // Set channel parameters + // -- + pp.mode = SND_PCM_MODE_BLOCK; + pp.channel = SND_PCM_CHANNEL_CAPTURE; + pp.start_mode = SND_PCM_START_DATA; + pp.stop_mode = SND_PCM_STOP_STOP; + + // --- + // Select audio format + // --- + memset(&pf, 0, sizeof(pf)); + pf.interleave = 1; + 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; + } + + pf.rate = d->p_mixfreq; + d->playrate = d->p_mixfreq; + + if(d->p_channels == 2) { + d->stereo = 1; + pf.voices = d->p_channels; + mf |= ST_MIXER_FORMAT_STEREO; + } + else { + pf.voices = d->p_channels; + d->stereo = 0; + } + d->mf = mf; + memcpy(&pp.format, &pf, sizeof(pf)); + + // pp.buf.block.frag_size = d->p_fragsize * pf.voices * (d->bits / 8); + pp.buf.block.frag_size = d->p_fragsize; + pp.buf.block.frags_max = -1; + pp.buf.block.frags_min = 1; + + err = snd_pcm_channel_params(d->soundfd, &pp); + if (err < 0) { + error_error(_("Required output-channel parameters not supported.\n")); + goto out; + } + + if (snd_pcm_plugin_prepare(d->soundfd, SND_PCM_CHANNEL_CAPTURE) < 0) { + error_error(_("Unable to prepare ALSA channel.\n")); + goto out; + } + + // --- + // Get buffering parameters + // --- + + memset(&setup, 0, sizeof(setup)); + setup.mode = SND_PCM_MODE_BLOCK; + setup.channel = SND_PCM_CHANNEL_CAPTURE; + err = snd_pcm_channel_setup(d->soundfd, &setup); + if (err < 0) { + error_error(_("Alsa setup error.\n")); + goto out; + } + + // snd_pcm_channel_status(d->soundfd, &pbstat); + // d->fragsize = pbstat.fragment_size; + + d->numfrags = setup.buf.block.frags; + d->fragsize = setup.buf.block.frag_size; + /* fprintf(stderr, "Numfrags: %d\n", d->numfrags); + fprintf(stderr, "Fragsize: %d\n", d->fragsize); */ + + 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, SND_PCM_CHANNEL_CAPTURE), GDK_INPUT_READ, alsa_poll_ready_sampling, d); + /* d->firstpoll = TRUE; */ + /* 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_alsa2 = { + { "ALSA-pcm2 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.8/app/drivers/alsa2-output.c soundtracker-0.3.9/app/drivers/alsa2-output.c --- soundtracker-0.3.8/app/drivers/alsa2-output.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.9/app/drivers/alsa2-output.c Wed Jan 12 20:30:03 2000 @@ -0,0 +1,561 @@ +/* + * The Real SoundTracker - ALSA (output) driver, pcm2 + * - requires ALSA 0.5.0 or newer + * + * 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_050 + +#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 byte_count = (d->stereo + 1) * (d->bits / 8) * d->fragsize; + int w; + struct timeval tv; + + w = snd_pcm_write(d->soundfd, d->sndbuf, byte_count); + if(w != byte_count) { + if(w < 0) { + fprintf(stderr, "driver_alsa2: write() returned -1.\n--- \"%s\"", snd_strerror(w)); + } else { + fprintf(stderr, "driver_alsa2: write not completely done.\n"); + } + } + + gettimeofday(&tv, NULL); + d->outtime = tv.tv_sec + tv.tv_usec / 1e6; + d->playtime += (double) d->fragsize / d->playrate; + + 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, _("(%d bytes)"), d->p_fragsize * d->p_channels * d->p_resolution / 8); + gtk_label_set_text(GTK_LABEL(d->bufsizelabel_w), buf); + + sprintf(buf, _("Estimated audio delay: %f microseconds"), (double)(1000 * (d->p_fragsize) / d->p_mixfreq)); + 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; + prefs_update_estimate(d); +} + +static void +prefs_channels_changed (void *a, + alsa_driver *d) +{ + d->p_channels = find_current_toggle(d->prefs_channels_w, 2) + 1; + prefs_update_estimate(d); +} + +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) +{ + d->p_fragsize = gtk_spin_button_get_value_as_int(w); + 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 = 0; + d->device_number = 0; + + d->p_mixfreq = 44100; + d->p_channels = 2; + d->p_resolution = 16; + d->p_fragsize = 256; + 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_playback_drain(d->soundfd); + snd_pcm_close(d->soundfd); + d->soundfd = 0; + } +} + +static gboolean +alsa_open (void *dp) +{ + alsa_driver * const d = dp; + int mf, err; + + snd_pcm_format_t pf; + + // snd_pcm_channel_info_t pcm_info; + snd_pcm_channel_params_t pp; + snd_pcm_channel_setup_t setup; + + snd_pcm_channel_flush(d->soundfd, SND_PCM_CHANNEL_PLAYBACK); + memset(&pp, 0, sizeof(pp)); + + 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_nonblock_mode(d->soundfd, 1); + + d->outtime = 0; + d->bits = 0; + mf = 0; + + // -- + // Set channel parameters + // -- + pp.mode = SND_PCM_MODE_BLOCK; + pp.channel = SND_PCM_CHANNEL_PLAYBACK; + pp.start_mode = SND_PCM_START_FULL; + pp.stop_mode = SND_PCM_STOP_ROLLOVER; + + // --- + // Select audio format + // --- + memset(&pf, 0, sizeof(pf)); + pf.interleave = 1; + 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; + } + + pf.rate = d->p_mixfreq; + d->playrate = d->p_mixfreq; + + if(d->p_channels == 2) { + d->stereo = 1; + pf.voices = d->p_channels; + mf |= ST_MIXER_FORMAT_STEREO; + } + else { + pf.voices = d->p_channels; + d->stereo = 0; + } + d->mf = mf; + memcpy(&pp.format, &pf, sizeof(pf)); + + // pp.buf.block.frag_size = d->p_fragsize * pf.voices * (d->bits / 8); + pp.buf.block.frag_size = d->p_fragsize; + pp.buf.block.frags_max = -1; + pp.buf.block.frags_min = 1; + + err = snd_pcm_channel_params(d->soundfd, &pp); + if (err < 0) { + error_error(_("Required output-channel parameters not supported.\n")); + goto out; + } + + if (snd_pcm_plugin_prepare(d->soundfd, SND_PCM_CHANNEL_PLAYBACK) < 0) { + error_error(_("Unable to prepare ALSA channel.\n")); + goto out; + } + + // --- + // Get buffering parameters + // --- + + memset(&setup, 0, sizeof(setup)); + setup.mode = SND_PCM_MODE_BLOCK; + setup.channel = SND_PCM_CHANNEL_PLAYBACK; + err = snd_pcm_channel_setup(d->soundfd, &setup); + if (err < 0) { + error_error(_("Alsa setup error.\n")); + goto out; + } + + // snd_pcm_channel_status(d->soundfd, &pbstat); + // d->fragsize = pbstat.fragment_size; + + d->numfrags = setup.buf.block.frags; + d->fragsize = setup.buf.block.frag_size; + /* fprintf(stderr, "Numfrags: %d\n", d->numfrags); + fprintf(stderr, "Fragsize: %d\n", d->fragsize); */ + + 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, SND_PCM_CHANNEL_PLAYBACK), GDK_INPUT_WRITE, alsa_poll_ready_playing, d); + /* d->firstpoll = TRUE; */ + 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; + + // snd_pcm_channel_status_t status; + // snd_pcm_channel_status(d->soundfd, &status); + // curtime = status.stime.tv_sec + status.stime.tv_usec / 1e6; + + 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_alsa2 = { + { "ALSA-pcm2 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.8/app/gui.c soundtracker-0.3.9/app/gui.c --- soundtracker-0.3.8/app/gui.c Sun Dec 26 13:45:25 1999 +++ soundtracker-0.3.9/app/gui.c Sat Jan 8 12:20:54 2000 @@ -479,6 +479,7 @@ playlist_song_length_changed (Playlist *p, int length) { +printf("%d\n", length); xm->song_length = length; playlist_entry_changed(p, -1, -1); } diff -urN soundtracker-0.3.8/app/instrument-editor.c soundtracker-0.3.9/app/instrument-editor.c --- soundtracker-0.3.8/app/instrument-editor.c Sun Dec 26 13:44:22 1999 +++ soundtracker-0.3.9/app/instrument-editor.c Sat Jan 8 12:36:57 2000 @@ -247,9 +247,9 @@ gtk_box_pack_start(GTK_BOX(box), box2, TRUE, TRUE, 0); gtk_widget_show(box2); - fileops_dialogs[DIALOG_LOAD_INSTRUMENT] = file_selection_create(_("Load Instrument.."), instrument_editor_file_selected); + fileops_dialogs[DIALOG_LOAD_INSTRUMENT] = file_selection_create(_("Load Instrument..."), instrument_editor_file_selected); gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_LOAD_INSTRUMENT]), gui_settings.loadinstr_path); - fileops_dialogs[DIALOG_SAVE_INSTRUMENT] = file_selection_create(_("Save Instrument.."), instrument_editor_file_selected); + fileops_dialogs[DIALOG_SAVE_INSTRUMENT] = file_selection_create(_("Save Instrument..."), instrument_editor_file_selected); thing = gtk_button_new_with_label(_("Load XI")); gtk_box_pack_start(GTK_BOX(box2), thing, TRUE, TRUE, 0); diff -urN soundtracker-0.3.8/app/keys.c soundtracker-0.3.9/app/keys.c --- soundtracker-0.3.8/app/keys.c Wed Dec 22 11:52:12 1999 +++ soundtracker-0.3.9/app/keys.c Sat Jan 8 12:36:56 2000 @@ -132,21 +132,21 @@ } keys_group; static keys_group groups[] = { - { N_("Upper Octave Keys.."), + { N_("Upper Octave Keys..."), N_("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."), keys1 }, - { N_("Lower Octave Keys.."), + { N_("Lower Octave Keys..."), N_("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."), keys2 }, - { N_("Other Keys.."), + { N_("Other Keys..."), N_("Various other keys"), keys3 } @@ -169,7 +169,7 @@ static int capturing = 0, capturing_all; -static void +static gboolean keys_encode_assignment (gchar *string, int modifiers, int xkeysym) @@ -189,12 +189,13 @@ for(k = 0; k < xkeymaplen; k++) { if(xkeymap[k].xname && xkeymap[k].xkeysym == xkeysym) { strcat(string, xkeymap[k].xname); - return; + return TRUE; } } } strcat(string, NONE_TEXT); + return FALSE; } static int @@ -264,8 +265,8 @@ static void keys_clist_select (GtkCList *list, - gint row, - gint column) + gint row, + gint column) { gchar *code; int mod, i, h; @@ -371,9 +372,12 @@ + 2 * ((event->state & GDK_CONTROL_MASK) != 0) + 4 * ((event->state & GDK_MOD1_MASK) != 0); + /* If this doesn't succeed, the keymap contains logical errors */ + g_assert(keys_encode_assignment(string, mod, keysym)); + groups[cw_currentgroup].keys[cw_currentkey].xkeysym = keysym; groups[cw_currentgroup].keys[cw_currentkey].modifiers = mod; - keys_encode_assignment(string, mod, keysym); + gtk_clist_set_text(GTK_CLIST(cw_clist), cw_currentkey, 1, string); if(capturing_all) { @@ -785,6 +789,45 @@ g_free(keyname); } +static void +keys_fixup_xkeymap (void) +{ + /* The problem are custom keymaps that contain lines such as: + keycode 0x18 = Q + instead of a correct + keycode 0x18 = q Q + Fix these. + */ + + int i; + KeySym k1, k2; + gchar a[2] = { 0, 0 }; + + if(symspercode < 2) + return; + + for(i = 0; i < xkeymaplen / symspercode; i++) { + k1 = xkeymap[i * symspercode + 0].xkeysym; + k2 = xkeymap[i * symspercode + 1].xkeysym; + + if(k2 == 0) { + if(k1 >= 'A' && k1 <= 'Z') { + fprintf(stderr, "*** keys_fixup_xkeymap: %c -> ", (int)k1); + k2 = k1; + k1 += 'a' - 'A'; + fprintf(stderr, "%c %c\n", (int)k1, (int)k2); + + a[0] = k1; + xkeymap[i * symspercode + 1].xname = xkeymap[i * symspercode + 0].xname; + xkeymap[i * symspercode + 0].xname = g_strdup(a); + + xkeymap[i * symspercode + 0].xkeysym = k1; + xkeymap[i * symspercode + 1].xkeysym = k2; + } + } + } +} + int keys_init (void) { @@ -840,6 +883,7 @@ XFree(servsyms); + keys_fixup_xkeymap(); keys_make_xkeys(); if(!keys_load_config()) { diff -urN soundtracker-0.3.8/app/main.c soundtracker-0.3.9/app/main.c --- soundtracker-0.3.8/app/main.c Sat Nov 13 15:06:11 1999 +++ soundtracker-0.3.9/app/main.c Wed Jan 12 20:29:27 2000 @@ -51,6 +51,9 @@ #ifdef DRIVER_ALSA driver_out_alsa, driver_in_alsa, #endif +#ifdef DRIVER_ALSA_050 + driver_out_alsa2, driver_in_alsa2, +#endif #ifdef DRIVER_ESD driver_out_esd, #endif @@ -108,6 +111,13 @@ &driver_out_alsa); drivers[DRIVER_INPUT] = g_list_append(drivers[DRIVER_INPUT], &driver_in_alsa); +#endif + +#ifdef DRIVER_ALSA_050 + drivers[DRIVER_OUTPUT] = g_list_append(drivers[DRIVER_OUTPUT], + &driver_out_alsa2); + drivers[DRIVER_INPUT] = g_list_append(drivers[DRIVER_INPUT], + &driver_in_alsa2); #endif #ifdef DRIVER_ESD diff -urN soundtracker-0.3.8/app/playlist.c soundtracker-0.3.9/app/playlist.c --- soundtracker-0.3.8/app/playlist.c Sun Dec 26 19:35:49 1999 +++ soundtracker-0.3.9/app/playlist.c Sat Jan 8 12:24:02 2000 @@ -246,16 +246,15 @@ if(p->length == p->max_length) return; - p->length++; - if(p->length > p->alloc_length) { - p->patterns = g_renew(int, p->patterns, p->length); - p->alloc_length = p->length; + if(p->length + 1 > p->alloc_length) { + p->patterns = g_renew(int, p->patterns, p->length + 1); + p->alloc_length = p->length + 1; } pos = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(p->spin_songpos)); - memmove(&p->patterns[pos + 1], &p->patterns[pos], (p->length - pos - 1) * sizeof(int)); + memmove(&p->patterns[pos + 1], &p->patterns[pos], (p->length - pos) * sizeof(int)); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songlength), p->length); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songlength), p->length + 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songpat), p->patterns[pos]); } @@ -270,12 +269,10 @@ if(p->length == 1) return; - p->length--; - pos = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(p->spin_songpos)); - memmove(&p->patterns[pos], &p->patterns[pos + 1], (p->length - pos) * sizeof(int)); + memmove(&p->patterns[pos], &p->patterns[pos + 1], (p->length - pos - 1) * sizeof(int)); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songlength), p->length); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songlength), p->length - 1); gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songpat), p->patterns[pos]); } diff -urN soundtracker-0.3.8/app/sample-editor.c soundtracker-0.3.9/app/sample-editor.c --- soundtracker-0.3.8/app/sample-editor.c Sun Dec 26 13:44:44 1999 +++ soundtracker-0.3.9/app/sample-editor.c Sat Jan 8 12:36:56 2000 @@ -1,4 +1,3 @@ - /* * The Real SoundTracker - sample editor * @@ -69,7 +68,7 @@ static GtkWidget *sample_editor_hscrollbar; static GtkWidget *loopradio[3], *resolution_radio[2]; static GtkWidget *spin_loopstart, *spin_loopend, *spin_selstart, *spin_selend; -static GtkWidget *box_loop, *box_params, *box_sel; +static GtkWidget *box_loop, *box_params, *box_sel, *box_sel2; static GtkWidget *label_slength; // = Volume ramping dialog @@ -134,7 +133,8 @@ static void sample_editor_display_loop_changed(SampleDisplay *, int start, int end); static void sample_editor_display_selection_changed(SampleDisplay *, int start, int end); static void sample_editor_display_window_changed(SampleDisplay *, int start, int end); -static void sample_editor_reset_selection_clicked(void); +static void sample_editor_select_none_clicked(void); +static void sample_editor_select_all_clicked(void); static void sample_editor_clear_clicked(void); static void sample_editor_show_all_clicked(void); static void sample_editor_zoom_in_clicked(void); @@ -247,11 +247,23 @@ gui_put_labelled_spin_button(vbox, _("SelEnd"), 0, 0, &spin_selend, sample_editor_spin_selection_changed, NULL); gtk_widget_set_sensitive(spin_selstart, 0); gtk_widget_set_sensitive(spin_selend, 0); - thing = gtk_button_new_with_label(_("Reset Sel")); + + box_sel2 = gtk_hbox_new(TRUE, 4); + gtk_widget_show(box_sel2); + gtk_box_pack_start(GTK_BOX(vbox), box_sel2, FALSE, TRUE, 0); + + thing = gtk_button_new_with_label(_("Sel None")); gtk_signal_connect(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(sample_editor_reset_selection_clicked), NULL); - gtk_box_pack_start(GTK_BOX(vbox), thing, TRUE, TRUE, 0); + GTK_SIGNAL_FUNC(sample_editor_select_none_clicked), NULL); + gtk_box_pack_start(GTK_BOX(box_sel2), thing, TRUE, TRUE, 0); gtk_widget_show(thing); + + thing = gtk_button_new_with_label(_("Sel All")); + gtk_signal_connect(GTK_OBJECT(thing), "clicked", + GTK_SIGNAL_FUNC(sample_editor_select_all_clicked), NULL); + gtk_box_pack_start(GTK_BOX(box_sel2), thing, TRUE, TRUE, 0); + gtk_widget_show(thing); + gui_put_labelled_spin_button(vbox, _("RelNote"), -128, 127, &spin_relnote, sample_editor_spin_relnote_changed, NULL); label_slength = thing = gtk_label_new(_("Length: 0")); gtk_widget_show(thing); @@ -266,9 +278,9 @@ gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); #ifndef NO_AUDIOFILE - fileops_dialogs[DIALOG_LOAD_SAMPLE] = file_selection_create(_("Load Sample.."), sample_editor_load_wav); + fileops_dialogs[DIALOG_LOAD_SAMPLE] = file_selection_create(_("Load Sample..."), sample_editor_load_wav); gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_LOAD_SAMPLE]), gui_settings.loadsmpl_path); - fileops_dialogs[DIALOG_SAVE_SAMPLE] = file_selection_create(_("Save WAV.."), sample_editor_save_wav); + fileops_dialogs[DIALOG_SAVE_SAMPLE] = file_selection_create(_("Save WAV..."), sample_editor_save_wav); gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_SAVE_SAMPLE]), gui_settings.savesmpl_path); #endif @@ -291,7 +303,7 @@ gtk_widget_set_sensitive(thing, 0); #endif - thing = gtk_button_new_with_label(_("Clear")); + thing = gtk_button_new_with_label(_("Clear Sample")); gtk_signal_connect(GTK_OBJECT(thing), "clicked", GTK_SIGNAL_FUNC(sample_editor_clear_clicked), NULL); gtk_box_pack_start(GTK_BOX(vbox), thing, TRUE, TRUE, 0); @@ -438,45 +450,29 @@ char buf[20]; int m = xm_get_modified(); - if(sts) - gtk_entry_set_text(GTK_ENTRY(gui_cursmpl_name), sts->name); - if(!sts || !sts->sample.data) { + sample_display_set_data_16(sampledisplay, NULL, 0, FALSE); gtk_widget_set_sensitive(box_loop, 0); gtk_widget_set_sensitive(box_params, 0); gtk_widget_set_sensitive(box_sel, 0); gtk_widget_set_sensitive(savebutton, 0); - sample_display_set_data_16(sampledisplay, NULL, 0, FALSE); - return; } - s = &sts->sample; + if(!sts) return; + + gtk_entry_set_text(GTK_ENTRY(gui_cursmpl_name), sts->name); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_volume), sts->volume); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_panning), sts->panning - 128); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_finetune), sts->finetune); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_relnote), sts->relnote); - if(s->type == ST_MIXER_SAMPLE_TYPE_16) - sample_display_set_data_16(sampledisplay, s->data, s->length, FALSE); - else - sample_display_set_data_8(sampledisplay, s->data, s->length, FALSE); - - if(s->looptype != ST_MIXER_SAMPLE_LOOPTYPE_NONE) - sample_editor_blocked_set_display_loop(s->loopstart, s->loopend); - gtk_widget_set_sensitive(box_loop, 1); - gtk_widget_set_sensitive(box_params, 1); - gtk_widget_set_sensitive(box_sel, 1); -#ifndef NO_AUDIOFILE - gtk_widget_set_sensitive(savebutton, 1); -#endif + s = &sts->sample; sprintf(buf, _("Length: %d"), s->length); gtk_label_set(GTK_LABEL(label_slength), buf); - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolution_radio[(s->type / 8) - 1]), TRUE); - sample_editor_block_loop_spins(1); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(loopradio[s->looptype]), TRUE); gui_update_spin_adjustment(GTK_SPIN_BUTTON(spin_loopstart), 0, s->length - 1); @@ -491,6 +487,25 @@ sample_editor_block_sel_spins(0); sample_editor_blocked_set_sel_spins(-1, 0); + if(s->data) { + + if(s->type == ST_MIXER_SAMPLE_TYPE_16) + sample_display_set_data_16(sampledisplay, s->data, s->length, FALSE); + else + sample_display_set_data_8(sampledisplay, s->data, s->length, FALSE); + + if(s->looptype != ST_MIXER_SAMPLE_LOOPTYPE_NONE) + sample_editor_blocked_set_display_loop(s->loopstart, s->loopend); + + gtk_widget_set_sensitive(box_loop, 1); + gtk_widget_set_sensitive(box_params, 1); + gtk_widget_set_sensitive(box_sel, 1); +#ifndef NO_AUDIOFILE + gtk_widget_set_sensitive(savebutton, 1); +#endif + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(resolution_radio[(s->type / 8) - 1]), TRUE); + } + xm_set_modified(m); } @@ -635,9 +650,18 @@ } static void -sample_editor_reset_selection_clicked (void) +sample_editor_select_none_clicked (void) { sample_display_set_selection(sampledisplay, -1, 1); +} + +static void +sample_editor_select_all_clicked (void) +{ + g_return_if_fail(current_sample != NULL); + + sample_display_set_selection(sampledisplay, + 0, current_sample->sample.length); } static void diff -urN soundtracker-0.3.8/config.h.in soundtracker-0.3.9/config.h.in --- soundtracker-0.3.8/config.h.in Sat Oct 9 18:08:49 1999 +++ soundtracker-0.3.9/config.h.in Wed Jan 12 20:29:29 2000 @@ -49,6 +49,7 @@ #undef DRIVER_OSS #undef DRIVER_ALSA +#undef DRIVER_ALSA_050 #undef DRIVER_ESD #undef USE_GNOME #undef NO_AUDIOFILE diff -urN soundtracker-0.3.8/configure soundtracker-0.3.9/configure --- soundtracker-0.3.8/configure Sun Dec 26 19:30:59 1999 +++ soundtracker-0.3.9/configure Wed Jan 12 20:35:24 2000 @@ -722,7 +722,7 @@ PACKAGE=soundtracker -VERSION=0.3.8 +VERSION=0.3.9 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; } @@ -4068,6 +4068,44 @@ alsa_support=no fi + if test x$alsa_support = xyes; then + LIBS="$LIBS -lasound" + fi + echo $ac_n "checking for snd_pcm_capture_params in -lasound""... $ac_c" 1>&6 +echo "configure:4076: checking for snd_pcm_capture_params in -lasound" >&5 +ac_lib_var=`echo asound'_'snd_pcm_capture_params | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lasound $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 if test x$alsa_support = xyes; then @@ -4076,15 +4114,68 @@ else DRIVER_ALSA_TRUE='#' DRIVER_ALSA_FALSE= -fi - if test x$alsa_support = xyes; then - cat >> confdefs.h <<\EOF +fi + cat >> confdefs.h <<\EOF #define DRIVER_ALSA 1 EOF - LIBS="$LIBS -lasound" - fi -fi +else + echo "$ac_t""no" 1>&6 +fi + + echo $ac_n "checking for snd_pcm_channel_params in -lasound""... $ac_c" 1>&6 +echo "configure:4128: checking for snd_pcm_channel_params in -lasound" >&5 +ac_lib_var=`echo asound'_'snd_pcm_channel_params | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lasound $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + + +if test x$alsa_support = xyes; then + DRIVER_ALSA_050_TRUE= + DRIVER_ALSA_050_FALSE='#' +else + DRIVER_ALSA_050_TRUE='#' + DRIVER_ALSA_050_FALSE= +fi + cat >> confdefs.h <<\EOF +#define DRIVER_ALSA_050 1 +EOF + +else + echo "$ac_t""no" 1>&6 +fi + +fi # Check whether --enable-esd or --disable-esd was given. @@ -4136,7 +4227,7 @@ # Extract the first word of "esd-config", so it can be a program name with args. set dummy esd-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4140: checking for $ac_word" >&5 +echo "configure:4231: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_ESD_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4171,7 +4262,7 @@ min_esd_version=0.2.8 echo $ac_n "checking for ESD - version >= $min_esd_version""... $ac_c" 1>&6 -echo "configure:4175: checking for ESD - version >= $min_esd_version" >&5 +echo "configure:4266: checking for ESD - version >= $min_esd_version" >&5 no_esd="" if test "$ESD_CONFIG" = "no" ; then no_esd=yes @@ -4195,7 +4286,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -4253,7 +4344,7 @@ EOF -if { (eval echo configure:4257: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -4287,7 +4378,7 @@ CFLAGS="$CFLAGS $ESD_CFLAGS" LIBS="$LIBS $ESD_LIBS" cat > conftest.$ac_ext < @@ -4297,7 +4388,7 @@ return 0; ; return 0; } EOF -if { (eval echo configure:4301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding ESD or finding the wrong" @@ -4333,12 +4424,12 @@ for ac_func in esd_play_stream do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4337: checking for $ac_func" >&5 +echo "configure:4428: 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:4456: \"$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 @@ -4406,14 +4497,14 @@ echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:4410: checking whether byte ordering is bigendian" >&5 +echo "configure:4501: 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 @@ -4424,11 +4515,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:4428: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4519: \"$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 @@ -4439,7 +4530,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:4443: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4534: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -4459,7 +4550,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:4567: \"$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 @@ -4685,6 +4776,8 @@ s%@AUDIOFILE_LIBS@%$AUDIOFILE_LIBS%g s%@DRIVER_ALSA_TRUE@%$DRIVER_ALSA_TRUE%g s%@DRIVER_ALSA_FALSE@%$DRIVER_ALSA_FALSE%g +s%@DRIVER_ALSA_050_TRUE@%$DRIVER_ALSA_050_TRUE%g +s%@DRIVER_ALSA_050_FALSE@%$DRIVER_ALSA_050_FALSE%g s%@ESD_CONFIG@%$ESD_CONFIG%g s%@ESD_CFLAGS@%$ESD_CFLAGS%g s%@ESD_LIBS@%$ESD_LIBS%g diff -urN soundtracker-0.3.8/configure.in soundtracker-0.3.9/configure.in --- soundtracker-0.3.8/configure.in Sun Dec 26 19:28:34 1999 +++ soundtracker-0.3.9/configure.in Wed Jan 12 20:35:19 2000 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(app/endian-conv.h) -AM_INIT_AUTOMAKE(soundtracker, 0.3.8) +AM_INIT_AUTOMAKE(soundtracker, 0.3.9) AM_CONFIG_HEADER(config.h) dnl ----------------------------------------------------------------------- @@ -122,12 +122,16 @@ if test x$alsa_support != xno; then AC_CHECK_LIB(asound,snd_cards,alsa_support=yes,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" + LIBS="$LIBS -lasound" fi -fi + AC_CHECK_LIB(asound,snd_pcm_capture_params, + [AM_CONDITIONAL(DRIVER_ALSA, test x$alsa_support = xyes) + AC_DEFINE(DRIVER_ALSA)]) + AC_CHECK_LIB(asound,snd_pcm_channel_params, + [AM_CONDITIONAL(DRIVER_ALSA_050, test x$alsa_support = xyes) + AC_DEFINE(DRIVER_ALSA_050)]) +fi dnl ----------------------------------------------------------------------- dnl Test for ESD diff -urN soundtracker-0.3.8/po/cat-id-tbl.c soundtracker-0.3.9/po/cat-id-tbl.c --- soundtracker-0.3.8/po/cat-id-tbl.c Sun Dec 26 13:20:33 1999 +++ soundtracker-0.3.9/po/cat-id-tbl.c Sat Jan 8 11:56:27 2000 @@ -285,108 +285,109 @@ {"Finetune", 236}, {"SelStart", 237}, {"SelEnd", 238}, - {"Reset Sel", 239}, - {"RelNote", 240}, - {"Length: 0", 241}, - {"Load Sample..", 242}, - {"Save WAV..", 243}, - {"Save WAV", 244}, - {"Clear", 245}, - {"Monitor", 246}, - {"Volume Ramp", 247}, - {"Zoom to selection", 248}, - {"Show all", 249}, - {"Zoom in (+50%)", 250}, - {"Zoom out (-50%)", 251}, - {"Reverse", 252}, - {"Cut", 253}, - {"Remove", 254}, - {"Copy", 255}, - {"Paste", 256}, - {"Filter", 257}, - {"Length: %d", 258}, - {"", 259}, - {"Read error.", 260}, - {"Load stereo sample", 261}, + {"Sel None", 239}, + {"Sel All", 240}, + {"RelNote", 241}, + {"Length: 0", 242}, + {"Load Sample..", 243}, + {"Save WAV..", 244}, + {"Save WAV", 245}, + {"Clear Sample", 246}, + {"Monitor", 247}, + {"Volume Ramp", 248}, + {"Zoom to selection", 249}, + {"Show all", 250}, + {"Zoom in (+50%)", 251}, + {"Zoom out (-50%)", 252}, + {"Reverse", 253}, + {"Cut", 254}, + {"Remove", 255}, + {"Copy", 256}, + {"Paste", 257}, + {"Filter", 258}, + {"Length: %d", 259}, + {"", 260}, + {"Read error.", 261}, + {"Load stereo sample", 262}, {"\ You have selected a stereo sample!\n\ (SoundTracker can only handle mono samples!)\n\ \n\ -Please choose which channel to load:", 262}, - {"Left", 263}, - {"Mix", 264}, - {"Right", 265}, - {"Can't read sample", 266}, - {"Sample is too long for current mixer module. Loading anyway.", 267}, - {"Can only handle 8 and 16 bit samples with up to 2 channels", 268}, - {"OK", 269}, - {"Start sampling", 270}, - {"Sampling Window", 271}, - {"", 272}, - {"Recorded sample is too long for current mixer module. Using it anyway.", 273}, - {"Normalize", 274}, - {"Execute", 275}, - {"Close", 276}, - {"Volume Ramping", 277}, - {"Perform linear volume fade on Selection", 278}, - {"Left [%]:", 279}, - {"Right [%]:", 280}, - {"SoundTracker Tip of the day", 281}, - {"Previous Tip", 282}, - {"Next Tip", 283}, - {"Show tip next time", 284}, +Please choose which channel to load:", 263}, + {"Left", 264}, + {"Mix", 265}, + {"Right", 266}, + {"Can't read sample", 267}, + {"Sample is too long for current mixer module. Loading anyway.", 268}, + {"Can only handle 8 and 16 bit samples with up to 2 channels", 269}, + {"OK", 270}, + {"Start sampling", 271}, + {"Sampling Window", 272}, + {"", 273}, + {"Recorded sample is too long for current mixer module. Using it anyway.", 274}, + {"Normalize", 275}, + {"Execute", 276}, + {"Close", 277}, + {"Volume Ramping", 278}, + {"Perform linear volume fade on Selection", 279}, + {"Left [%]:", 280}, + {"Right [%]:", 281}, + {"SoundTracker Tip of the day", 282}, + {"Previous Tip", 283}, + {"Next Tip", 284}, + {"Show tip next time", 285}, {"\ 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.", 285}, +some XM or MOD files first and play with them.", 286}, {"\ 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.", 286}, +the Audio Configuration.", 287}, {"\ You can adjust the loop points in the sample editor by holding Shift\n\ -and using the left and right mousebuttons.\n", 287}, +and using the left and right mousebuttons.\n", 288}, {"\ If you want to know more about tracking, and how the various commands\n\ -work, have a look at http://www.united-trackers.org/", 288}, +work, have a look at http://www.united-trackers.org/", 289}, {"\ 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.", 289}, - {"Jazz Edit:", 290}, - {"Tracker", 291}, - {"Whole Song", 292}, - {"All Patterns", 293}, - {"Current Pattern", 294}, - {"Current Track", 295}, - {"Current Instrument", 296}, - {"All Instruments", 297}, - {"Half note up", 298}, - {"Half note down", 299}, - {"Octave up", 300}, - {"Octave down", 301}, - {"Exchange 1 <-> 2", 302}, - {"Change 1 -> 2", 303}, - {"Transposition Tools", 304}, - {"Scope of the operation:", 305}, - {"Note Transposition", 306}, - {"Instrument Changing", 307}, - {"Instrument 1:", 308}, - {"Current instrument", 309}, - {"Instrument 2:", 310}, - {"Pattern length out of range: %d.\n", 311}, - {"Invalid vibtype %d, using Sine.\n", 312}, - {"File is no XI instrument.", 313}, - {"Unknown XI version 0x%x\n", 314}, - {"No FastTracker XM and no supported MOD format!", 315}, - {"Error while loading patterns.", 316}, - {"Can't open file", 317}, - {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 318}, - {"Error while loading instruments.", 319}, +instrument editor page.", 290}, + {"Jazz Edit:", 291}, + {"Tracker", 292}, + {"Whole Song", 293}, + {"All Patterns", 294}, + {"Current Pattern", 295}, + {"Current Track", 296}, + {"Current Instrument", 297}, + {"All Instruments", 298}, + {"Half note up", 299}, + {"Half note down", 300}, + {"Octave up", 301}, + {"Octave down", 302}, + {"Exchange 1 <-> 2", 303}, + {"Change 1 -> 2", 304}, + {"Transposition Tools", 305}, + {"Scope of the operation:", 306}, + {"Note Transposition", 307}, + {"Instrument Changing", 308}, + {"Instrument 1:", 309}, + {"Current instrument", 310}, + {"Instrument 2:", 311}, + {"Pattern length out of range: %d.\n", 312}, + {"Invalid vibtype %d, using Sine.\n", 313}, + {"File is no XI instrument.", 314}, + {"Unknown XI version 0x%x\n", 315}, + {"No FastTracker XM and no supported MOD format!", 316}, + {"Error while loading patterns.", 317}, + {"Can't open file", 318}, + {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 319}, + {"Error while loading instruments.", 320}, {"\ Module contains sample(s) that are too long for the current mixer.\n\ -Maximum sample length is %d.", 320}, +Maximum sample length is %d.", 321}, }; -int _msg_tbl_length = 320; +int _msg_tbl_length = 321; Binary files soundtracker-0.3.8/po/de.gmo and soundtracker-0.3.9/po/de.gmo differ diff -urN soundtracker-0.3.8/po/de.po soundtracker-0.3.9/po/de.po --- soundtracker-0.3.8/po/de.po Sun Dec 26 19:38:39 1999 +++ soundtracker-0.3.9/po/de.po Wed Jan 12 20:42:42 2000 @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: soundtracker-0.3.3\n" -"POT-Creation-Date: 1999-12-26 19:38+0100\n" +"POT-Creation-Date: 2000-01-08 12:24+0100\n" "PO-Revision-Date: 1999-09-21 23:00+02:00\n" "Last-Translator: Colin Marquardt \n" "Language-Team: German \n" @@ -33,47 +33,47 @@ msgid "Audio Configuration" msgstr "Audio-Konfiguration" -#: app/drivers/alsa-input.c:125 app/drivers/alsa-output.c:135 +#: app/drivers/alsa-input.c:125 app/drivers/alsa-output.c:134 #, c-format msgid "(%d bytes)" msgstr "(%d Bytes)" -#: app/drivers/alsa-input.c:128 app/drivers/alsa-output.c:138 +#: app/drivers/alsa-input.c:128 app/drivers/alsa-output.c:137 #: app/drivers/oss-output.c:139 #, c-format msgid "Estimated audio delay: %f microseconds" msgstr "Geschätzte Audio-Verzögerung: %f Mikrosekunden" -#: app/drivers/alsa-input.c:193 app/drivers/alsa-output.c:200 +#: app/drivers/alsa-input.c:193 app/drivers/alsa-output.c:199 #: app/drivers/oss-output.c:188 msgid "These changes won't take effect until you restart playing." msgstr "Diese Änderungen werden erst beim nächsten Neustart wirksam." -#: app/drivers/alsa-input.c:205 app/drivers/alsa-output.c:212 +#: app/drivers/alsa-input.c:205 app/drivers/alsa-output.c:211 #: app/drivers/oss-output.c:200 msgid "Resolution:" msgstr "Auflösung:" -#: app/drivers/alsa-input.c:215 app/drivers/alsa-output.c:222 +#: app/drivers/alsa-input.c:215 app/drivers/alsa-output.c:221 #: app/drivers/oss-output.c:210 msgid "Channels:" msgstr "Kanäle:" -#: app/drivers/alsa-input.c:225 app/drivers/alsa-output.c:232 +#: app/drivers/alsa-input.c:225 app/drivers/alsa-output.c:231 #: app/drivers/oss-output.c:220 msgid "Frequency [Hz]:" msgstr "Frequenz [Hz]:" -#: app/drivers/alsa-input.c:235 app/drivers/alsa-output.c:242 +#: app/drivers/alsa-input.c:235 app/drivers/alsa-output.c:241 #: app/drivers/oss-output.c:230 msgid "Buffer Size:" msgstr "Puffergröße:" -#: app/drivers/alsa-input.c:268 app/drivers/alsa-output.c:275 +#: app/drivers/alsa-input.c:268 app/drivers/alsa-output.c:274 msgid "ALSA card number:" msgstr "ALSA-Kartennummer:" -#: app/drivers/alsa-input.c:283 app/drivers/alsa-output.c:290 +#: app/drivers/alsa-input.c:283 app/drivers/alsa-output.c:289 msgid "ALSA device number:" msgstr "ALSA-Gerätenummer:" @@ -86,16 +86,16 @@ "Konnte ALSA-Gerät nicht für Soundeingabe öffnen (Karte:%d, Gerät:%d):\n" "%s" -#: app/drivers/alsa-input.c:426 app/drivers/alsa-output.c:427 +#: app/drivers/alsa-input.c:426 app/drivers/alsa-output.c:426 #: app/drivers/oss-input.c:221 app/drivers/oss-output.c:390 msgid "Required sound output format not supported.\n" msgstr "Erforderliches Soundausgabeformat nicht unterstützt.\n" -#: app/drivers/alsa-input.c:439 app/drivers/alsa-output.c:442 +#: app/drivers/alsa-input.c:439 app/drivers/alsa-output.c:441 msgid "Required sound output parameters not supported.\n" msgstr "Erforderliche Soundausgabeparameter nicht unterstützt..\n" -#: app/drivers/alsa-output.c:378 +#: app/drivers/alsa-output.c:377 #, c-format msgid "" "Couldn't open ALSA device for sound output (card:%d, device:%d):\n" @@ -125,7 +125,7 @@ msgid "no settings (yet), sorry!" msgstr "Keine Einstellungen (zur Zeit), sorry!" -#: app/drivers/file-output.c:161 app/sample-editor.c:1313 +#: app/drivers/file-output.c:161 app/sample-editor.c:1337 msgid "Can't open file for writing." msgstr "Kann Datei nicht zum Schreiben öffnen." @@ -232,7 +232,7 @@ msgid "Render WAV" msgstr "" -#: app/file-operations.c:148 app/sample-editor.c:275 +#: app/file-operations.c:148 app/sample-editor.c:287 msgid "Load Sample" msgstr "Lade Sample" @@ -309,7 +309,7 @@ msgid "Question" msgstr "Frage" -#: app/gui-subs.c:447 app/sample-editor.c:1219 app/sample-editor.c:1365 +#: app/gui-subs.c:447 app/sample-editor.c:1243 app/sample-editor.c:1389 msgid "Cancel" msgstr "Abbrechen" @@ -337,55 +337,55 @@ msgid "Are you sure you want to overwrite the file?" msgstr "Sind sie sicher, daß Sie die Datei überschreiben wollen?" -#: app/gui.c:1113 +#: app/gui.c:1114 msgid "Load XM..." msgstr "Lade XM..." -#: app/gui.c:1115 +#: app/gui.c:1116 msgid "Save XM..." msgstr "Speichere XM..." -#: app/gui.c:1118 +#: app/gui.c:1119 msgid "Render module as WAV..." msgstr "" -#: app/gui.c:1170 +#: app/gui.c:1171 msgid "Play Song" msgstr "Spiele Song" -#: app/gui.c:1176 +#: app/gui.c:1177 msgid "Play Pattern" msgstr "Spiele Pattern" -#: app/gui.c:1182 +#: app/gui.c:1183 msgid "Stop" msgstr "Stop" -#: app/gui.c:1201 +#: app/gui.c:1202 msgid "Number of Channels:" msgstr "Anzahl der Kanäle:" -#: app/gui.c:1217 +#: app/gui.c:1218 msgid "Pattern" msgstr "Pattern" -#: app/gui.c:1233 +#: app/gui.c:1234 msgid "PatLength" msgstr "PatLänge" -#: app/gui.c:1325 +#: app/gui.c:1326 msgid "Octave" msgstr "Oktave" -#: app/gui.c:1333 +#: app/gui.c:1334 msgid "Jump" msgstr "Springe" -#: app/gui.c:1341 +#: app/gui.c:1342 msgid "Instr" msgstr "Instr" -#: app/gui.c:1356 +#: app/gui.c:1357 msgid "Sample" msgstr "Sample" @@ -507,39 +507,39 @@ msgid "Various other keys" msgstr "Verschiedene andere Tasten" -#: app/keys.c:433 +#: app/keys.c:437 msgid "Function" msgstr "Funktion" -#: app/keys.c:434 +#: app/keys.c:438 msgid "Assignment" msgstr "Zuordnung" -#: app/keys.c:443 app/keys.c:446 +#: app/keys.c:447 app/keys.c:450 msgid "Keyboard Configuration" msgstr "Tastatur-Konfiguration" -#: app/keys.c:491 +#: app/keys.c:495 msgid "Key Group Explanation" msgstr "Tastengruppen-Erklärung" -#: app/keys.c:508 +#: app/keys.c:512 msgid "Key Explanation" msgstr "Tastenerklärung" -#: app/keys.c:539 +#: app/keys.c:543 msgid "Modifiers:" msgstr "Modifizierer:" -#: app/keys.c:565 +#: app/keys.c:569 msgid "Learn selected key" msgstr "Lerne gewählte Taste" -#: app/keys.c:571 +#: app/keys.c:575 msgid "Learn all keys" msgstr "Lerne alle Tasten" -#: app/keys.c:577 +#: app/keys.c:581 msgid "" "Please press the desired key combination!\n" "Click into left list to cancel" @@ -547,7 +547,7 @@ "Bitte drücken Sie die gewünschte Tastenkombination!\n" "Klicken Sie in die linke Liste, um abzubrechen" -#: app/keys.c:641 +#: app/keys.c:645 msgid "" "The keyboard configuration file is defective.\n" "Please use the Keyboard Configuration dialog." @@ -555,7 +555,7 @@ "Die Datei für die Tastaturkonfiguration ist fehlerhaft.\n" "Bitte verwenden Sie den Dialog für die Tastatur-Konfiguration." -#: app/keys.c:851 +#: app/keys.c:895 msgid "" "Automatic key configuration unsuccessful.\n" "Please use the Keyboard Configuration dialog\n" @@ -1093,102 +1093,108 @@ msgid "SelEnd" msgstr "AuswEnde" -#: app/sample-editor.c:250 -msgid "Reset Sel" -msgstr "Rücks. Ausw" - #: app/sample-editor.c:255 +#, fuzzy +msgid "Sel None" +msgstr "RelNote" + +#: app/sample-editor.c:261 +msgid "Sel All" +msgstr "" + +#: app/sample-editor.c:267 msgid "RelNote" msgstr "RelNote" -#: app/sample-editor.c:256 +#: app/sample-editor.c:268 msgid "Length: 0" msgstr "Länge: 0" -#: app/sample-editor.c:269 +#: app/sample-editor.c:281 msgid "Load Sample.." msgstr "Lade Sample..." -#: app/sample-editor.c:271 +#: app/sample-editor.c:283 msgid "Save WAV.." msgstr "Speichere WAV..." -#: app/sample-editor.c:284 +#: app/sample-editor.c:296 msgid "Save WAV" msgstr "Speichere WAV" -#: app/sample-editor.c:294 -msgid "Clear" -msgstr "Löschen" +#: app/sample-editor.c:306 +#, fuzzy +msgid "Clear Sample" +msgstr "Lade Sample" -#: app/sample-editor.c:300 +#: app/sample-editor.c:312 msgid "Monitor" msgstr "Monitor" -#: app/sample-editor.c:306 +#: app/sample-editor.c:318 msgid "Volume Ramp" msgstr "Lautstärke" -#: app/sample-editor.c:316 +#: app/sample-editor.c:328 msgid "Zoom to selection" msgstr "Zoom in Auswahl" -#: app/sample-editor.c:322 +#: app/sample-editor.c:334 msgid "Show all" msgstr "Zeige alles" -#: app/sample-editor.c:328 +#: app/sample-editor.c:340 msgid "Zoom in (+50%)" msgstr "Zoom in (+50%)" -#: app/sample-editor.c:334 +#: app/sample-editor.c:346 msgid "Zoom out (-50%)" msgstr "Zoom out (-50%)" -#: app/sample-editor.c:340 +#: app/sample-editor.c:352 #, fuzzy msgid "Reverse" msgstr "Entfernen" -#: app/sample-editor.c:350 +#: app/sample-editor.c:362 msgid "Cut" msgstr "Ausschneiden" -#: app/sample-editor.c:356 +#: app/sample-editor.c:368 msgid "Remove" msgstr "Entfernen" -#: app/sample-editor.c:362 +#: app/sample-editor.c:374 msgid "Copy" msgstr "Kopieren" -#: app/sample-editor.c:368 +#: app/sample-editor.c:380 msgid "Paste" msgstr "Einfügen" -#: app/sample-editor.c:374 +#: app/sample-editor.c:386 msgid "Filter" msgstr "Filter" -#: app/sample-editor.c:475 +#: app/sample-editor.c:473 #, c-format msgid "Length: %d" msgstr "Länge: %d" -#: app/sample-editor.c:975 +#: app/sample-editor.c:999 msgid "" msgstr "" -#: app/sample-editor.c:1059 +#: app/sample-editor.c:1083 msgid "Read error." msgstr "Lesefehler." -#: app/sample-editor.c:1175 +#: app/sample-editor.c:1199 #, fuzzy msgid "Load stereo sample" msgstr "Lade Sample" -#: app/sample-editor.c:1183 +#: app/sample-editor.c:1207 msgid "" "You have selected a stereo sample!\n" "(SoundTracker can only handle mono samples!)\n" @@ -1196,80 +1202,80 @@ "Please choose which channel to load:" msgstr "" -#: app/sample-editor.c:1194 +#: app/sample-editor.c:1218 #, fuzzy msgid "Left" msgstr "Links [%]:" -#: app/sample-editor.c:1200 +#: app/sample-editor.c:1224 msgid "Mix" msgstr "" -#: app/sample-editor.c:1206 +#: app/sample-editor.c:1230 #, fuzzy msgid "Right" msgstr "Rechts [%]:" -#: app/sample-editor.c:1245 +#: app/sample-editor.c:1269 msgid "Can't read sample" msgstr "Kann Sample nicht lesen" -#: app/sample-editor.c:1251 +#: app/sample-editor.c:1275 msgid "Sample is too long for current mixer module. Loading anyway." msgstr "Sample ist zu lang für aktuelles Mixer-Modul. Lade trotzdem." -#: app/sample-editor.c:1265 +#: app/sample-editor.c:1289 #, fuzzy msgid "Can only handle 8 and 16 bit samples with up to 2 channels" msgstr "Kann nur mono- 8 und 16 Bit Samples verarbeiten" -#: app/sample-editor.c:1350 +#: app/sample-editor.c:1374 msgid "OK" msgstr "OK" -#: app/sample-editor.c:1358 +#: app/sample-editor.c:1382 msgid "Start sampling" msgstr "Starte Sampling" -#: app/sample-editor.c:1393 app/sample-editor.c:1396 +#: app/sample-editor.c:1417 app/sample-editor.c:1420 msgid "Sampling Window" msgstr "Sampling-Fenster" -#: app/sample-editor.c:1496 +#: app/sample-editor.c:1520 msgid "" msgstr "" -#: app/sample-editor.c:1526 +#: app/sample-editor.c:1550 msgid "Recorded sample is too long for current mixer module. Using it anyway." msgstr "" "Aufgezeichnetes Sample ist zu lang für aktuelles Mixer-Modul. Verwende es " "trotzdem." -#: app/sample-editor.c:1558 +#: app/sample-editor.c:1582 msgid "Normalize" msgstr "Normalisieren" -#: app/sample-editor.c:1559 +#: app/sample-editor.c:1583 msgid "Execute" msgstr "Ausführen" -#: app/sample-editor.c:1560 app/tips-dialog.c:165 +#: app/sample-editor.c:1584 app/tips-dialog.c:165 msgid "Close" msgstr "Schließen" -#: app/sample-editor.c:1569 app/sample-editor.c:1572 +#: app/sample-editor.c:1593 app/sample-editor.c:1596 msgid "Volume Ramping" msgstr "Lautstärke-Anpassung" -#: app/sample-editor.c:1589 +#: app/sample-editor.c:1613 msgid "Perform linear volume fade on Selection" msgstr "Lineare Lautstärkenverringerung auf Markierung" -#: app/sample-editor.c:1601 +#: app/sample-editor.c:1625 msgid "Left [%]:" msgstr "Links [%]:" -#: app/sample-editor.c:1606 +#: app/sample-editor.c:1630 msgid "Right [%]:" msgstr "Rechts [%]:" @@ -1474,6 +1480,12 @@ msgstr "" "Modul enthält Sample(s), die zu lang für den aktuellen Mixer sind..\n" "Maximale Sample-Länge ist %d." + +#~ msgid "Reset Sel" +#~ msgstr "Rücks. Ausw" + +#~ msgid "Clear" +#~ msgstr "Löschen" #~ msgid "/Settings/Display Oscilloscopes" #~ msgstr "/Einstellungen/Zeige Oszilloskope" Binary files soundtracker-0.3.8/po/ja.gmo and soundtracker-0.3.9/po/ja.gmo differ diff -urN soundtracker-0.3.8/po/ja.po soundtracker-0.3.9/po/ja.po --- soundtracker-0.3.8/po/ja.po Sun Dec 26 12:12:55 1999 +++ soundtracker-0.3.9/po/ja.po Sat Jan 8 12:32:22 2000 @@ -1,19 +1,19 @@ -# ja.po(0.3.7-0) for SoundTracker +# ja.po(0.3.8-0) for SoundTracker # Copyright (C) 1998-1999 Michael Krause . -# Atsushi Yamagata , 1999. -# Yuuki NINOMIYA , 1999. +# Translators: Atsushi Yamagata , 1999. +# Yuuki NINOMIYA , 1999. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: SoundTracker 0.3.6\n" -"POT-Creation-Date: 1999-12-22 12:28+0100\n" -"PO-Revision-Date: 1999-12-24 10:39+09:00\n" +"POT-Creation-Date: 1999-12-26 19:38+0100\n" +"PO-Revision-Date: 1999-12-28 11:30+09:00\n" "Last-Translator: Atsushi Yamagata \n" -"Language-Team: LANGUAGE " -"MIME-Version: 1.0\n" +"Language-Team: LANGUAGE MIME-Version: 1.0\n" #: app/audioconfig.c:55 msgid "Playback Output" @@ -27,11 +27,11 @@ msgid "Sampling" msgstr "¥µ¥ó¥×¥ê¥ó¥°" -#: app/audioconfig.c:178 +#: app/audioconfig.c:179 msgid "Driver Module" msgstr "¥É¥é¥¤¥Ð¡¦¥â¥¸¥å¡¼¥ë" -#: app/audioconfig.c:186 app/audioconfig.c:189 +#: app/audioconfig.c:187 app/audioconfig.c:190 msgid "Audio Configuration" msgstr "¥ª¡¼¥Ç¥£¥ªÀßÄê" @@ -131,7 +131,7 @@ msgid "no settings (yet), sorry!" msgstr "¤¹¤ß¤Þ¤»¤ó¡¢(¤Þ¤À)ÀßÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó!" -#: app/drivers/file-output.c:161 app/sample-editor.c:1116 +#: app/drivers/file-output.c:161 app/sample-editor.c:1313 msgid "Can't open file for writing." msgstr "½ñ¤­¹þ¤ß¤Î¤¿¤á¤Ë¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó¡£" @@ -216,103 +216,107 @@ msgid "Loop" msgstr "¥ë¡¼¥×" -#: app/envelope-box.c:876 app/sample-editor.c:201 +#: app/envelope-box.c:876 app/sample-editor.c:221 msgid "Start" msgstr "³«»Ï" -#: app/envelope-box.c:877 app/sample-editor.c:202 +#: app/envelope-box.c:877 app/sample-editor.c:222 msgid "End" msgstr "½ªÎ»" -#: app/file-operations.c:144 +#: app/file-operations.c:145 msgid "Load Module" msgstr "¥â¥¸¥å¡¼¥ë¡¦¥í¡¼¥É" -#: app/file-operations.c:145 +#: app/file-operations.c:146 msgid "Save Module" msgstr "¥â¥¸¥å¡¼¥ëÊݸ" -#: app/file-operations.c:146 +#: app/file-operations.c:147 msgid "Render WAV" msgstr "WAV¥ì¥ó¥À" -#: app/file-operations.c:147 app/sample-editor.c:253 +#: app/file-operations.c:148 app/sample-editor.c:275 msgid "Load Sample" msgstr "¥µ¥ó¥×¥ë¡¦¥í¡¼¥É" -#: app/file-operations.c:148 +#: app/file-operations.c:149 msgid "Save Sample" msgstr "¥µ¥ó¥×¥ëÊݸ" -#: app/file-operations.c:149 +#: app/file-operations.c:150 msgid "Load Instrument" msgstr "³Ú´ï¥í¡¼¥É" -#: app/file-operations.c:150 +#: app/file-operations.c:151 msgid "Save Instrument" msgstr "³Ú´ïÊݸ" -#: app/file-operations.c:156 +#: app/file-operations.c:157 msgid "File" msgstr "¥Õ¥¡¥¤¥ë" -#: app/gui-settings.c:77 +#: app/file-operations.c:208 +msgid "Operation not supported." +msgstr "¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤Áàºî¤Ç¤¹¡£" + +#: app/gui-settings.c:78 msgid "Scopes Frequency" msgstr "¥¹¥³¡¼¥×¼þÇÈ¿ô" -#: app/gui-settings.c:80 +#: app/gui-settings.c:81 msgid "Tracker Frequency" msgstr "¥È¥é¥Ã¥«¡¼¼þÇÈ¿ô" -#: app/gui-settings.c:172 app/gui-settings.c:175 +#: app/gui-settings.c:173 app/gui-settings.c:176 msgid "GUI Configuration" msgstr "GUIÀßÄê" -#: app/gui-settings.c:200 +#: app/gui-settings.c:201 msgid "Use Hexadecimal Numbers" msgstr "16¿Ê¿ô¤ò»ÈÍÑ" -#: app/gui-settings.c:207 +#: app/gui-settings.c:208 msgid "Use upper case letters for hex numbers" msgstr "16¿Ê¿ô¤Ë¤ÏÂçʸ»ú¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤" -#: app/gui-settings.c:214 +#: app/gui-settings.c:215 msgid "Advance Cursor in FX Columns" msgstr "FX¥«¥é¥à¤Ç¤Î¥¢¥É¥Ð¥ó¥¹¡¦¥«¡¼¥½¥ë" -#: app/gui-settings.c:221 +#: app/gui-settings.c:222 msgid "Use anti-aliased envelope editor" msgstr "¥¢¥ó¥Á¡¦¥¨¥¤¥ê¥¢¥¹¡¦¥¨¥ó¥Ù¥í¡¼¥×¡¦¥¨¥Ç¥£¥¿»ÈÍÑ" -#: app/gui-settings.c:227 +#: app/gui-settings.c:228 msgid "You need to restart SoundTracker for this change to come into effect." msgstr "¤³¤ÎÊѹ¹¤òÈ¿±Ç¤¹¤ë¤Ë¤ÏSoundTracker¤òºÆµ¯Æ°¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£" -#: app/gui-settings.c:236 +#: app/gui-settings.c:237 msgid "Scopes buffer size [MB]" msgstr "¥¹¥³¡¼¥×¡¦¥Ð¥Ã¥Õ¥¡¡¦¥µ¥¤¥º [MB]" -#: app/gui-settings.c:255 +#: app/gui-settings.c:256 msgid "Highlight rows:" msgstr "¥í¥¦¶¯Ä´:" -#: app/gui-settings.c:273 +#: app/gui-settings.c:274 msgid "`Save XM' saves all non-empty patterns" msgstr "`ÊݸXM'¤ÇÁ´¤Æ¤Î¶õ¤Ç¤Ê¤¤¥Ñ¥¿¡¼¥ó¤òÊݸ" -#: app/gui-subs.c:425 +#: app/gui-subs.c:430 msgid "Question" msgstr "¼ÁÌä" -#: app/gui-subs.c:442 app/sample-editor.c:1168 +#: app/gui-subs.c:447 app/sample-editor.c:1219 app/sample-editor.c:1365 msgid "Cancel" msgstr "¼è¾Ã" -#: app/gui-subs.c:460 +#: app/gui-subs.c:465 msgid "Warning" msgstr "·Ù¹ð" -#: app/gui-subs.c:486 +#: app/gui-subs.c:491 msgid "Error!" msgstr "¥¨¥é¡¼!" @@ -328,15 +332,15 @@ "¥«¥ì¥ó¥È¡¦¥×¥í¥¸¥§¥¯¥È¤ò²òÊü¤·¤¿¤¤¤Î¤Ï³Î¤«¤Ç¤¹¤«?\n" "Á´¤Æ¤ÎÊѹ¹¤¬¼º¤ï¤ì¤Þ¤¹!" -#: app/gui.c:228 app/gui.c:240 +#: app/gui.c:228 app/gui.c:242 msgid "Are you sure you want to overwrite the file?" msgstr "¥Õ¥¡¥¤¥ë¤ò¾å½ñ¤­¤·¤¿¤¤¤Î¤Ï³Î¤«¤Ç¤¹¤«?" -#: app/gui.c:1114 +#: app/gui.c:1113 msgid "Load XM..." msgstr "XM¥í¡¼¥É..." -#: app/gui.c:1116 +#: app/gui.c:1115 msgid "Save XM..." msgstr "XMÊݸ..." @@ -344,43 +348,43 @@ msgid "Render module as WAV..." msgstr "WAV¤È¤·¤Æ¥â¥¸¥å¡¼¥ë¤ò¥ì¥ó¥À¥ê¥ó¥°¤¹¤ë..." -#: app/gui.c:1168 +#: app/gui.c:1170 msgid "Play Song" msgstr "¶ÊºÆÀ¸" -#: app/gui.c:1174 +#: app/gui.c:1176 msgid "Play Pattern" msgstr "¥Ñ¥¿¡¼¥óºÆÀ¸" -#: app/gui.c:1180 +#: app/gui.c:1182 msgid "Stop" msgstr "Ää»ß" -#: app/gui.c:1199 +#: app/gui.c:1201 msgid "Number of Channels:" msgstr "¥Á¥ã¥ó¥Í¥ë¿ô:" -#: app/gui.c:1215 +#: app/gui.c:1217 msgid "Pattern" msgstr "¥Ñ¥¿¡¼¥ó" -#: app/gui.c:1231 +#: app/gui.c:1233 msgid "PatLength" msgstr "¥Ñ¥¿¡¼¥óĹ" -#: app/gui.c:1323 +#: app/gui.c:1325 msgid "Octave" msgstr "¥ª¥¯¥¿¡¼¥Ö" -#: app/gui.c:1331 +#: app/gui.c:1333 msgid "Jump" msgstr "¥¸¥ã¥ó¥×" -#: app/gui.c:1339 +#: app/gui.c:1341 msgid "Instr" msgstr "³Ú´ï" -#: app/gui.c:1354 +#: app/gui.c:1356 msgid "Sample" msgstr "¥µ¥ó¥×¥ë" @@ -556,11 +560,11 @@ "ÀßÄê¥á¥Ë¥å¡¼¤Î¥­¡¼¥Ü¡¼¥ÉÀßÄê¥À¥¤¥¢¥í¥°¤ò»ÈÍÑ\n" "¤·¤Æ¤¯¤À¤µ¤¤¡£" -#: app/menubar.c:92 +#: app/menubar.c:93 msgid "Ok" msgstr "λ²ò" -#: app/menubar.c:128 +#: app/menubar.c:129 msgid "" "Are you sure you want to do this?\n" "All changes will be lost!" @@ -568,7 +572,7 @@ "¤³¤¦¤·¤¿¤¤¤Î¤Ï³Î¤«¤Ç¤¹¤«?\n" "Á´¤Æ¤ÎÊѹ¹¤¬¼º¤ï¤ì¤Þ¤¹!" -#: app/menubar.c:150 +#: app/menubar.c:151 msgid "" "Are you sure you want to quit?\n" "All changes will be lost!" @@ -576,409 +580,397 @@ "½ªÎ»¤·¤¿¤¤¤Î¤Ï³Î¤«¤Ç¤¹¤«?\n" "Á´¤Æ¤ÎÊѹ¹¤¬¼º¤ï¤ì¤Þ¤¹!" -#: app/menubar.c:221 +#: app/menubar.c:222 msgid "_Open..." msgstr "³«¤¯(_O)..." -#: app/menubar.c:223 +#: app/menubar.c:224 msgid "Save _as..." -msgstr "Êݸ(_A)..." +msgstr "Êݸ(_a)..." -#: app/menubar.c:228 +#: app/menubar.c:230 msgid "Save Module as _WAV..." -msgstr "WAV¤È¤·¤Æ¥â¥¸¥å¡¼¥ë¤òÊݸ..." +msgstr "_WAV¤È¤·¤Æ¥â¥¸¥å¡¼¥ë¤òÊݸ..." -#: app/menubar.c:233 +#: app/menubar.c:235 msgid "_Quit" msgstr "½ªÎ»(_Q)" -#: app/menubar.c:240 +#: app/menubar.c:242 msgid "Clear _All" msgstr "Á´¤Æ¾Ãµî(_A)" -#: app/menubar.c:242 +#: app/menubar.c:244 msgid "Clear _Patterns Only" msgstr "¥Ñ¥¿¡¼¥ó¤Î¤ß¾Ãµî(_P)" -#: app/menubar.c:244 +#: app/menubar.c:246 msgid "_Optimize Module" msgstr "¥â¥¸¥å¡¼¥ëºÇŬ²½(_O)" -#: app/menubar.c:251 app/menubar.c:262 app/menubar.c:280 +#: app/menubar.c:253 app/menubar.c:264 app/menubar.c:282 msgid "C_ut" msgstr "ÀÚ¼è(_u)" -#: app/menubar.c:253 app/menubar.c:264 app/menubar.c:282 +#: app/menubar.c:255 app/menubar.c:266 app/menubar.c:284 msgid "_Copy" msgstr "¥³¥Ô¡¼(_C)" -#: app/menubar.c:255 app/menubar.c:266 app/menubar.c:284 +#: app/menubar.c:257 app/menubar.c:268 app/menubar.c:286 msgid "_Paste" msgstr "ŽÉÕ(_P)" -#: app/menubar.c:268 +#: app/menubar.c:270 msgid "_Insert" msgstr "ÁÞÆþ(_I)" -#: app/menubar.c:270 +#: app/menubar.c:272 msgid "_Delete" msgstr "ºï½ü(_D)" -#: app/menubar.c:278 +#: app/menubar.c:280 msgid "_Mark" msgstr "¥Þ¡¼¥¯(_M)" -#: app/menubar.c:291 +#: app/menubar.c:293 msgid "_Jazz Edit Mode" -msgstr "JazzÊÔ½¸¥â¡¼¥É(_J)" +msgstr "_JazzÊÔ½¸¥â¡¼¥É" -#: app/menubar.c:296 +#: app/menubar.c:298 msgid "Transp_osition..." msgstr "°ÜÄ´(_o)..." -#: app/menubar.c:301 app/menubar.c:386 +#: app/menubar.c:303 app/menubar.c:388 msgid "_Pattern" msgstr "¥Ñ¥¿¡¼¥ó(_P)" -#: app/menubar.c:302 +#: app/menubar.c:304 msgid "_Track" msgstr "¥È¥é¥Ã¥¯(_T)" -#: app/menubar.c:303 +#: app/menubar.c:305 msgid "_Selection" msgstr "ÁªÂò(_S)" -#: app/menubar.c:309 +#: app/menubar.c:311 msgid "_Find Unused Pattern" msgstr "̤»ÈÍѥѥ¿¡¼¥ó¸¡º÷(_F)" -#: app/menubar.c:311 +#: app/menubar.c:313 msgid "_Copy Current to Unused Pattern" msgstr "̤»ÈÍѥѥ¿¡¼¥ó¤Ë¥«¥ì¥ó¥È¤ò¥³¥Ô¡¼(_C)" -#: app/menubar.c:313 +#: app/menubar.c:315 msgid "C_lear Unused Patterns" msgstr "̤»ÈÍѥѥ¿¡¼¥ó¾Ãµî(_l)" -#: app/menubar.c:315 +#: app/menubar.c:317 msgid "_Pack Patterns" msgstr "¥Ñ¥¿¡¼¥ó¡¦¥Ñ¥Ã¥¯(_P)" -#: app/menubar.c:322 +#: app/menubar.c:324 msgid "_Load XI..." msgstr "XI¥í¡¼¥É(_L)..." -#: app/menubar.c:324 +#: app/menubar.c:326 msgid "_Save XI..." -msgstr "XIÊݸ..." +msgstr "XIÊݸ(_S)..." -#: app/menubar.c:329 +#: app/menubar.c:331 msgid "_Clear Current" -msgstr "¥«¥ì¥ó¥È¾Ãµî" +msgstr "¥«¥ì¥ó¥È¾Ãµî(_C)" -#: app/menubar.c:334 +#: app/menubar.c:336 msgid "_Delete Unused Instruments" msgstr "̤»ÈÍѳڴïºï½ü(_D)" -#: app/menubar.c:342 +#: app/menubar.c:344 msgid "Display _Oscilloscopes" msgstr "¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨(_O)" -#: app/menubar.c:344 +#: app/menubar.c:346 msgid "Use _Backing Store" msgstr "¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ(_B)" -#: app/menubar.c:349 +#: app/menubar.c:351 msgid "_Keyboard Configuration..." msgstr "¥­¡¼¥Ü¡¼¥ÉÀßÄê(_K)..." -#: app/menubar.c:351 +#: app/menubar.c:353 msgid "_Audio Configuration..." msgstr "¥ª¡¼¥Ç¥£¥ªÀßÄê(_A)..." -#: app/menubar.c:353 +#: app/menubar.c:355 msgid "_Playback Effects..." msgstr "ºÆÀ¸¸ú²Ì(_P)..." -#: app/menubar.c:355 +#: app/menubar.c:357 msgid "_GUI Configuration..." msgstr "GUIÀßÄê(_G)..." -#: app/menubar.c:360 +#: app/menubar.c:362 msgid "_Save Settings now" msgstr "ÀßÄê¤òº£Êݸ(_S)" -#: app/menubar.c:362 +#: app/menubar.c:364 msgid "Save Settings on _Exit" msgstr "½ªÎ»»þ¤ËÀßÄê¤òÊݸ(_E)" -#: app/menubar.c:369 +#: app/menubar.c:371 msgid "_About..." msgstr "¾ðÊó(_A)..." -#: app/menubar.c:374 +#: app/menubar.c:376 msgid "Show _Tips..." msgstr "µ»¤Îɽ¼¨(_T)..." -#: app/menubar.c:376 +#: app/menubar.c:378 msgid "_XM Effects..." msgstr "_XM¸ú²Ì..." -#: app/menubar.c:383 +#: app/menubar.c:385 msgid "_File" msgstr "¥Õ¥¡¥¤¥ë(_F)" -#: app/menubar.c:384 +#: app/menubar.c:386 msgid "_Module" msgstr "¥â¥¸¥å¡¼¥ë(_M)" -#: app/menubar.c:385 +#: app/menubar.c:387 msgid "_Edit" msgstr "ÊÔ½¸(_E)" -#: app/menubar.c:387 +#: app/menubar.c:389 msgid "_Instrument" msgstr "³Ú´ï(_I)" -#: app/menubar.c:388 +#: app/menubar.c:390 msgid "_Settings" msgstr "ÀßÄê(_S)" -#: app/menubar.c:389 +#: app/menubar.c:391 msgid "_Help" msgstr "¥Ø¥ë¥×(_H)" -#: app/menubar.c:416 +#: app/menubar.c:421 msgid "/_File" -msgstr "/¥Õ¥¡¥¤¥ë" +msgstr "/¥Õ¥¡¥¤¥ë(_F)" -#: app/menubar.c:417 +#: app/menubar.c:422 msgid "/File/_Open..." msgstr "/¥Õ¥¡¥¤¥ë/³«¤¯(_O)..." -#: app/menubar.c:418 +#: app/menubar.c:423 msgid "/File/Save _as..." msgstr "/¥Õ¥¡¥¤¥ë/Êݸ(_a)..." -#: app/menubar.c:419 app/menubar.c:421 +#: app/menubar.c:424 app/menubar.c:426 msgid "/File/-" msgstr "/¥Õ¥¡¥¤¥ë/-" -#: app/menubar.c:420 +#: app/menubar.c:425 msgid "/File/Save Module as _WAV..." msgstr "/¥Õ¥¡¥¤¥ë/_WAV¤È¤·¤Æ¥â¥¸¥å¡¼¥ë¤òÊݸ..." -#: app/menubar.c:422 +#: app/menubar.c:427 msgid "/File/_Quit" msgstr "/¥Õ¥¡¥¤¥ë/½ªÎ»(_Q)" -#: app/menubar.c:423 +#: app/menubar.c:428 msgid "/_Module" -msgstr "/¥â¥¸¥å¡¼¥ë" +msgstr "/¥â¥¸¥å¡¼¥ë(_M)" -#: app/menubar.c:424 +#: app/menubar.c:429 msgid "/Module/Clear _All" msgstr "/¥â¥¸¥å¡¼¥ë/Á´¤Æ¾Ãµî(_A)" -#: app/menubar.c:425 +#: app/menubar.c:430 msgid "/Module/Clear _Patterns Only" msgstr "/¥â¥¸¥å¡¼¥ë/¥Ñ¥¿¡¼¥ó¤Î¤ß¾Ãµî(_P)" -#: app/menubar.c:426 +#: app/menubar.c:431 msgid "/Module/_Optimize Module" msgstr "/¥â¥¸¥å¡¼¥ë/¥â¥¸¥å¡¼¥ëºÇŬ²½(_O)" -#: app/menubar.c:427 +#: app/menubar.c:432 msgid "/_Edit" -msgstr "/ÊÔ½¸" +msgstr "/ÊÔ½¸(_E)" -#: app/menubar.c:428 +#: app/menubar.c:433 msgid "/Edit/_Jazz Edit Mode" -msgstr "/ÊÔ½¸/JazzÊÔ½¸¥â¡¼¥É(_J)" +msgstr "/ÊÔ½¸/_JazzÊÔ½¸¥â¡¼¥É" -#: app/menubar.c:429 app/menubar.c:431 +#: app/menubar.c:434 app/menubar.c:436 msgid "/Edit/-" msgstr "/ÊÔ½¸/-" -#: app/menubar.c:430 +#: app/menubar.c:435 msgid "/Edit/_Transposition..." msgstr "/ÊÔ½¸/°ÜÄ´(_T)..." -#: app/menubar.c:432 +#: app/menubar.c:437 msgid "/Edit/_Pattern" -msgstr "/ÊÔ½¸/¥Ñ¥¿¡¼¥ó" +msgstr "/ÊÔ½¸/¥Ñ¥¿¡¼¥ó(_P)" -#: app/menubar.c:433 +#: app/menubar.c:438 msgid "/Edit/Pattern/C_ut" msgstr "/ÊÔ½¸/¥Ñ¥¿¡¼¥ó/ÀÚ¼è(_u)" -#: app/menubar.c:434 +#: app/menubar.c:439 msgid "/Edit/Pattern/_Copy" msgstr "/ÊÔ½¸/¥Ñ¥¿¡¼¥ó/¥³¥Ô¡¼(_C)" -#: app/menubar.c:435 +#: app/menubar.c:440 msgid "/Edit/Pattern/_Paste" msgstr "/ÊÔ½¸/¥Ñ¥¿¡¼¥ó/ŽÉÕ(_P)" -#: app/menubar.c:436 +#: app/menubar.c:441 msgid "/Edit/_Track" -msgstr "/ÊÔ½¸/¥È¥é¥Ã¥¯" +msgstr "/ÊÔ½¸/¥È¥é¥Ã¥¯(_T)" -#: app/menubar.c:437 +#: app/menubar.c:442 msgid "/Edit/Track/C_ut" msgstr "/ÊÔ½¸/¥È¥é¥Ã¥¯/ÀÚ¼è(_u)" -#: app/menubar.c:438 +#: app/menubar.c:443 msgid "/Edit/Track/_Copy" msgstr "/ÊÔ½¸/¥È¥é¥Ã¥¯/¥³¥Ô¡¼(_C)" -#: app/menubar.c:439 +#: app/menubar.c:444 msgid "/Edit/Track/_Paste" msgstr "/ÊÔ½¸/¥È¥é¥Ã¥¯/ŽÉÕ(_P)" -#: app/menubar.c:440 +#: app/menubar.c:445 msgid "/Edit/Track/_Insert" msgstr "/ÊÔ½¸/¥È¥é¥Ã¥¯/ÁÞÆþ(_I)" -#: app/menubar.c:441 +#: app/menubar.c:446 msgid "/Edit/Track/_Delete" msgstr "/ÊÔ½¸/¥È¥é¥Ã¥¯/ºï½ü(_D)" -#: app/menubar.c:442 +#: app/menubar.c:447 msgid "/Edit/_Selection" -msgstr "/ÊÔ½¸/ÁªÂò" +msgstr "/ÊÔ½¸/ÁªÂò(_S)" -#: app/menubar.c:443 +#: app/menubar.c:448 msgid "/Edit/Selection/_Mark" msgstr "/ÊÔ½¸/ÁªÂò/¥Þ¡¼¥¯(_M)" -#: app/menubar.c:444 +#: app/menubar.c:449 msgid "/Edit/Selection/C_ut" msgstr "/ÊÔ½¸/ÁªÂò/ÀÚ¼è(_u)" -#: app/menubar.c:445 +#: app/menubar.c:450 msgid "/Edit/Selection/_Copy" msgstr "/ÊÔ½¸/ÁªÂò/¥³¥Ô¡¼(_C)" -#: app/menubar.c:446 +#: app/menubar.c:451 msgid "/Edit/Selection/_Paste" msgstr "/ÊÔ½¸/ÁªÂò/ŽÉÕ(_P)" -#: app/menubar.c:447 +#: app/menubar.c:452 msgid "/_Pattern" -msgstr "/¥Ñ¥¿¡¼¥ó" +msgstr "/¥Ñ¥¿¡¼¥ó(_P)" -#: app/menubar.c:448 +#: app/menubar.c:453 msgid "/Pattern/_Find Unused Pattern" msgstr "/¥Ñ¥¿¡¼¥ó/̤»ÈÍѥѥ¿¡¼¥ó¸¡º÷(_F)" -#: app/menubar.c:449 +#: app/menubar.c:454 msgid "/Pattern/_Copy Current to Unused Pattern" msgstr "/¥Ñ¥¿¡¼¥ó/̤»ÈÍѥѥ¿¡¼¥ó¤Ë¥«¥ì¥ó¥È¤ò¥³¥Ô¡¼(_C)" -#: app/menubar.c:450 +#: app/menubar.c:455 msgid "/Pattern/C_lear Unused Patterns" msgstr "/¥Ñ¥¿¡¼¥ó/̤»ÈÍѥѥ¿¡¼¥ó¾Ãµî(_l)" -#: app/menubar.c:451 +#: app/menubar.c:456 msgid "/Pattern/_Pack Patterns" msgstr "/¥Ñ¥¿¡¼¥ó/¥Ñ¥¿¡¼¥ó¡¦¥Ñ¥Ã¥¯(_P)" -#: app/menubar.c:452 +#: app/menubar.c:457 msgid "/_Instrument" -msgstr "/³Ú´ï" +msgstr "/³Ú´ï(_I)" -#: app/menubar.c:453 +#: app/menubar.c:458 msgid "/Instrument/_Load XI..." msgstr "/³Ú´ï/XI¥í¡¼¥É(_L)..." -#: app/menubar.c:454 +#: app/menubar.c:459 msgid "/Instrument/_Save XI..." msgstr "/³Ú´ï/XIÊݸ(_S)..." -#: app/menubar.c:455 app/menubar.c:457 +#: app/menubar.c:460 app/menubar.c:462 msgid "/Instrument/-" msgstr "/³Ú´ï/-" -#: app/menubar.c:456 +#: app/menubar.c:461 msgid "/Instrument/_Clear Current" msgstr "/³Ú´ï/¥«¥ì¥ó¥È¾Ãµî(_C)" -#: app/menubar.c:458 +#: app/menubar.c:463 msgid "/Instrument/_Delete Unused Instruments" msgstr "/³Ú´ï/̤»ÈÍѳڴïºï½ü(_D)" -#: app/menubar.c:459 +#: app/menubar.c:464 msgid "/_Settings" -msgstr "/ÀßÄê" +msgstr "/ÀßÄê(_S)" -#: app/menubar.c:460 +#: app/menubar.c:465 msgid "/Settings/Display _Oscilloscopes" msgstr "/ÀßÄê/¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨(_O)" -#: app/menubar.c:461 +#: app/menubar.c:466 msgid "/Settings/Use _Backing Store" msgstr "/ÀßÄê/¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ(_B)" -#: app/menubar.c:462 app/menubar.c:467 +#: app/menubar.c:467 app/menubar.c:472 msgid "/Settings/-" msgstr "/ÀßÄê/-" -#: app/menubar.c:463 +#: app/menubar.c:468 msgid "/Settings/_Keyboard Configuration..." msgstr "/ÀßÄê/¥­¡¼¥Ü¡¼¥ÉÀßÄê(_K)..." -#: app/menubar.c:464 +#: app/menubar.c:469 msgid "/Settings/_Audio Configuration..." msgstr "/ÀßÄê/¥ª¡¼¥Ç¥£¥ªÀßÄê(_A)..." -#: app/menubar.c:465 +#: app/menubar.c:470 msgid "/Settings/_Playback Effects..." msgstr "/ÀßÄê/ºÆÀ¸¸ú²Ì(_P)..." -#: app/menubar.c:466 +#: app/menubar.c:471 msgid "/Settings/_GUI Configuration..." msgstr "/ÀßÄê/GUIÀßÄê(_G)..." -#: app/menubar.c:468 +#: app/menubar.c:473 msgid "/Settings/_Save Settings now" msgstr "/ÀßÄê/ÀßÄê¤òº£Êݸ(_S)" -#: app/menubar.c:469 +#: app/menubar.c:474 msgid "/Settings/Save Settings on _Exit" msgstr "/ÀßÄê/½ªÎ»»þ¤ËÀßÄê¤òÊݸ(_E)" -#: app/menubar.c:470 +#: app/menubar.c:475 msgid "/_Help" msgstr "/¥Ø¥ë¥×" -#: app/menubar.c:471 +#: app/menubar.c:476 msgid "/Help/_About..." msgstr "/¥Ø¥ë¥×/¾ðÊó(_A)..." -#: app/menubar.c:472 +#: app/menubar.c:477 msgid "/Help/-" msgstr "/¥Ø¥ë¥×/-" -#: app/menubar.c:473 +#: app/menubar.c:478 msgid "/Help/Show _Tips..." msgstr "/¥Ø¥ë¥×/µ»¤Îɽ¼¨(_T)..." -#: app/menubar.c:474 +#: app/menubar.c:479 msgid "/Help/_XM Effects..." -msgstr "/¥Ø¥ë¥×/XM¸ú²Ì(_X)..." - -#: app/menubar.c:488 -msgid "/Settings/Display Oscilloscopes" -msgstr "/ÀßÄê/¥ª¥·¥í¥¹¥³¡¼¥×ɽ¼¨(O)" - -#: app/menubar.c:490 -msgid "/Settings/Use Backing Store" -msgstr "/ÀßÄê/¥Ð¥Ã¥­¥ó¥°¡¦¥¹¥È¥¢»ÈÍÑ(B)" - -#: app/menubar.c:492 -msgid "/Settings/Save Settings on Exit" -msgstr "/ÀßÄê/½ªÎ»»þ¤ËÀßÄê¤òÊݸ(E)" +msgstr "/¥Ø¥ë¥×/_XM¸ú²Ì..." #: app/module-info.c:116 msgid "Instrument Name" @@ -996,7 +988,7 @@ msgid "Linear" msgstr "Àþ·¿" -#: app/module-info.c:118 app/sample-editor.c:161 +#: app/module-info.c:118 app/sample-editor.c:181 msgid "Amiga" msgstr "Amiga" @@ -1024,196 +1016,224 @@ "ÀßÄê¥Õ¥¡¥¤¥ë¤òµ­²±¤¹¤ë¤¿¤á¡¢¤¢¤Ê¤¿¤Î¥Û¡¼¥à¡¦¥Ç¥£¥ì¥¯¥È¥ê¤Ë\n" "¥Ç¥£¥ì¥¯¥È¥ê'.soundtracker'¤¬À¸À®¤µ¤ì¤Þ¤¹¡£\n" -#: app/sample-editor.c:160 +#: app/sample-editor.c:180 msgid "No loop" msgstr "¥ë¡¼¥×̵¤·" -#: app/sample-editor.c:162 +#: app/sample-editor.c:182 msgid "PingPong" msgstr "¥Ô¥ó¥Ý¥ó" -#: app/sample-editor.c:166 +#: app/sample-editor.c:186 msgid "8 bits" msgstr "8¥Ó¥Ã¥È" -#: app/sample-editor.c:167 +#: app/sample-editor.c:187 msgid "16 bits" msgstr "16¥Ó¥Ã¥È" -#: app/sample-editor.c:173 +#: app/sample-editor.c:193 msgid "Sample Editor" msgstr "¥µ¥ó¥×¥ëÊÔ½¸" -#: app/sample-editor.c:213 +#: app/sample-editor.c:233 msgid "Volume" msgstr "²»ÎÌ" -#: app/sample-editor.c:214 +#: app/sample-editor.c:234 msgid "Panning" msgstr "¥Ñ¥ó" -#: app/sample-editor.c:215 +#: app/sample-editor.c:235 msgid "Finetune" msgstr "ÈùÄ´À°" -#: app/sample-editor.c:226 +#: app/sample-editor.c:246 msgid "SelStart" msgstr "ÁªÂò»ÏÅÀ" -#: app/sample-editor.c:227 +#: app/sample-editor.c:247 msgid "SelEnd" msgstr "ÁªÂò½ªÅÀ" -#: app/sample-editor.c:230 +#: app/sample-editor.c:250 msgid "Reset Sel" msgstr "ÁªÂò¥ê¥»¥Ã¥È" -#: app/sample-editor.c:235 +#: app/sample-editor.c:255 msgid "RelNote" msgstr "Relnote" -#: app/sample-editor.c:236 +#: app/sample-editor.c:256 msgid "Length: 0" msgstr "Ťµ: 0" -#: app/sample-editor.c:249 +#: app/sample-editor.c:269 msgid "Load Sample.." msgstr "¥µ¥ó¥×¥ë¡¦¥í¡¼¥É.." -#: app/sample-editor.c:250 +#: app/sample-editor.c:271 msgid "Save WAV.." msgstr "WAVÊݸ.." -#: app/sample-editor.c:262 +#: app/sample-editor.c:284 msgid "Save WAV" msgstr "WAVÊݸ" -#: app/sample-editor.c:272 +#: app/sample-editor.c:294 msgid "Clear" msgstr "¾Ãµî" -#: app/sample-editor.c:278 +#: app/sample-editor.c:300 msgid "Monitor" msgstr "¥â¥Ë¥¿" -#: app/sample-editor.c:284 +#: app/sample-editor.c:306 msgid "Volume Ramp" msgstr "Volume Ramp" -#: app/sample-editor.c:294 +#: app/sample-editor.c:316 msgid "Zoom to selection" msgstr "ÁªÂòÉôʬ³ÈÂç" -#: app/sample-editor.c:300 +#: app/sample-editor.c:322 msgid "Show all" msgstr "Á´¤ÆÉ½¼¨" -#: app/sample-editor.c:306 +#: app/sample-editor.c:328 msgid "Zoom in (+50%)" msgstr "³ÈÂç(+50%)" -#: app/sample-editor.c:312 +#: app/sample-editor.c:334 msgid "Zoom out (-50%)" msgstr "½Ì¾®(-50%)" -#: app/sample-editor.c:318 -msgid "Resample" -msgstr "ºÆ¥µ¥ó¥×¥ë" +#: app/sample-editor.c:340 +msgid "Reverse" +msgstr "¥ê¥Ð¡¼¥¹" -#: app/sample-editor.c:329 +#: app/sample-editor.c:350 msgid "Cut" msgstr "ÀÚ¼è" -#: app/sample-editor.c:335 +#: app/sample-editor.c:356 msgid "Remove" msgstr "°Üư" -#: app/sample-editor.c:341 +#: app/sample-editor.c:362 msgid "Copy" msgstr "¥³¥Ô¡¼" -#: app/sample-editor.c:347 +#: app/sample-editor.c:368 msgid "Paste" msgstr "ŽÉÕ" -#: app/sample-editor.c:353 +#: app/sample-editor.c:374 msgid "Filter" msgstr "¥Õ¥£¥ë¥¿" -#: app/sample-editor.c:453 +#: app/sample-editor.c:475 #, c-format msgid "Length: %d" msgstr "Ťµ: %d" -#: app/sample-editor.c:953 +#: app/sample-editor.c:975 msgid "" msgstr "<º£Å½ÉÕ¤±¤µ¤ì¤Þ¤·¤¿>" -#: app/sample-editor.c:1030 +#: app/sample-editor.c:1059 +msgid "Read error." +msgstr "ÆÉ¤ß¹þ¤ß¥¨¥é¡¼¡£" + +#: app/sample-editor.c:1175 +msgid "Load stereo sample" +msgstr "¥¹¥Æ¥ì¥ª¡¦¥µ¥ó¥×¥ë¡¦¥í¡¼¥É" + +#: app/sample-editor.c:1183 +msgid "" +"You have selected a stereo sample!\n" +"(SoundTracker can only handle mono samples!)\n" +"\n" +"Please choose which channel to load:" +msgstr "" +"¥¹¥Æ¥ì¥ª¡¦¥µ¥ó¥×¥ë¤¬ÁªÂò¤µ¤ì¤Þ¤·¤¿!\n" +"(SoundTracker ¤Ç¤Ï¥â¥Î¡¦¥µ¥ó¥×¥ë¤À¤±½èÍý¤Ç¤­¤Þ¤¹!)\n" +"\n" +"¥í¡¼¥É¤¹¤ë¤¿¤á¤Î¥Á¥ã¥ó¥Í¥ë¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤:" + +#: app/sample-editor.c:1194 +msgid "Left" +msgstr "º¸" + +#: app/sample-editor.c:1200 +msgid "Mix" +msgstr "¥ß¥Ã¥¯¥¹" + +#: app/sample-editor.c:1206 +msgid "Right" +msgstr "±¦" + +#: app/sample-editor.c:1245 msgid "Can't read sample" msgstr "¥µ¥ó¥×¥ë¤¬ÆÉ¤ß¹þ¤á¤Þ¤»¤ó" -#: app/sample-editor.c:1036 +#: app/sample-editor.c:1251 msgid "Sample is too long for current mixer module. Loading anyway." msgstr "" "¥µ¥ó¥×¥ë¤¬¸½ºß¤Î¥ß¥­¥µ¡¦¥â¥¸¥å¡¼¥ë¤Ë¤ÏĹ²á¤®¤Þ¤¹¡£\n" "¤È¤Ë¤«¤¯¥í¡¼¥É¤·¤Þ¤¹¡£" -#: app/sample-editor.c:1050 -msgid "Can only handle mono 8 and 16 bit samples" -msgstr "¥â¥Î¥é¥ë¤Î 8¡¢16¥Ó¥Ã¥È¡¦¥µ¥ó¥×¥ë¤Î¤ß½èÍý¤Ç¤­¤Þ¤¹" - -#: app/sample-editor.c:1061 -msgid "Read error." -msgstr "ÆÉ¤ß¹þ¤ß¥¨¥é¡¼¡£" +#: app/sample-editor.c:1265 +msgid "Can only handle 8 and 16 bit samples with up to 2 channels" +msgstr "2¥Á¥ã¥ó¥Í¥ë¤Þ¤Ç¤Ç 8¡¢16¥Ó¥Ã¥È¡¦¥µ¥ó¥×¥ë¤Î¤ß½èÍý¤Ç¤­¤Þ¤¹" -#: app/sample-editor.c:1153 +#: app/sample-editor.c:1350 msgid "OK" msgstr "λ²ò" -#: app/sample-editor.c:1161 +#: app/sample-editor.c:1358 msgid "Start sampling" msgstr "¥µ¥ó¥×¥ê¥ó¥°³«»Ï" -#: app/sample-editor.c:1196 app/sample-editor.c:1199 +#: app/sample-editor.c:1393 app/sample-editor.c:1396 msgid "Sampling Window" msgstr "¥µ¥ó¥×¥ê¥ó¥°¡¦¥¦¥£¥ó¥É¥¦" -#: app/sample-editor.c:1299 +#: app/sample-editor.c:1496 msgid "" msgstr "<º£¥µ¥ó¥×¥ê¥ó¥°¤·¤Þ¤·¤¿>" -#: app/sample-editor.c:1329 +#: app/sample-editor.c:1526 msgid "Recorded sample is too long for current mixer module. Using it anyway." msgstr "" "Ï¿²»¤·¤¿¥µ¥ó¥×¥ë¤¬¸½ºß¤Î¥ß¥­¥µ¡¦¥â¥¸¥å¡¼¥ë¤Ë¤ÏĹ²á¤®¤Þ¤¹¡£\n" "¤È¤Ë¤«¤¯¤½¤ì¤ò»È¤¤¤Þ¤¹¡£" -#: app/sample-editor.c:1361 +#: app/sample-editor.c:1558 msgid "Normalize" msgstr "µ¬³Ê²½" -#: app/sample-editor.c:1362 +#: app/sample-editor.c:1559 msgid "Execute" msgstr "¼Â¹Ô" -#: app/sample-editor.c:1363 app/tips-dialog.c:165 +#: app/sample-editor.c:1560 app/tips-dialog.c:165 msgid "Close" msgstr "ÊĤ¸¤ë" -#: app/sample-editor.c:1372 app/sample-editor.c:1375 +#: app/sample-editor.c:1569 app/sample-editor.c:1572 msgid "Volume Ramping" msgstr "Volume Ramping" -#: app/sample-editor.c:1392 +#: app/sample-editor.c:1589 msgid "Perform linear volume fade on Selection" msgstr "ÁªÂò»þ¤Ë²»Î̤òÀþ·¿¤Ë¥Õ¥§¡¼¥É¤¹¤ë" -#: app/sample-editor.c:1404 +#: app/sample-editor.c:1601 msgid "Left [%]:" msgstr "º¸ [%]:" -#: app/sample-editor.c:1409 +#: app/sample-editor.c:1606 msgid "Right [%]:" msgstr "±¦ [%]:" diff -urN soundtracker-0.3.8/po/soundtracker.pot soundtracker-0.3.9/po/soundtracker.pot --- soundtracker-0.3.8/po/soundtracker.pot Sun Dec 26 19:38:39 1999 +++ soundtracker-0.3.9/po/soundtracker.pot Wed Jan 12 20:30:11 2000 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-12-26 19:38+0100\n" +"POT-Creation-Date: 2000-01-08 12:24+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -34,47 +34,47 @@ msgid "Audio Configuration" msgstr "" -#: app/drivers/alsa-input.c:125 app/drivers/alsa-output.c:135 +#: app/drivers/alsa-input.c:125 app/drivers/alsa-output.c:134 #, c-format msgid "(%d bytes)" msgstr "" -#: app/drivers/alsa-input.c:128 app/drivers/alsa-output.c:138 +#: app/drivers/alsa-input.c:128 app/drivers/alsa-output.c:137 #: app/drivers/oss-output.c:139 #, c-format msgid "Estimated audio delay: %f microseconds" msgstr "" -#: app/drivers/alsa-input.c:193 app/drivers/alsa-output.c:200 +#: app/drivers/alsa-input.c:193 app/drivers/alsa-output.c:199 #: app/drivers/oss-output.c:188 msgid "These changes won't take effect until you restart playing." msgstr "" -#: app/drivers/alsa-input.c:205 app/drivers/alsa-output.c:212 +#: app/drivers/alsa-input.c:205 app/drivers/alsa-output.c:211 #: app/drivers/oss-output.c:200 msgid "Resolution:" msgstr "" -#: app/drivers/alsa-input.c:215 app/drivers/alsa-output.c:222 +#: app/drivers/alsa-input.c:215 app/drivers/alsa-output.c:221 #: app/drivers/oss-output.c:210 msgid "Channels:" msgstr "" -#: app/drivers/alsa-input.c:225 app/drivers/alsa-output.c:232 +#: app/drivers/alsa-input.c:225 app/drivers/alsa-output.c:231 #: app/drivers/oss-output.c:220 msgid "Frequency [Hz]:" msgstr "" -#: app/drivers/alsa-input.c:235 app/drivers/alsa-output.c:242 +#: app/drivers/alsa-input.c:235 app/drivers/alsa-output.c:241 #: app/drivers/oss-output.c:230 msgid "Buffer Size:" msgstr "" -#: app/drivers/alsa-input.c:268 app/drivers/alsa-output.c:275 +#: app/drivers/alsa-input.c:268 app/drivers/alsa-output.c:274 msgid "ALSA card number:" msgstr "" -#: app/drivers/alsa-input.c:283 app/drivers/alsa-output.c:290 +#: app/drivers/alsa-input.c:283 app/drivers/alsa-output.c:289 msgid "ALSA device number:" msgstr "" @@ -85,16 +85,16 @@ "%s" msgstr "" -#: app/drivers/alsa-input.c:426 app/drivers/alsa-output.c:427 +#: app/drivers/alsa-input.c:426 app/drivers/alsa-output.c:426 #: app/drivers/oss-input.c:221 app/drivers/oss-output.c:390 msgid "Required sound output format not supported.\n" msgstr "" -#: app/drivers/alsa-input.c:439 app/drivers/alsa-output.c:442 +#: app/drivers/alsa-input.c:439 app/drivers/alsa-output.c:441 msgid "Required sound output parameters not supported.\n" msgstr "" -#: app/drivers/alsa-output.c:378 +#: app/drivers/alsa-output.c:377 #, c-format msgid "" "Couldn't open ALSA device for sound output (card:%d, device:%d):\n" @@ -120,7 +120,7 @@ msgid "no settings (yet), sorry!" msgstr "" -#: app/drivers/file-output.c:161 app/sample-editor.c:1313 +#: app/drivers/file-output.c:161 app/sample-editor.c:1337 msgid "Can't open file for writing." msgstr "" @@ -216,7 +216,7 @@ msgid "Render WAV" msgstr "" -#: app/file-operations.c:148 app/sample-editor.c:275 +#: app/file-operations.c:148 app/sample-editor.c:287 msgid "Load Sample" msgstr "" @@ -288,7 +288,7 @@ msgid "Question" msgstr "" -#: app/gui-subs.c:447 app/sample-editor.c:1219 app/sample-editor.c:1365 +#: app/gui-subs.c:447 app/sample-editor.c:1243 app/sample-editor.c:1389 msgid "Cancel" msgstr "" @@ -314,55 +314,55 @@ msgid "Are you sure you want to overwrite the file?" msgstr "" -#: app/gui.c:1113 +#: app/gui.c:1114 msgid "Load XM..." msgstr "" -#: app/gui.c:1115 +#: app/gui.c:1116 msgid "Save XM..." msgstr "" -#: app/gui.c:1118 +#: app/gui.c:1119 msgid "Render module as WAV..." msgstr "" -#: app/gui.c:1170 +#: app/gui.c:1171 msgid "Play Song" msgstr "" -#: app/gui.c:1176 +#: app/gui.c:1177 msgid "Play Pattern" msgstr "" -#: app/gui.c:1182 +#: app/gui.c:1183 msgid "Stop" msgstr "" -#: app/gui.c:1201 +#: app/gui.c:1202 msgid "Number of Channels:" msgstr "" -#: app/gui.c:1217 +#: app/gui.c:1218 msgid "Pattern" msgstr "" -#: app/gui.c:1233 +#: app/gui.c:1234 msgid "PatLength" msgstr "" -#: app/gui.c:1325 +#: app/gui.c:1326 msgid "Octave" msgstr "" -#: app/gui.c:1333 +#: app/gui.c:1334 msgid "Jump" msgstr "" -#: app/gui.c:1341 +#: app/gui.c:1342 msgid "Instr" msgstr "" -#: app/gui.c:1356 +#: app/gui.c:1357 msgid "Sample" msgstr "" @@ -476,51 +476,51 @@ msgid "Various other keys" msgstr "" -#: app/keys.c:433 +#: app/keys.c:437 msgid "Function" msgstr "" -#: app/keys.c:434 +#: app/keys.c:438 msgid "Assignment" msgstr "" -#: app/keys.c:443 app/keys.c:446 +#: app/keys.c:447 app/keys.c:450 msgid "Keyboard Configuration" msgstr "" -#: app/keys.c:491 +#: app/keys.c:495 msgid "Key Group Explanation" msgstr "" -#: app/keys.c:508 +#: app/keys.c:512 msgid "Key Explanation" msgstr "" -#: app/keys.c:539 +#: app/keys.c:543 msgid "Modifiers:" msgstr "" -#: app/keys.c:565 +#: app/keys.c:569 msgid "Learn selected key" msgstr "" -#: app/keys.c:571 +#: app/keys.c:575 msgid "Learn all keys" msgstr "" -#: app/keys.c:577 +#: app/keys.c:581 msgid "" "Please press the desired key combination!\n" "Click into left list to cancel" msgstr "" -#: app/keys.c:641 +#: app/keys.c:645 msgid "" "The keyboard configuration file is defective.\n" "Please use the Keyboard Configuration dialog." msgstr "" -#: app/keys.c:851 +#: app/keys.c:895 msgid "" "Automatic key configuration unsuccessful.\n" "Please use the Keyboard Configuration dialog\n" @@ -1017,100 +1017,104 @@ msgid "SelEnd" msgstr "" -#: app/sample-editor.c:250 -msgid "Reset Sel" +#: app/sample-editor.c:255 +msgid "Sel None" msgstr "" -#: app/sample-editor.c:255 +#: app/sample-editor.c:261 +msgid "Sel All" +msgstr "" + +#: app/sample-editor.c:267 msgid "RelNote" msgstr "" -#: app/sample-editor.c:256 +#: app/sample-editor.c:268 msgid "Length: 0" msgstr "" -#: app/sample-editor.c:269 +#: app/sample-editor.c:281 msgid "Load Sample.." msgstr "" -#: app/sample-editor.c:271 +#: app/sample-editor.c:283 msgid "Save WAV.." msgstr "" -#: app/sample-editor.c:284 +#: app/sample-editor.c:296 msgid "Save WAV" msgstr "" -#: app/sample-editor.c:294 -msgid "Clear" +#: app/sample-editor.c:306 +msgid "Clear Sample" msgstr "" -#: app/sample-editor.c:300 +#: app/sample-editor.c:312 msgid "Monitor" msgstr "" -#: app/sample-editor.c:306 +#: app/sample-editor.c:318 msgid "Volume Ramp" msgstr "" -#: app/sample-editor.c:316 +#: app/sample-editor.c:328 msgid "Zoom to selection" msgstr "" -#: app/sample-editor.c:322 +#: app/sample-editor.c:334 msgid "Show all" msgstr "" -#: app/sample-editor.c:328 +#: app/sample-editor.c:340 msgid "Zoom in (+50%)" msgstr "" -#: app/sample-editor.c:334 +#: app/sample-editor.c:346 msgid "Zoom out (-50%)" msgstr "" -#: app/sample-editor.c:340 +#: app/sample-editor.c:352 msgid "Reverse" msgstr "" -#: app/sample-editor.c:350 +#: app/sample-editor.c:362 msgid "Cut" msgstr "" -#: app/sample-editor.c:356 +#: app/sample-editor.c:368 msgid "Remove" msgstr "" -#: app/sample-editor.c:362 +#: app/sample-editor.c:374 msgid "Copy" msgstr "" -#: app/sample-editor.c:368 +#: app/sample-editor.c:380 msgid "Paste" msgstr "" -#: app/sample-editor.c:374 +#: app/sample-editor.c:386 msgid "Filter" msgstr "" -#: app/sample-editor.c:475 +#: app/sample-editor.c:473 #, c-format msgid "Length: %d" msgstr "" -#: app/sample-editor.c:975 +#: app/sample-editor.c:999 msgid "" msgstr "" -#: app/sample-editor.c:1059 +#: app/sample-editor.c:1083 msgid "Read error." msgstr "" -#: app/sample-editor.c:1175 +#: app/sample-editor.c:1199 msgid "Load stereo sample" msgstr "" -#: app/sample-editor.c:1183 +#: app/sample-editor.c:1207 msgid "" "You have selected a stereo sample!\n" "(SoundTracker can only handle mono samples!)\n" @@ -1118,75 +1122,75 @@ "Please choose which channel to load:" msgstr "" -#: app/sample-editor.c:1194 +#: app/sample-editor.c:1218 msgid "Left" msgstr "" -#: app/sample-editor.c:1200 +#: app/sample-editor.c:1224 msgid "Mix" msgstr "" -#: app/sample-editor.c:1206 +#: app/sample-editor.c:1230 msgid "Right" msgstr "" -#: app/sample-editor.c:1245 +#: app/sample-editor.c:1269 msgid "Can't read sample" msgstr "" -#: app/sample-editor.c:1251 +#: app/sample-editor.c:1275 msgid "Sample is too long for current mixer module. Loading anyway." msgstr "" -#: app/sample-editor.c:1265 +#: app/sample-editor.c:1289 msgid "Can only handle 8 and 16 bit samples with up to 2 channels" msgstr "" -#: app/sample-editor.c:1350 +#: app/sample-editor.c:1374 msgid "OK" msgstr "" -#: app/sample-editor.c:1358 +#: app/sample-editor.c:1382 msgid "Start sampling" msgstr "" -#: app/sample-editor.c:1393 app/sample-editor.c:1396 +#: app/sample-editor.c:1417 app/sample-editor.c:1420 msgid "Sampling Window" msgstr "" -#: app/sample-editor.c:1496 +#: app/sample-editor.c:1520 msgid "" msgstr "" -#: app/sample-editor.c:1526 +#: app/sample-editor.c:1550 msgid "Recorded sample is too long for current mixer module. Using it anyway." msgstr "" -#: app/sample-editor.c:1558 +#: app/sample-editor.c:1582 msgid "Normalize" msgstr "" -#: app/sample-editor.c:1559 +#: app/sample-editor.c:1583 msgid "Execute" msgstr "" -#: app/sample-editor.c:1560 app/tips-dialog.c:165 +#: app/sample-editor.c:1584 app/tips-dialog.c:165 msgid "Close" msgstr "" -#: app/sample-editor.c:1569 app/sample-editor.c:1572 +#: app/sample-editor.c:1593 app/sample-editor.c:1596 msgid "Volume Ramping" msgstr "" -#: app/sample-editor.c:1589 +#: app/sample-editor.c:1613 msgid "Perform linear volume fade on Selection" msgstr "" -#: app/sample-editor.c:1601 +#: app/sample-editor.c:1625 msgid "Left [%]:" msgstr "" -#: app/sample-editor.c:1606 +#: app/sample-editor.c:1630 msgid "Right [%]:" msgstr "" diff -urN soundtracker-0.3.8/soundtracker.spec soundtracker-0.3.9/soundtracker.spec --- soundtracker-0.3.8/soundtracker.spec Sun Dec 26 19:28:33 1999 +++ soundtracker-0.3.9/soundtracker.spec Wed Jan 12 20:39:26 2000 @@ -1,6 +1,6 @@ %define name soundtracker -%define version 0.3.8 -%define release 9 +%define version 0.3.9 +%define release 10 %define prefix /usr Summary: Sound modules editor/player