diff -urN soundtracker-0.5.3/ChangeLog soundtracker-0.5.4/ChangeLog --- soundtracker-0.5.3/ChangeLog Wed Mar 29 20:05:50 2000 +++ soundtracker-0.5.4/ChangeLog Sat Apr 29 17:37:07 2000 @@ -1,3 +1,72 @@ +2000-04-29 Michael Krause + + * Released v0.5.4 + + * Applied patch from Tomasz Maka ("save song" option). + +2000-04-15 Michael Krause + + * app/scope-group.c (scope_group_new): Initialize update frequency + from gui_settings structure. + + * app/track-editor.c (tracker_page_create): Initialize update + frequency from gui_settings structure. + + * app/audio.c (mixer_mix_and_handle_scopes): Clipflag handling + improved; keeps the flag on for a moment before switching it off + again, so that clippings get visible, even if they are short. + + * app/sample-editor.c: Has its own timeout function to display + current mixer position. + + * app/audio.c (mixer_mix_and_handle_scopes): Get mixer_position + dumps at regular, configurable intervals. Defaulting to 50 updates + per second for now. + + * app/file-operations.c (file_selection_dir_button): Check if + something has been selected actually. Fixes occasional segfault + when doing double-clicks in the directory list (reported by + Giles). + +2000-04-09 Michael Krause + + * app/mixers/kb-x86-asm.S: Added non-volramping version of mixer + (gives another 15% speedup). + + * app/module-info.c (modinfo_pack_patterns): Reinitialize playlist + widget after changing the pattern order table. + + * app/main.c (main): Print error message if no output driver is + available and exit. + (sigsegv_handler): Capture segmentation faults and try to rescue + currently edited XM. + + * app/sample-editor.c (sample_editor_monitor_clicked): Return if + no input driver available. + + * app/audioconfig.c (audioconfig_load_config): Works without input + drivers. + + * app/main.c (main): Don't require input drivers. + +2000-04-08 Michael Krause + + * app/xm-player.c (xmplayer_play_note): + (xmplayer_play_note_full): Stop old sample before starting new one + (prevents clicks when playing live on the keyboard). + + * app/mixers/kb-x86.c (kb_x86_setsmplpos): Declick this situation + as well. + +2000-04-01 Luc Tanguay + + * app/midi.c: MIDI input recorded only if track editor visible and + edit mode enabled. + +2000-03-30 Michael Krause + + * app/mixers/kb-x86*: removed unused code. + 2000-03-29 Michael Krause * Released v0.5.3 diff -urN soundtracker-0.5.3/NEWS soundtracker-0.5.4/NEWS --- soundtracker-0.5.3/NEWS Wed Mar 29 20:06:20 2000 +++ soundtracker-0.5.4/NEWS Sat Apr 29 17:37:07 2000 @@ -4,6 +4,14 @@ responsible for having coded a particular feature (full names in AUTHORS file). +What is new in soundtracker-0.5.4 (29-Apr-2000): + +* Much smoother display of sample position and clipping indicators +* Another 15% mixer speedup +* "Save-on-crash" feature +* ST can be used without input driver now +* Bug fixes + What is new in soundtracker-0.5.3 (29-Mar-2000): * The HQ mixer is now click-free diff -urN soundtracker-0.5.3/README soundtracker-0.5.4/README --- soundtracker-0.5.3/README Wed Mar 29 20:05:51 2000 +++ soundtracker-0.5.4/README Sat Apr 29 17:37:08 2000 @@ -4,7 +4,7 @@ http://www.soundtracker.org/ -------------------------------------------------------------- - v0.5.3 --- THIS IS A DEVELOPMENT VERSION! + v0.5.4 --- THIS IS A DEVELOPMENT VERSION! Written and (C) 1998-2000 by Michael Krause [ raw style / lego ] diff -urN soundtracker-0.5.3/TODO soundtracker-0.5.4/TODO --- soundtracker-0.5.3/TODO Wed Mar 29 18:59:04 2000 +++ soundtracker-0.5.4/TODO Sat Apr 29 10:45:49 2000 @@ -1,14 +1,23 @@ things to do and known bugs (in no particular order) ------------------------------------------------------- -remove end-of-note declicking +usecs->msecs! -nach modul optimieren müssen die playlist-widgets neu gesetzt werden! +"disable checks" -create mixers with volramping and without! +patch von tomasz -do filter handling correctly in mixer code... is reso really reset for every filter -or does xm-player set it every time again? +patches von globber + + +bandoi + +cvs server? + +xm's without instruments saved by soundtracker can't be loaded by +mikmod. + +nach dem samplen finetune+relnote so initen, daß das sample auf c-4 original abgespielt wird. bei tab und return aus entry-widgets muß "active widget" im fenster resettet werden. @@ -130,8 +139,6 @@ > - editor should be colourful (customize colors of samples, commands) -MIXER POSITION / CLIPPING INDICATOR: update more often - ENVELOPE-BOX: add a kind of "mixer position" like display ENVELOPE-BOX: make sustain and loop points graphically editable @@ -232,9 +239,6 @@ global filter headphone-balancing... das echt zu hart sonst - -muß declicking das volume-ramping weiterführen? muß stattdessen nicht -der exponentielle abfall kommen? st_mixer_info->data should be a gint16*! rewrite all void* arithmetic.. remove current_word_length diff -urN soundtracker-0.5.3/app/Makefile.in soundtracker-0.5.4/app/Makefile.in --- soundtracker-0.5.3/app/Makefile.in Wed Mar 29 20:08:03 2000 +++ soundtracker-0.5.4/app/Makefile.in Sat Apr 29 17:38:06 2000 @@ -384,7 +384,8 @@ time-buffer.h audio.h driver-out.h module-info.h \ file-operations.h gui-settings.h scope-group.o: scope-group.c ../config.h scope-group.h sample-display.h \ - audio.h mixer.h driver-out.h driver.h time-buffer.h gui-subs.h + audio.h mixer.h driver-out.h driver.h time-buffer.h gui-subs.h \ + gui-settings.h st-subs.o: st-subs.c st-subs.h xm.h mixer.h gui-settings.h time-buffer.o: time-buffer.c time-buffer.h tips-dialog.o: tips-dialog.c ../config.h i18n.h tips-dialog.h \ @@ -392,8 +393,7 @@ track-editor.o: track-editor.c i18n.h ../config.h track-editor.h \ tracker.h xm.h mixer.h tracker-settings.h gui.h st-subs.h \ keys.h audio.h driver-out.h driver.h time-buffer.h main.h \ - gui-settings.h sample-editor.h driver-in.h gui-subs.h \ - preferences.h + gui-settings.h gui-subs.h preferences.h tracker.o: tracker.c tracker.h xm.h mixer.h main.h gui-settings.h tracker-settings.o: tracker-settings.c ../config.h tracker-settings.h \ tracker.h xm.h mixer.h i18n.h gui-subs.h preferences.h diff -urN soundtracker-0.5.3/app/audio.c soundtracker-0.5.4/app/audio.c --- soundtracker-0.5.3/app/audio.c Mon Mar 13 13:44:30 2000 +++ soundtracker-0.5.4/app/audio.c Sat Apr 29 17:17:34 2000 @@ -68,6 +68,13 @@ time_buffer *audio_clipping_indicator_tb; time_buffer *audio_mixer_position_tb; +static guint32 audio_visual_feedback_counter; +static guint32 audio_visual_feedback_clipping; +static guint32 audio_visual_feedback_update_interval = 2000; // just a dummy value + +static const guint audio_visual_feedback_updates_per_second = 50; +static const guint audio_visual_feedback_smear_clipping = 3; // keep clipflag on for how long + /* Internal variables */ static int nice_value = 0; @@ -657,6 +664,8 @@ time_buffer_clear(audio_playerpos_tb); time_buffer_clear(audio_clipping_indicator_tb); time_buffer_clear(audio_mixer_position_tb); + audio_visual_feedback_counter = audio_visual_feedback_update_interval; + audio_visual_feedback_clipping = 0; scopebuf_start.offset = 0; scopebuf_start.time = 0.0; @@ -683,8 +692,6 @@ extern ScopeGroup *scopegroup; audio_clipping_indicator *c; audio_mixer_position *p; - double time = audio_mixer_current_time; - gboolean clipping = FALSE; // See comments in audio.h for Oscilloscope stuff @@ -693,17 +700,42 @@ if(n > count) n = count; + if(n > audio_visual_feedback_counter) { + n = audio_visual_feedback_counter; + } + dest = scopegroup->scopes_on && scopebuf_ready ? mixer->mix(dest, n, scopebufs, scopebuf_end.offset) : mixer->mix(dest, n, NULL, 0); scopebuf_end.offset += n; scopebuf_end.time += (double)n / scopebuf_freq; audio_mixer_current_time += (double)n / scopebuf_freq; count -= n; + audio_visual_feedback_counter -= n; if(scopebuf_end.offset == scopebuf_length) { scopebuf_end.offset = 0; } + if(mixer->getclipflag()) { + audio_visual_feedback_clipping = audio_visual_feedback_smear_clipping; + } + + if(audio_visual_feedback_counter == 0) { + /* Get up-to-date info from mixer about current sample positions */ + audio_visual_feedback_counter = audio_visual_feedback_update_interval; + if((p = g_new(audio_mixer_position, 1))) { + mixer->dumpstatus(p->dump); + time_buffer_add(audio_mixer_position_tb, p, audio_mixer_current_time); + } + if((c = g_new(audio_clipping_indicator, 1))) { + c->clipping = audio_visual_feedback_clipping; + if(audio_visual_feedback_clipping) { + audio_visual_feedback_clipping--; + } + time_buffer_add(audio_clipping_indicator_tb, c, audio_mixer_current_time); + } + } + if(scopebuf_end.time - scopebuf_start.time >= (double)scopebuf_length / scopebuf_freq) { // adjust scopebuf_start int d = scopebuf_end.offset - scopebuf_start.offset; @@ -714,18 +746,6 @@ scopebuf_start.offset %= scopebuf_length; scopebuf_start.time += (double)d / scopebuf_freq; } - - clipping = clipping || mixer->getclipflag(); - } - - if((c = g_new(audio_clipping_indicator, 1))) { - c->clipping = clipping; - time_buffer_add(audio_clipping_indicator_tb, c, (audio_mixer_current_time - time) / 2); - } - - if((p = g_new(audio_mixer_position, 1))) { - mixer->dumpstatus(p->dump); - time_buffer_add(audio_mixer_position_tb, p, (audio_mixer_current_time - time) / 2); } return dest; @@ -846,6 +866,7 @@ void driver_setnumch (int numchannels) { + g_assert(numchannels >= 1 && numchannels <= 32); audio_numchannels = numchannels; mixer->setnumch(numchannels); } @@ -958,6 +979,8 @@ } scopebuf_freq = mixfreq_req = mixfreq; mixer->setmixfreq(mixfreq); + + audio_visual_feedback_update_interval = mixfreq / audio_visual_feedback_updates_per_second; while(count) { // Mix either until the next time is reached when we should call the XM player, diff -urN soundtracker-0.5.3/app/audioconfig.c soundtracker-0.5.4/app/audioconfig.c --- soundtracker-0.5.3/app/audioconfig.c Sun Mar 12 20:22:53 2000 +++ soundtracker-0.5.4/app/audioconfig.c Sun Apr 9 20:18:56 2000 @@ -148,15 +148,16 @@ } gtk_clist_thaw(GTK_CLIST(cw_clist)); - g_assert(active != -1); - // Now update the GUI cw_currentobject = n; if(driverwidget) { gtk_container_remove(GTK_CONTAINER(cw_hbox), driverwidget); driverwidget = NULL; } - gtk_clist_select_row(GTK_CLIST(cw_clist), active, 0); + + if(active != -1) { + gtk_clist_select_row(GTK_CLIST(cw_clist), active, 0); + } } static void @@ -358,22 +359,26 @@ if(!d) { // set default driver if none has been configured - d = *audio_objects[i].driver = drivers[audio_objects[i].type]->data; + if(drivers[audio_objects[i].type] != NULL) { + d = *audio_objects[i].driver = drivers[audio_objects[i].type]->data; + } } - // create driver instance - *audio_objects[i].driver_object = d->new(); - - // load settings - if(d->loadsettings) { - sprintf(buf, "%s/audio-object-%s", prefs_get_prefsdir(), audio_objects[i].shorttitle); - f = fopen(buf, "rb"); - if(f) { - d->loadsettings(*audio_objects[i].driver_object, f); - fclose(f); - } else { - // set default values - // will use module defaults for now + if(d) { + // create driver instance + *audio_objects[i].driver_object = d->new(); + + // load settings + if(d->loadsettings) { + sprintf(buf, "%s/audio-object-%s", prefs_get_prefsdir(), audio_objects[i].shorttitle); + f = fopen(buf, "rb"); + if(f) { + d->loadsettings(*audio_objects[i].driver_object, f); + fclose(f); + } else { + // set default values + // will use module defaults for now + } } } } diff -urN soundtracker-0.5.3/app/file-operations.c soundtracker-0.5.4/app/file-operations.c --- soundtracker-0.5.3/app/file-operations.c Mon Mar 13 13:56:00 2000 +++ soundtracker-0.5.4/app/file-operations.c Sat Apr 29 17:19:09 2000 @@ -84,11 +84,14 @@ static gchar t[256]; gtk_clist_get_text (GTK_CLIST (widget), row, 0, &k); - strncpy(t, k, 255); - t[255] = 0; - gtk_file_selection_set_filename (GTK_FILE_SELECTION(user_data), - t); + if(k != NULL) { + strncpy(t, k, 255); + t[255] = 0; + + gtk_file_selection_set_filename (GTK_FILE_SELECTION(user_data), + t); + } } static void @@ -150,6 +153,7 @@ N_("Load Module"), N_("Save Module"), N_("Render WAV"), + N_("Save Song"), N_("Load Sample"), N_("Save Sample"), N_("Load Instrument"), diff -urN soundtracker-0.5.3/app/file-operations.h soundtracker-0.5.4/app/file-operations.h --- soundtracker-0.5.3/app/file-operations.h Sat Feb 19 11:58:35 2000 +++ soundtracker-0.5.4/app/file-operations.h Sat Apr 29 17:19:09 2000 @@ -32,6 +32,7 @@ DIALOG_LOAD_MOD = 0, DIALOG_SAVE_MOD, DIALOG_SAVE_MOD_AS_WAV, + DIALOG_SAVE_SONG_AS_XM, DIALOG_LOAD_SAMPLE, DIALOG_SAVE_SAMPLE, DIALOG_LOAD_INSTRUMENT, diff -urN soundtracker-0.5.3/app/gui-settings.c soundtracker-0.5.4/app/gui-settings.c --- soundtracker-0.5.3/app/gui-settings.c Sat Mar 25 10:30:03 2000 +++ soundtracker-0.5.4/app/gui-settings.c Sat Apr 29 17:19:09 2000 @@ -65,6 +65,7 @@ "~/", "~/", "~/", + "~/", "rm", "unzip", @@ -421,6 +422,7 @@ prefs_get_string(f, "loadmod-path", gui_settings.loadmod_path); prefs_get_string(f, "savemod-path", gui_settings.savemod_path); prefs_get_string(f, "savemodaswav-path", gui_settings.savemodaswav_path); + prefs_get_string(f, "savesongasxm-path", gui_settings.savesongasxm_path); prefs_get_string(f, "loadsmpl-path", gui_settings.loadsmpl_path); prefs_get_string(f, "savesmpl-path", gui_settings.savesmpl_path); prefs_get_string(f, "loadinstr-path", gui_settings.loadinstr_path); @@ -484,6 +486,7 @@ prefs_put_string(f, "loadmod-path", gui_settings.loadmod_path); prefs_put_string(f, "savemod-path", gui_settings.savemod_path); prefs_put_string(f, "savemodaswav-path", gui_settings.savemodaswav_path); + prefs_put_string(f, "savesongasxm-path", gui_settings.savesongasxm_path); prefs_put_string(f, "loadsmpl-path", gui_settings.loadsmpl_path); prefs_put_string(f, "savesmpl-path", gui_settings.savesmpl_path); prefs_put_string(f, "loadinstr-path", gui_settings.loadinstr_path); diff -urN soundtracker-0.5.3/app/gui-settings.h soundtracker-0.5.4/app/gui-settings.h --- soundtracker-0.5.3/app/gui-settings.h Thu Mar 23 18:27:35 2000 +++ soundtracker-0.5.4/app/gui-settings.h Sat Apr 29 17:19:09 2000 @@ -49,6 +49,7 @@ gchar loadmod_path[128]; gchar savemod_path[128]; gchar savemodaswav_path[128]; + gchar savesongasxm_path[128]; gchar loadsmpl_path[128]; gchar savesmpl_path[128]; gchar loadinstr_path[128]; diff -urN soundtracker-0.5.3/app/gui-subs.c soundtracker-0.5.4/app/gui-subs.c --- soundtracker-0.5.3/app/gui-subs.c Sun Mar 26 13:32:58 2000 +++ soundtracker-0.5.4/app/gui-subs.c Sat Apr 29 17:19:09 2000 @@ -44,6 +44,8 @@ N_("Instrument loaded."), N_("Saving instrument..."), N_("Instrument saved."), + N_("Saving song..."), + N_("Song saved."), }; void diff -urN soundtracker-0.5.3/app/gui-subs.h soundtracker-0.5.4/app/gui-subs.h --- soundtracker-0.5.3/app/gui-subs.h Sun Mar 26 13:29:13 2000 +++ soundtracker-0.5.4/app/gui-subs.h Sat Apr 29 17:19:09 2000 @@ -41,6 +41,8 @@ STATUS_INSTRUMENT_LOADED, STATUS_SAVING_INSTRUMENT, STATUS_INSTRUMENT_SAVED, + STATUS_SAVING_SONG, + STATUS_SONG_SAVED, }; extern guint statusbar_context_id; diff -urN soundtracker-0.5.3/app/gui.c soundtracker-0.5.4/app/gui.c --- soundtracker-0.5.3/app/gui.c Tue Mar 28 16:47:43 2000 +++ soundtracker-0.5.4/app/gui.c Sat Apr 29 17:19:09 2000 @@ -60,6 +60,7 @@ #include "playlist.h" int gui_playing_mode = 0; +int notebook_current_page = NOTEBOOK_PAGE_FILE; GtkWidget *editing_toggle; GtkWidget *gui_curins_name, *gui_cursmpl_name; GtkWidget *mainwindow; @@ -100,7 +101,6 @@ static int editing_pat = 0; static int songpos = 0; static int capture_keys = 1; -static int notebook_current_page; /* gui event handlers */ static void file_selected(GtkWidget *w, GtkFileSelection *fs); @@ -131,7 +131,6 @@ static void offset_current_pattern(int offset); static void offset_current_instrument(int offset); static void offset_current_sample(int offset); -static void programlist_initialize(void); static void gui_mixer_play_pattern (int pattern, @@ -182,12 +181,20 @@ gpointer data) { if(reply == 0) { - XM_Save(xm, (gchar*)data); + XM_Save(xm, (gchar*)data, FALSE); xm->modified = 0; } } static void +gui_save_song_callback (gint reply, + gpointer data) +{ + if(reply == 0) + XM_Save(xm, (gchar*)data, TRUE); +} + +static void gui_save_wav_callback (gint reply, gpointer data) { @@ -238,6 +245,20 @@ } else { gui_save_callback(0, fn); } + } else if(fs == GTK_FILE_SELECTION(fileops_dialogs[DIALOG_SAVE_SONG_AS_XM])) { + FILE *f = fopen(fn, "r"); + + file_selection_save_path(fn, gui_settings.savesongasxm_path); + + if(f != NULL) { + fclose(f); + gnome_app_ok_cancel_modal(GNOME_APP(mainwindow), + _("Are you sure you want to overwrite the file?"), + gui_save_song_callback, + fn); + } else { + gui_save_song_callback(0, fn); + } } else { FILE *f = fopen(fn, "r"); @@ -686,6 +707,7 @@ gui_playing_mode = 0; scope_group_stop_updating(scopegroup); tracker_stop_updating(); + sample_editor_stop_updating(); gui_enable(1); break; @@ -709,6 +731,7 @@ gui_enable(0); scope_group_start_updating(scopegroup); tracker_start_updating(); + sample_editor_start_updating(); break; case AUDIO_BACKPIPE_PLAYING_NOTE_STARTED: @@ -717,6 +740,7 @@ gui_playing_mode = PLAYING_NOTE; scope_group_start_updating(scopegroup); tracker_start_updating(); + sample_editor_start_updating(); } break; @@ -817,7 +841,7 @@ write(audio_ctlpipe, &i, sizeof(i)); tracker_reset(tracker); if(new_xm) { - programlist_initialize(); + gui_playlist_initialize(); editing_pat = -1; gui_set_current_pattern(xm->pattern_order_table[0]); gtk_spin_button_set_value(GTK_SPIN_BUTTON(curins_spin), 1); @@ -1098,8 +1122,8 @@ *widget = thing; } -static void -programlist_initialize (void) +void +gui_playlist_initialize (void) { int i; @@ -1181,6 +1205,8 @@ fileops_dialogs[DIALOG_SAVE_MOD_AS_WAV] = file_selection_create(_("Render module as WAV..."), file_selected); gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_SAVE_MOD_AS_WAV]), gui_settings.savemodaswav_path); #endif + fileops_dialogs[DIALOG_SAVE_SONG_AS_XM] = file_selection_create(_("Save song as XM..."), file_selected); + gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_SAVE_SONG_AS_XM]), gui_settings.savesongasxm_path); mainvbox0 = gtk_vbox_new(FALSE, 0); gtk_container_border_width(GTK_CONTAINER(mainvbox0), 0); diff -urN soundtracker-0.5.3/app/gui.h soundtracker-0.5.4/app/gui.h --- soundtracker-0.5.3/app/gui.h Wed Mar 22 17:06:33 2000 +++ soundtracker-0.5.4/app/gui.h Sun Apr 9 20:41:19 2000 @@ -35,6 +35,19 @@ extern int gui_playing_mode; /* one of the above or 0 */ +/* Notebook page numbers. Should be kept in sync + when pages are added to notebook [See gui_init() in app/gui.c]. */ + +enum { + NOTEBOOK_PAGE_FILE = 0, + NOTEBOOK_PAGE_TRACKER, + NOTEBOOK_PAGE_INSTRUMENT_EDITOR, + NOTEBOOK_PAGE_SAMPLE_EDITOR, + NOTEBOOK_PAGE_MODULE_INFO +}; + +extern int notebook_current_page; /* one of the above */ + #define GUI_ENABLED (gui_playing_mode != PLAYING_SONG && gui_playing_mode != PLAYING_PATTERN) #define GUI_EDITING (GTK_TOGGLE_BUTTON(editing_toggle)->active) @@ -47,6 +60,8 @@ extern void show_editmode_status (void); int gui_init (int argc, char *argv[]); + +void gui_playlist_initialize (void); void gui_play_note (int channel, int note); diff -urN soundtracker-0.5.3/app/main.c soundtracker-0.5.4/app/main.c --- soundtracker-0.5.3/app/main.c Wed Mar 29 18:48:44 2000 +++ soundtracker-0.5.4/app/main.c Sat Apr 29 17:23:43 2000 @@ -24,6 +24,7 @@ #include #include +#include #include "i18n.h" #include "gui.h" @@ -43,6 +44,18 @@ XM *xm = NULL; int pipea[2], pipeb[2]; +static void +sigsegv_handler (int parameter) +{ + signal(SIGSEGV, SIG_DFL); + + if(xm != NULL) { + int retval = XM_Save(xm, "crash-save.xm", FALSE); + printf("*** SIGSEGV caught.\n*** Saved current XM to 'crash-save.xm' in current directory.\n (status %d)\n", retval); + exit(1); + } +} + int main (int argc, char *argv[]) @@ -145,9 +158,12 @@ */ #endif - g_assert(g_list_length(drivers[DRIVER_OUTPUT]) >= 1 - && g_list_length(drivers[DRIVER_INPUT]) >= 1 - && g_list_length(mixers) >= 1); + if(g_list_length(drivers[DRIVER_OUTPUT]) == 0) { + fprintf(stderr, "Sorry, there's no output driver for your OS. Stopping."); + exit(1); + } + + g_assert(g_list_length(mixers) >= 1); gui_settings_load_config(); tips_dialog_load_settings(); @@ -159,6 +175,8 @@ #if defined(DRIVER_ALSA_050) midi_init(); #endif + + signal(SIGSEGV, sigsegv_handler); gtk_main(); diff -urN soundtracker-0.5.3/app/menubar.c soundtracker-0.5.4/app/menubar.c --- soundtracker-0.5.3/app/menubar.c Sun Mar 26 12:09:17 2000 +++ soundtracker-0.5.4/app/menubar.c Sat Apr 29 17:19:09 2000 @@ -48,8 +48,10 @@ #else static GtkItemFactory *item_factory; static GtkAccelGroup *accel_group; +#ifdef ENABLE_NLS static int all_translated; #endif +#endif extern ScopeGroup *scopegroup; @@ -244,6 +246,8 @@ #define SAVE_MOD_AS_WAV_POSITION 3 { GNOME_APP_UI_ITEM, N_("Save Module as _WAV..."), NULL, fileops_open_dialog, (gpointer)DIALOG_SAVE_MOD_AS_WAV, NULL, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_SAVE_AS, 0, 0, NULL }, + { GNOME_APP_UI_ITEM, N_("Save Song as XM..."), NULL, fileops_open_dialog, (gpointer)DIALOG_SAVE_SONG_AS_XM, NULL, + GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_SAVE_AS, 0, 0, NULL }, GNOMEUIINFO_SEPARATOR, @@ -448,6 +452,7 @@ { N_("/File/Save _as..."), "A", fileops_open_dialog, DIALOG_SAVE_MOD }, { N_("/File/-"), NULL, NULL, 0, "" }, { N_("/File/Save Module as _WAV..."), NULL, fileops_open_dialog, DIALOG_SAVE_MOD_AS_WAV }, + { N_("/File/Save Song as XM..."), NULL, fileops_open_dialog, DIALOG_SAVE_SONG_AS_XM }, { N_("/File/-"), NULL, NULL, 0, "" }, { N_("/File/_Quit"), "Q", menubar_quit_requested, 0 }, { N_("/_Module"), NULL, NULL, 0, "" }, @@ -561,7 +566,9 @@ menubar_create (GtkWidget *window, GtkWidget *destbox) { GtkWidget *thing; +#ifdef ENABLE_NLS int i; +#endif accel_group = gtk_accel_group_new (); diff -urN soundtracker-0.5.3/app/midi.c soundtracker-0.5.4/app/midi.c --- soundtracker-0.5.3/app/midi.c Mon Mar 27 12:20:50 2000 +++ soundtracker-0.5.4/app/midi.c Sun Apr 9 20:00:39 2000 @@ -105,7 +105,7 @@ /* Open the sequencer device, in non-block mode. Don't use O_NONBLOCK here, it crashes the application - as for ALSA 0.5.5. (15-mar-2000) */ + as for ALSA 0.5.5. (LT 15-mar-2000) */ rc = snd_seq_open( &midi_handle, SND_SEQ_OPEN_IN); if (rc < 0) { @@ -315,7 +315,12 @@ static void midi_process_program_change( snd_seq_ev_ctrl *pcontrol) { - gui_set_current_instrument(pcontrol->value); + /* In XM, instrument number is from 1 to 127. + 0 is reserved. */ + + if (pcontrol->value > 0) { + gui_set_current_instrument(pcontrol->value); + } if ( 0 ) { g_print( "program change: param %#x, channel %d, value %#x\n", @@ -358,7 +363,9 @@ break; default: - g_print( "control event not processed %#x\n", pcontrol->param); + if ( 0 ) { + g_print( "control event not processed %#x\n", pcontrol->param); + } break; } @@ -405,10 +412,12 @@ return; } - g_print( "note %d velocity %d channel %d, xmnote %d\n", - pnote->note, pnote->velocity, - pnote->channel, - note); + if ( 0 ) { + g_print( "note %d velocity %d channel %d, xmnote %d\n", + pnote->note, pnote->velocity, + pnote->channel, + note); + } /* If necessary, jump to channel */ @@ -420,7 +429,7 @@ tracker_step_cursor_channel( tracker, diff); } - /* Play (and record) the note. */ + /* Play the note. Record it if we're in the track editor. */ if ( pnote->velocity > 0) { int row; @@ -440,7 +449,14 @@ g_warning( "MIDI channel and current channel are not the same..."); } - /* Edit track. */ + /* Edit track if: + 1- we're in the track editor tab, + 2- edit mode is active... + */ + + if ( !GUI_EDITING || notebook_current_page != NOTEBOOK_PAGE_TRACKER) { + return; + } /* Current position in channel. */ diff -urN soundtracker-0.5.3/app/mixers/kb-x86-asm.S soundtracker-0.5.4/app/mixers/kb-x86-asm.S --- soundtracker-0.5.3/app/mixers/kb-x86-asm.S Wed Mar 29 18:24:40 2000 +++ soundtracker-0.5.4/app/mixers/kb-x86-asm.S Sun Apr 9 20:56:01 2000 @@ -27,8 +27,6 @@ .section .data .align 4 -_fadeleft: .long 0 -_faderight: .long 0 _volrl: .long 0 _volrr: .long 0 _voll: .long 0 @@ -60,85 +58,13 @@ pushl %eax - xor %eax,%eax - movl %eax,_fadeleft - movl %eax,_faderight - movl %eax,_volrl - movl %eax,_volrr - - popl %eax - - leave - ret - -.globl kbasm_pre_mixing -kbasm_pre_mixing: - pushl %ebp - movl %esp, %ebp - - pushl %eax - pushl %ebx - pushl %ecx - pushl %edx - pushl %esi - pushl %edi + // nothing happening here right now... - finit - - // range check for declick values - xor %ebx,%ebx - movl _fadeleft,%eax - andl $0x7fffffff,%eax - cmpl minampl,%eax - ja .nocutfl - movl %ebx,_fadeleft -.nocutfl: - movl _faderight,%eax - andl $0x7fffffff,%eax - cmpl minampl,%eax - ja .nocutfr - movl %ebx,_faderight -.nocutfr: - - // clear and declick buffer - movl kb_x86_tempbuf,%edi - movl kb_x86_nsamples,%ecx - call clearbufs - - popl %edi - popl %esi - popl %edx - popl %ecx - popl %ebx popl %eax leave ret - -// clears and declicks tempbuffer (stereo) -clearbufs: - // edi : 32 bit float buffer - // ecx : # of samples - - flds cremoveconst // (fc) - flds _faderight // (fr) (fc) - flds _fadeleft // (fl) (fr) (fc) - -.clloop: - fsts (%edi) - fmul %st(2),%st // (fl') (fr) (fc) - fxch %st(1) // (fr) (fl') (fc) - fsts 4(%edi) - fmul %st(2),%st // (fr') (fl') (fc) - fxch %st(1) // (fl') (fr') (fc) - lea 8(%edi),%edi - decl %ecx - jnz .clloop - fstps _fadeleft // (fr') (fc) - fstps _faderight // (fc) - ret - .globl kbasm_post_mixing kbasm_post_mixing: pushl %ebp @@ -293,90 +219,7 @@ leave ret -.globl kbasm_declick_postproc -kbasm_declick_postproc: - pushl %ebp - movl %esp, %ebp - - pushl %eax - pushl %ebx - pushl %ecx - pushl %edx - pushl %esi - pushl %edi - - finit - - movl 8(%ebp),%esi - - // Get necessary data - movl (%esi),%eax - movl 4(%esi),%ebx - movl %eax,_voll - movl %ebx,_volr - movl 8(%esi),%eax - movl 12(%esi),%ebx - movl %eax,_volrl - movl %ebx,_volrr - movl 32(%esi),%edi // destination float buffer - movl 36(%esi),%ecx // number of samples to mix - - // FPU Stack: - flds (%esi) // (vl) - flds 4(%esi) // (vr) (vl) - flds 40(%esi) // (val) (vr) (vl) - lea 8(%edi),%edi - fxch %st(2) // (vr) (vl) (val) - -.fillSIF: // sample ends -> fill rest of buffer with last sample value - fld %st(1) // (vl) (vr) (vl) (val) - fmul %st(3),%st // (left) (vr) (vl) (val) - fxch %st(1) // (vr) (left) (vl) (val) - fld %st // (vr) (vr) (left) (vl) (val) - fmul %st(4),%st // (right) (vr) (left) (vl) (val) - fxch %st(2) // (left) (vr) (right) (vl) (val) - fadds -8(%edi) // (left) (vr) (right) (vl) (val) - fstps -8(%edi) // (vr) (right) (vl) (val) - fxch %st(1) // (right) (vr) (vl) (val) - fadds -4(%edi) // (right) (vr) (vl) (val) - fstps -4(%edi) // (vr) (vl) (val) - fadds _volrr // (vr') (vl) (val) - fxch %st(1) // (vl) (vr') (val) - lea 8(%edi),%edi - decl %ecx - fadds _volrl // (vl') (vr') (val) - fxch %st(1) // (vr') (vl') (val) - jnz .fillSIF - - // update click-removal fade values - fld %st(2) // (val) (vr) (vl) (val) - fld %st // (val) (val) (vr) (vl) (val) - fmul %st(3),%st // (left) (val) (vr) (vl) (val) - fxch %st(1) // (val) (left) (vr) (vl) (val) - fmul %st(2),%st // (rite) (left) (vr) (vl) (val) - fxch %st(1) // (left) (rite) (vr) (vl) (val) - fadds _fadeleft // (fl') (rite) (vr) (vl) (val) - fxch %st(1) // (rite) (fl') (vr) (vl) (val) - fadds _faderight // (fr') (fl') (vr) (vl) (val) - fxch %st(1) // (fl') (fr') (vr) (vl) (val) - fstps _fadeleft // (fr') (vr) (vl) (val) - fstps _faderight // (vr) (vl) (val) - - fstps 4(%esi) - fstps (%esi) - movl %edi,32(%esi) - - popl %edi - popl %esi - popl %edx - popl %ecx - popl %ebx - popl %eax - - leave - ret - - .MACRO CUBICMIXER SCOPES=0 FILTERED=0 BACKWARDS=0 + .MACRO CUBICMIXER SCOPES=0 FILTERED=0 BACKWARDS=0 VOLRAMP flds _voll !! (vl) flds _volr !! (vr) (vl) movl %eax,%ebp @@ -451,6 +294,7 @@ lea 2(%esp),%esp .AENDI + .AIF \VOLRAMP EQ 1 fld %st(1) !! (vr) (val) (vr) (vl) fld %st(3) !! (vl) (vr) (val) (vr) (vl) fmul %st(2),%st !! (left) (vr) (val) (vr) (vl) @@ -461,18 +305,31 @@ fxch %st(2) !! (vr) (vl') (right) (left) fadds _volrr !! (vr') (vl') (right) (left) fxch %st(3) !! (left) (vl') (right) (vr') - fadds -8(%edi) !! (lfinal) (vl') (vr') + fadds -8(%edi) !! (lfinal) (vl') (right) (vr') fxch %st(2) !! (right) (vl') (lfinal) (vr') fadds -4(%edi) !! (rfinal) (vl') (lfinal) (vr') fstps -4(%edi) !! (vl') (lfinal) (vr') fxch %st(1) !! (lfinal) (vl) (vr) fstps -8(%edi) !! (vl) (vr) fxch %st(1) !! (vr) (vl) + .AELSE + fld %st(2) !! (vl) (val) (vr) (vl) + fmul %st(1),%st !! (left) (val) (vr) (vl) + fadds -8(%edi) !! (lfinal) (val) (vr) (vl) + fxch %st(1) !! (val) (lfinal) (vr) (vl) + fmul %st(2),%st !! (right) (lfinal) (vr) (vl) + fadds -4(%edi) !! (rfinal) (lfinal) (vr) (vl) + fstps -4(%edi) !! (lfinal) (vr) (vl) + fstps -8(%edi) !! (vr) (vl) + .AENDI + decl %ecx jnz cubicmixer\@ + .AIF \VOLRAMP EQ 1 fstps _volr !! (vl) fstps _voll !! - + .AENDI shll $1,%ebp movl %ebp,%eax @@ -483,26 +340,50 @@ ret .ENDM +kbasm_mix_cubic_noscopes_unfiltered_forward_noramp: + CUBICMIXER 0 0 0 0 +kbasm_mix_cubic_noscopes_unfiltered_backward_noramp: + CUBICMIXER 0 0 1 0 +kbasm_mix_cubic_noscopes_filtered_forward_noramp: + CUBICMIXER 0 1 0 0 +kbasm_mix_cubic_noscopes_filtered_backward_noramp: + CUBICMIXER 0 1 1 0 +kbasm_mix_cubic_scopes_unfiltered_forward_noramp: + CUBICMIXER 1 0 0 0 +kbasm_mix_cubic_scopes_unfiltered_backward_noramp: + CUBICMIXER 1 0 1 0 +kbasm_mix_cubic_scopes_filtered_forward_noramp: + CUBICMIXER 1 1 0 0 +kbasm_mix_cubic_scopes_filtered_backward_noramp: + CUBICMIXER 1 1 1 0 kbasm_mix_cubic_noscopes_unfiltered_forward: - CUBICMIXER 0 0 0 + CUBICMIXER 0 0 0 1 kbasm_mix_cubic_noscopes_unfiltered_backward: - CUBICMIXER 0 0 1 + CUBICMIXER 0 0 1 1 kbasm_mix_cubic_noscopes_filtered_forward: - CUBICMIXER 0 1 0 + CUBICMIXER 0 1 0 1 kbasm_mix_cubic_noscopes_filtered_backward: - CUBICMIXER 0 1 1 + CUBICMIXER 0 1 1 1 kbasm_mix_cubic_scopes_unfiltered_forward: - CUBICMIXER 1 0 0 + CUBICMIXER 1 0 0 1 kbasm_mix_cubic_scopes_unfiltered_backward: - CUBICMIXER 1 0 1 + CUBICMIXER 1 0 1 1 kbasm_mix_cubic_scopes_filtered_forward: - CUBICMIXER 1 1 0 + CUBICMIXER 1 1 0 1 kbasm_mix_cubic_scopes_filtered_backward: - CUBICMIXER 1 1 1 + CUBICMIXER 1 1 1 1 .section .data .globl kbasm_mixers kbasm_mixers: + .long kbasm_mix_cubic_noscopes_unfiltered_forward_noramp + .long kbasm_mix_cubic_noscopes_unfiltered_backward_noramp + .long kbasm_mix_cubic_noscopes_filtered_forward_noramp + .long kbasm_mix_cubic_noscopes_filtered_backward_noramp + .long kbasm_mix_cubic_scopes_unfiltered_forward_noramp + .long kbasm_mix_cubic_scopes_unfiltered_backward_noramp + .long kbasm_mix_cubic_scopes_filtered_forward_noramp + .long kbasm_mix_cubic_scopes_filtered_backward_noramp .long kbasm_mix_cubic_noscopes_unfiltered_forward .long kbasm_mix_cubic_noscopes_unfiltered_backward .long kbasm_mix_cubic_noscopes_filtered_forward diff -urN soundtracker-0.5.3/app/mixers/kb-x86-asm.h soundtracker-0.5.4/app/mixers/kb-x86-asm.h --- soundtracker-0.5.3/app/mixers/kb-x86-asm.h Sun Mar 19 16:58:02 2000 +++ soundtracker-0.5.4/app/mixers/kb-x86-asm.h Sun Apr 9 20:54:35 2000 @@ -25,8 +25,6 @@ #include -void kbasm_prepare_mixer (void); -void kbasm_pre_mixing (void); gboolean kbasm_post_mixing (void); // returns "clipped" flag void kbasm_mix_channel (void *channel_data); // 8 @@ -53,14 +51,9 @@ #define KB_X86_MIXER_FLAGS_BACKWARD (1 << 2) #define KB_X86_MIXER_FLAGS_FILTERED (1 << 3) #define KB_X86_MIXER_FLAGS_SCOPES (1 << 4) +#define KB_X86_MIXER_FLAGS_VOLRAMP (1 << 5) void kbasm_mix (kb_x86_mixer_data *data); // 8 - -void kbasm_declick_postproc (kb_x86_mixer_data *data); // 8 - -extern gint32 _nsamples; -extern gint32 _nvoices; -extern gint32 _isstereo; extern guint32 *kb_x86_tempbuf; extern gint16 *kb_x86_outbuf; diff -urN soundtracker-0.5.3/app/mixers/kb-x86.c soundtracker-0.5.4/app/mixers/kb-x86.c --- soundtracker-0.5.3/app/mixers/kb-x86.c Wed Mar 29 20:02:10 2000 +++ soundtracker-0.5.4/app/mixers/kb-x86.c Sun Apr 9 21:00:25 2000 @@ -75,20 +75,19 @@ guint32 freqw; // frequency (whole part of 32.32) guint32 freqf; // frequency (fractional part of 32.32) - float lastl, lastr; // aux variables for "last mixed sample" calculation - float ffreq; // filter frequency (0<=x<=1) float freso; // filter resonance (0<=x<1) float fl1; // filter lp buffer float fb1; // filter bp buffer } kb_x86_channel; -#define KB_X86_FLAG_LOOP_UNIDIRECTIONAL 1 -#define KB_X86_FLAG_LOOP_BIDIRECTIONAL 2 -#define KB_X86_FLAG_SAMPLE_RUNNING 4 -#define KB_X86_FLAG_JUST_STARTED 8 -#define KB_X86_FLAG_UPPER_ACTIVE 16 -#define KB_X86_FLAG_STOP_AFTER_VOLRAMP 32 +#define KB_X86_FLAG_LOOP_UNIDIRECTIONAL 1 +#define KB_X86_FLAG_LOOP_BIDIRECTIONAL 2 +#define KB_X86_FLAG_SAMPLE_RUNNING 4 +#define KB_X86_FLAG_JUST_STARTED 8 +#define KB_X86_FLAG_UPPER_ACTIVE 16 +#define KB_X86_FLAG_STOP_AFTER_VOLRAMP 32 +#define KB_X86_FLAG_DO_SAMPLE_START_DECLICK 64 // The asm code can theoretically handle 256 voices static kb_x86_channel channels[2 * 32]; @@ -214,7 +213,6 @@ int i; memset(channels, 0, sizeof(channels)); - kbasm_prepare_mixer(); clipflag = 0; for(i = 0; i < 256; i++) { @@ -252,8 +250,6 @@ } c->direction = 1; c->ramp_num_samples = 0; - c->lastl = 0.0; - c->lastr = 0.0; c->freso = 0.0; c->ffreq = 1.0; c->fl1 = 0.0; @@ -300,6 +296,11 @@ c->positionw = offset; c->positionf = 0; c->direction = 1; + + if(c->flags & KB_X86_FLAG_JUST_STARTED && offset > 0) { + /* User has used 9xx command - declick sample start */ + c->flags |= KB_X86_FLAG_DO_SAMPLE_START_DECLICK; + } } else { c->flags &= KB_X86_FLAG_UPPER_ACTIVE; } @@ -387,33 +388,6 @@ c->freso = reso; } -static inline void -kb_x86_mix_handle_last_mixed_pre (kb_x86_channel *ch, - kb_x86_mixer_data *md) -{ - ch->lastl = md->mixbuffer[2 * md->numsamples - 2]; - ch->lastr = md->mixbuffer[2 * md->numsamples - 1]; -} - -static inline void -kb_x86_mix_handle_last_mixed_post (kb_x86_channel *ch, - kb_x86_mixer_data *md) -{ - if(md->volleft >= md->volright) { - if(md->volleft != 0.0) { - ch->lastl = ch->lastr = (md->mixbuffer[-2] - ch->lastl) / md->volleft; - } else { - ch->lastl = ch->lastr = 0.0; - } - } else { - if(md->volright != 0.0) { - ch->lastl = ch->lastr = (md->mixbuffer[-1] - ch->lastr) / md->volright; - } else { - ch->lastl = ch->lastr = 0.0; - } - } -} - #if defined(DEBUG_BUFFER) static void kb_x86_debug_dump_buffer (gint16 *buffer, @@ -437,12 +411,10 @@ kb_x86_mixer_data *md, gboolean forward) { - kb_x86_mix_handle_last_mixed_pre(ch, md); if(!forward) { md->flags |= KB_X86_MIXER_FLAGS_BACKWARD; } kbasm_mix(md); - kb_x86_mix_handle_last_mixed_post(ch, md); ch->volleft = md->volleft; ch->volright = md->volright; } @@ -510,6 +482,9 @@ if(md.scopebuf) { md.flags |= KB_X86_MIXER_FLAGS_SCOPES; } + if(volramping) { + md.flags |= KB_X86_MIXER_FLAGS_VOLRAMP; + } if((ch->direction == 1 && pos >= ende - KB_X86_SAMPLE_PADDING) || (ch->direction == -1 && pos < (gint32)(ch->sample->loopstart + KB_X86_SAMPLE_PADDING))) { @@ -591,7 +566,8 @@ If you want to hear this yourself, enable this block by changing #if 0 to if #1 up there, then load some loud hi-hat, cut it in the - middle and play it. Listen to the sample end. + middle and play it. Listen to the sample end. Note: The necessary + code is only in v0.5.3; in v0.5.4 I've removed that completely. */ md.numsamples = num_samples_left; md.lastl = ch->lastl; @@ -742,7 +718,7 @@ } kb_x86_nsamples = count; - kbasm_pre_mixing(); + memset(kb_x86_tempbuf, 0, count * sizeof(float) * 2); for(chnr = 0; chnr < 2 * 32; chnr++) { kb_x86_channel *ch = channels + chnr; @@ -764,7 +740,20 @@ continue; } - ch->flags &= ~KB_X86_FLAG_JUST_STARTED; + if(ch->flags & KB_X86_FLAG_JUST_STARTED) { + if(ch->flags & KB_X86_FLAG_DO_SAMPLE_START_DECLICK) { + ch->ramp_num_samples = RAMP_MAX_DURATION * mixfreq; + if(ch->ramp_num_samples == 0) { + ch->ramp_num_samples = 1; + } + ch->volleft = 0.0; + ch->volright = 0.0; + ch->rampleft = (ch->rampdestleft - ch->volleft) / ch->ramp_num_samples; + ch->rampright = (ch->rampdestright - ch->volright) / ch->ramp_num_samples; + } + + ch->flags &= ~KB_X86_FLAG_JUST_STARTED; + } kb_x86_scopebuf = scopedata; diff -urN soundtracker-0.5.3/app/module-info.c soundtracker-0.5.4/app/module-info.c --- soundtracker-0.5.3/app/module-info.c Sat Feb 19 11:58:33 2000 +++ soundtracker-0.5.4/app/module-info.c Sun Apr 9 20:42:19 2000 @@ -332,6 +332,8 @@ i++; } } + + gui_playlist_initialize(); } // Put patterns in playback order, move unused patterns to the end of the pattern space diff -urN soundtracker-0.5.3/app/sample-editor.c soundtracker-0.5.4/app/sample-editor.c --- soundtracker-0.5.3/app/sample-editor.c Mon Mar 27 14:01:31 2000 +++ soundtracker-0.5.4/app/sample-editor.c Sat Apr 15 18:57:33 2000 @@ -123,6 +123,10 @@ static void *copybuffer = NULL; static int copybufferlen; +// = Realtime stuff + +static int update_freq = 50; +static int gtktimer = -1; static void sample_editor_ok_clicked(void); static void sample_editor_start_sampling_clicked(void); @@ -570,7 +574,7 @@ sample_editor_update(); } -void +static void sample_editor_update_mixer_position (double songtime) { audio_mixer_position *p; @@ -588,6 +592,40 @@ sample_display_set_mixer_position(sampledisplay, -1); } +static gint +sample_editor_update_timeout (gpointer data) +{ + double display_songtime = current_driver->get_play_time(current_driver_object); + + sample_editor_update_mixer_position(display_songtime); + + // Not quite the right place for this, but anyway... + gui_clipping_indicator_update(display_songtime); + + return TRUE; +} + +void +sample_editor_start_updating (void) +{ + if(gtktimer != -1) + return; + + gtktimer = gtk_timeout_add(1000 / update_freq, sample_editor_update_timeout, NULL); +} + +void +sample_editor_stop_updating (void) +{ + if(gtktimer == -1) + return; + + gtk_timeout_remove(gtktimer); + gtktimer = -1; + gui_clipping_indicator_update(-1.0); + sample_editor_update_mixer_position(-1.0); +} + static void sample_editor_spin_volume_changed (GtkSpinButton *spin) { @@ -1435,6 +1473,11 @@ sample_editor_monitor_clicked (void) { GtkWidget *mainbox, *thing; + + if(!sampling_driver || !sampling_driver_object) { + error_error(_("No sampling driver available")); + return; + } if(samplingwindow != NULL) { gdk_window_raise(samplingwindow->window); diff -urN soundtracker-0.5.3/app/sample-editor.h soundtracker-0.5.4/app/sample-editor.h --- soundtracker-0.5.3/app/sample-editor.h Sat Feb 19 11:58:34 2000 +++ soundtracker-0.5.4/app/sample-editor.h Sat Apr 15 18:37:36 2000 @@ -35,10 +35,12 @@ gboolean pressed); void sample_editor_set_sample (STSample *); -void sample_editor_update_mixer_position (double songtime); void sample_editor_update (void); void sample_editor_stop_sampling (void); + +void sample_editor_start_updating (void); +void sample_editor_stop_updating (void); extern st_in_driver *sampling_driver; extern void *sampling_driver_object; diff -urN soundtracker-0.5.3/app/scope-group.c soundtracker-0.5.4/app/scope-group.c --- soundtracker-0.5.3/app/scope-group.c Sat Mar 25 10:40:46 2000 +++ soundtracker-0.5.4/app/scope-group.c Sat Apr 15 19:15:33 2000 @@ -33,6 +33,7 @@ #include "sample-display.h" #include "audio.h" #include "gui-subs.h" +#include "gui-settings.h" static void button_toggled (GtkWidget *widget, @@ -102,14 +103,12 @@ for(i = 0; i < 2; i++) { if(time1 < scopebuf_start.time || time2 < scopebuf_start.time) { // requesting too old samples -- scopebuf_length is too low -// fprintf(stderr, "scope-group.c: requesting too old samples.\n"); goto ende; } if(time1 >= scopebuf_end.time || time2 >= scopebuf_end.time) { /* requesting samples which haven't been even rendered yet. can happen with short driver latencies. */ -// fprintf(stderr, "scope-group.c: requesting too new samples.\n"); time1 -= (double)1 / s->update_freq; time2 -= (double)1 / s->update_freq; } else { @@ -264,17 +263,9 @@ gtk_table_attach_defaults(GTK_TABLE(s->table), s->scopebuttons[0], 0, 1, 0, 1); gtk_table_attach_defaults(GTK_TABLE(s->table), s->scopebuttons[1], 0, 1, 1, 2); - return GTK_WIDGET(s); -} + scope_group_set_update_freq(s, gui_settings.scopes_update_freq); -static void -scope_group_init (ScopeGroup *s) -{ -} - -static void -scope_group_class_init (ScopeGroupClass *class) -{ + return GTK_WIDGET(s); } guint @@ -288,8 +279,8 @@ "ScopeGroup", sizeof(ScopeGroup), sizeof(ScopeGroupClass), - (GtkClassInitFunc) scope_group_class_init, - (GtkObjectInitFunc) scope_group_init, + (GtkClassInitFunc) NULL, + (GtkObjectInitFunc) NULL, (GtkArgSetFunc) NULL, (GtkArgGetFunc) NULL, }; diff -urN soundtracker-0.5.3/app/track-editor.c soundtracker-0.5.4/app/track-editor.c --- soundtracker-0.5.3/app/track-editor.c Sat Mar 25 09:29:00 2000 +++ soundtracker-0.5.4/app/track-editor.c Sat Apr 29 17:11:30 2000 @@ -33,7 +33,6 @@ #include "audio.h" #include "main.h" #include "gui-settings.h" -#include "sample-editor.h" #include "gui-subs.h" #include "preferences.h" #include "tracker-settings.h" @@ -355,6 +354,8 @@ gtk_signal_connect(GTK_OBJECT(thing), "xpanning", GTK_SIGNAL_FUNC(update_hscrollbar), NULL); tracker = TRACKER(thing); + tracker_set_update_freq(gui_settings.tracker_update_freq); + trackersettings = trackersettings_new(); trackersettings_set_tracker_widget(TRACKERSETTINGS(trackersettings), tracker); @@ -1012,7 +1013,7 @@ return TRUE; } -gint +static gint tracker_timeout (gpointer data) { double display_songtime; @@ -1027,10 +1028,6 @@ gui_update_player_pos(p->time, p->songpos, p->patpos); } - // Not quite the right place for this, but anyway... - gui_clipping_indicator_update(display_songtime); - sample_editor_update_mixer_position(display_songtime); - return TRUE; } @@ -1051,8 +1048,6 @@ gtk_timeout_remove(gtktimer); gtktimer = -1; - gui_clipping_indicator_update(-1.0); - sample_editor_update_mixer_position(-1.0); } void diff -urN soundtracker-0.5.3/app/xm-player.c soundtracker-0.5.4/app/xm-player.c --- soundtracker-0.5.3/app/xm-player.c Sun Mar 12 20:37:45 2000 +++ soundtracker-0.5.4/app/xm-player.c Sat Apr 15 17:40:00 2000 @@ -1519,7 +1519,7 @@ channels[channel].chReso = 0; channels[channel].nextpos = -1; - channels[channel].nextstop = 0; + channels[channel].nextstop = 1; xmplayer_final_channel_ops(channel); return TRUE; @@ -1555,8 +1555,6 @@ ch->chDefVol = ch->cursamp->volume; ch->chDefPan = ch->cursamp->panning; - ch->nextstop=1; - ch->nextsamp = ch->cursamp; /* CurNormNote is only relevant in FastTracker mode */ @@ -1588,8 +1586,8 @@ ch->nextsamp = sample; ch->hacksample = 1; + ch->nextstop = 1; ch->nextpos = offset; - ch->nextstop = 0; xmplayer_final_channel_ops(chnr); return TRUE; diff -urN soundtracker-0.5.3/app/xm.c soundtracker-0.5.4/app/xm.c --- soundtracker-0.5.3/app/xm.c Sun Mar 26 13:30:48 2000 +++ soundtracker-0.5.4/app/xm.c Sat Apr 29 17:20:52 2000 @@ -596,7 +596,8 @@ static void xm_save_xm_instrument (STInstrument *instr, - FILE *f) + FILE *f, + gboolean mode) { guint8 h[38]; int num_samples; @@ -606,6 +607,10 @@ memset(h, 0, sizeof(h)); strncpy(h + 4, instr->name, 22); recode_latin1_to_ibmpc(h + 4, 22); + + if(mode==FALSE) + num_samples = 0; + h[27] = num_samples; if(num_samples == 0) { @@ -644,10 +649,10 @@ h[11] = instr->vibsweep; put_le_16(h + 14, instr->volfade); - + fwrite(&h, 1, 38, f); - xm_save_xm_samples(instr->samples, f, num_samples); + if (mode==TRUE) xm_save_xm_samples(instr->samples, f, num_samples); } static void @@ -948,15 +953,19 @@ int XM_Save (XM *xm, - const char *filename) + const char *filename, + gboolean song) { FILE *f; int i; guint8 xh[80]; int num_patterns, num_instruments; - statusbar_update(STATUS_SAVING_MODULE, TRUE); - + if(song==TRUE) + statusbar_update(STATUS_SAVING_SONG, TRUE); + else + statusbar_update(STATUS_SAVING_MODULE, TRUE); + f = fopen(filename, "w"); if(!f) return 0; @@ -987,7 +996,10 @@ xm_save_xm_pattern(&xm->patterns[i], xm->num_channels, f); for(i = 0; i < num_instruments; i++) - xm_save_xm_instrument(&xm->instruments[i], f); + if(song==TRUE) + xm_save_xm_instrument(&xm->instruments[i], f, FALSE); + else + xm_save_xm_instrument(&xm->instruments[i], f, TRUE); if(ferror(f)) { statusbar_update(STATUS_IDLE, FALSE); @@ -995,7 +1007,10 @@ return 0; } - statusbar_update(STATUS_MODULE_SAVED, FALSE); + if(song==TRUE) + statusbar_update(STATUS_SONG_SAVED, FALSE); + else + statusbar_update(STATUS_MODULE_SAVED, FALSE); fclose(f); return 1; } diff -urN soundtracker-0.5.3/app/xm.h soundtracker-0.5.4/app/xm.h --- soundtracker-0.5.3/app/xm.h Mon Mar 27 12:17:03 2000 +++ soundtracker-0.5.4/app/xm.h Sat Apr 29 17:19:09 2000 @@ -31,7 +31,7 @@ #include "mixer.h" -/* -- Pattern definitions -- */ +/* -- XM definitions -- */ #define XM_PATTERN_NOTE_MIN 0 #define XM_PATTERN_NOTE_MAX 95 @@ -130,7 +130,7 @@ XM* File_Load (const char *filename); XM* XM_Load (const char *filename,int *status); -int XM_Save (XM *xm, const char *filename); +int XM_Save (XM *xm, const char *filename, gboolean song); XM* XM_New (void); void XM_Free (XM*); diff -urN soundtracker-0.5.3/configure soundtracker-0.5.4/configure --- soundtracker-0.5.3/configure Wed Mar 29 18:58:15 2000 +++ soundtracker-0.5.4/configure Sat Apr 29 17:37:40 2000 @@ -722,7 +722,7 @@ PACKAGE=soundtracker -VERSION=0.5.3 +VERSION=0.5.4 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; } diff -urN soundtracker-0.5.3/configure.in soundtracker-0.5.4/configure.in --- soundtracker-0.5.3/configure.in Wed Mar 29 18:58:12 2000 +++ soundtracker-0.5.4/configure.in Sat Apr 29 17:37:09 2000 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(app/endian-conv.h) -AM_INIT_AUTOMAKE(soundtracker, 0.5.3) +AM_INIT_AUTOMAKE(soundtracker, 0.5.4) AM_CONFIG_HEADER(config.h) dnl ----------------------------------------------------------------------- diff -urN soundtracker-0.5.3/po/cat-id-tbl.c soundtracker-0.5.4/po/cat-id-tbl.c --- soundtracker-0.5.3/po/cat-id-tbl.c Sat Mar 25 10:20:33 2000 +++ soundtracker-0.5.4/po/cat-id-tbl.c Sat Apr 29 17:20:54 2000 @@ -72,402 +72,409 @@ {"Load Module", 44}, {"Save Module", 45}, {"Render WAV", 46}, - {"Load Sample", 47}, - {"Save Sample", 48}, - {"Load Instrument", 49}, - {"Save Instrument", 50}, - {"File", 51}, - {"Operation not supported.", 52}, - {"Scopes Frequency", 53}, - {"Tracker Frequency", 54}, - {"GUI Configuration", 55}, - {"Use Hexadecimal Numbers", 56}, - {"Use upper case letters for hex numbers", 57}, - {"Advance cursor horizontally in effect columns", 58}, - {"Asynchronous Editing", 59}, - {"Show zeroes", 60}, - {"Channel numbering", 61}, - {"Use anti-aliased envelope editor", 62}, - {"You need to restart SoundTracker for this change to come into effect.", 63}, - {"Scopes buffer size [MB]", 64}, - {"Highlight rows:", 65}, - {"`Save XM' saves all non-empty patterns", 66}, - {"Idle.", 67}, - {"Playing song...", 68}, - {"Playing pattern...", 69}, - {"Loading module...", 70}, - {"Module loaded.", 71}, - {"Saving module...", 72}, - {"Module saved.", 73}, - {"Loading sample...", 74}, - {"Sample loaded.", 75}, - {"Saving sample...", 76}, - {"Sample saved.", 77}, - {"Loading instrument...", 78}, - {"Instrument loaded.", 79}, - {"Saving instrument...", 80}, - {"Instrument saved.", 81}, - {"Question", 82}, - {"Cancel", 83}, - {"Warning", 84}, - {"Error!", 85}, - {"Tempo", 86}, + {"Save Song", 47}, + {"Load Sample", 48}, + {"Save Sample", 49}, + {"Load Instrument", 50}, + {"Save Instrument", 51}, + {"File", 52}, + {"Operation not supported.", 53}, + {"Scopes Frequency", 54}, + {"Tracker Frequency", 55}, + {"GUI Configuration", 56}, + {"Use Hexadecimal Numbers", 57}, + {"Use upper case letters for hex numbers", 58}, + {"Advance cursor horizontally in effect columns", 59}, + {"Asynchronous Editing", 60}, + {"Show zeroes", 61}, + {"Channel numbering", 62}, + {"Use anti-aliased envelope editor", 63}, + {"You need to restart SoundTracker for this change to come into effect.", 64}, + {"Scopes buffer size [MB]", 65}, + {"Highlight rows:", 66}, + {"`Save XM' saves all non-empty patterns", 67}, + {"Idle.", 68}, + {"Playing song...", 69}, + {"Playing pattern...", 70}, + {"Loading module...", 71}, + {"Module loaded.", 72}, + {"Saving module...", 73}, + {"Module saved.", 74}, + {"Loading sample...", 75}, + {"Sample loaded.", 76}, + {"Saving sample...", 77}, + {"Sample saved.", 78}, + {"Loading instrument...", 79}, + {"Instrument loaded.", 80}, + {"Saving instrument...", 81}, + {"Instrument saved.", 82}, + {"Saving song...", 83}, + {"Song saved.", 84}, + {"Question", 85}, + {"Cancel", 86}, + {"Warning", 87}, + {"Error!", 88}, + {"Tempo", 89}, {"\ Are you sure you want to free the current project?\n\ -All changes will be lost!", 87}, - {"Are you sure you want to overwrite the file?", 88}, - {"Load XM...", 89}, - {"Save XM...", 90}, - {"Render module as WAV...", 91}, - {"Play Song", 92}, - {"Play Pattern", 93}, - {"Stop", 94}, - {"Number of Channels:", 95}, - {"Pattern", 96}, - {"PatLength", 97}, - {"Octave", 98}, - {"Jump", 99}, - {"Instr", 100}, - {"Sample", 101}, - {"%M:%S", 102}, - {"VolFade", 103}, - {"VibSpeed", 104}, - {"VibDepth", 105}, - {"VibSweep", 106}, - {"Can't open file.", 107}, - {"Sine", 108}, - {"Square", 109}, - {"Saw Down", 110}, - {"Saw Up", 111}, - {"Instrument Editor", 112}, - {"Volume envelope", 113}, - {"Panning envelope", 114}, - {"Load Instrument...", 115}, - {"Save Instrument...", 116}, - {"Load XI", 117}, - {"Save XI", 118}, - {"Vibrato Type:", 119}, - {"Note:", 120}, - {"Initialize", 121}, - {"The key that inserts the special keyoff note for FastTracker modules.", 122}, - {"Upper Octave Keys...", 123}, +All changes will be lost!", 90}, + {"Are you sure you want to overwrite the file?", 91}, + {"Load XM...", 92}, + {"Save XM...", 93}, + {"Render module as WAV...", 94}, + {"Save song as XM...", 95}, + {"Play Song", 96}, + {"Play Pattern", 97}, + {"Stop", 98}, + {"Number of Channels:", 99}, + {"Pattern", 100}, + {"PatLength", 101}, + {"Octave", 102}, + {"Jump", 103}, + {"Instr", 104}, + {"Sample", 105}, + {"%M:%S", 106}, + {"VolFade", 107}, + {"VibSpeed", 108}, + {"VibDepth", 109}, + {"VibSweep", 110}, + {"Can't open file.", 111}, + {"Sine", 112}, + {"Square", 113}, + {"Saw Down", 114}, + {"Saw Up", 115}, + {"Instrument Editor", 116}, + {"Volume envelope", 117}, + {"Panning envelope", 118}, + {"Load Instrument...", 119}, + {"Save Instrument...", 120}, + {"Load XI", 121}, + {"Save XI", 122}, + {"Vibrato Type:", 123}, + {"Note:", 124}, + {"Initialize", 125}, + {"The key that inserts the special keyoff note for FastTracker modules.", 126}, + {"Upper Octave Keys...", 127}, {"\ 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.", 124}, - {"Lower Octave Keys...", 125}, +in a piano keyboard fashion, including the number keys row above.", 128}, + {"Lower Octave Keys...", 129}, {"\ 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.", 126}, - {"Other Keys...", 127}, - {"Various other keys", 128}, - {"Function", 129}, - {"Assignment", 130}, - {"Keyboard Configuration", 131}, - {"Key Group Explanation", 132}, - {"Key Explanation", 133}, - {"Modifiers:", 134}, - {"Learn selected key", 135}, - {"Learn all keys", 136}, +keys should be ordered in a piano keyboard fashion, including the row above.", 130}, + {"Other Keys...", 131}, + {"Various other keys", 132}, + {"Function", 133}, + {"Assignment", 134}, + {"Keyboard Configuration", 135}, + {"Key Group Explanation", 136}, + {"Key Explanation", 137}, + {"Modifiers:", 138}, + {"Learn selected key", 139}, + {"Learn all keys", 140}, {"\ Please press the desired key combination!\n\ -Click into left list to cancel", 137}, - {"Ok", 138}, - {"Apply", 139}, +Click into left list to cancel", 141}, + {"Ok", 142}, + {"Apply", 143}, {"\ The keyboard configuration file is defective.\n\ -Please use the Keyboard Configuration dialog.", 140}, +Please use the Keyboard Configuration dialog.", 144}, {"\ Automatic key configuration unsuccessful.\n\ Please use the Keyboard Configuration dialog\n\ -in the Settings menu.", 141}, +in the Settings menu.", 145}, {"\ Are you sure you want to do this?\n\ -All changes will be lost!", 142}, +All changes will be lost!", 146}, {"\ Are you sure you want to quit?\n\ -All changes will be lost!", 143}, - {"_Open...", 144}, - {"Save _as...", 145}, - {"Save Module as _WAV...", 146}, - {"_Quit", 147}, - {"Clear _All", 148}, - {"Clear _Patterns Only", 149}, - {"_Optimize Module", 150}, - {"C_ut", 151}, - {"_Copy", 152}, - {"_Paste", 153}, - {"_Insert", 154}, - {"_Delete", 155}, - {"_Mark", 156}, - {"_Jazz Edit Mode", 157}, - {"Transp_osition...", 158}, - {"_Pattern", 159}, - {"_Track", 160}, - {"_Selection", 161}, - {"_Find Unused Pattern", 162}, - {"_Copy Current to Unused Pattern", 163}, - {"C_lear Unused Patterns", 164}, - {"_Pack Patterns", 165}, - {"_Load XI...", 166}, - {"_Save XI...", 167}, - {"_Clear Current", 168}, - {"_Delete Unused Instruments", 169}, - {"Use _Backing Store", 170}, - {"_Previous font", 171}, - {"_Next font", 172}, - {"Display _Oscilloscopes", 173}, - {"_Tracker", 174}, - {"_Keyboard Configuration...", 175}, - {"_Audio Configuration...", 176}, - {"_GUI Configuration...", 177}, - {"_Save Settings now", 178}, - {"Save Settings on _Exit", 179}, - {"_About...", 180}, - {"Show _Tips...", 181}, - {"_XM Effects...", 182}, - {"_File", 183}, - {"_Module", 184}, - {"_Edit", 185}, - {"_Instrument", 186}, - {"_Settings", 187}, - {"_Help", 188}, - {"/_File", 189}, - {"/File/_Open...", 190}, - {"/File/Save _as...", 191}, - {"/File/-", 192}, - {"/File/Save Module as _WAV...", 193}, - {"/File/_Quit", 194}, - {"/_Module", 195}, - {"/Module/Clear _All", 196}, - {"/Module/Clear _Patterns Only", 197}, - {"/Module/_Optimize Module", 198}, - {"/_Edit", 199}, - {"/Edit/_Jazz Edit Mode", 200}, - {"/Edit/-", 201}, - {"/Edit/_Transposition...", 202}, - {"/Edit/_Pattern", 203}, - {"/Edit/Pattern/C_ut", 204}, - {"/Edit/Pattern/_Copy", 205}, - {"/Edit/Pattern/_Paste", 206}, - {"/Edit/_Track", 207}, - {"/Edit/Track/C_ut", 208}, - {"/Edit/Track/_Copy", 209}, - {"/Edit/Track/_Paste", 210}, - {"/Edit/Track/_Insert", 211}, - {"/Edit/Track/_Delete", 212}, - {"/Edit/_Selection", 213}, - {"/Edit/Selection/_Mark", 214}, - {"/Edit/Selection/C_ut", 215}, - {"/Edit/Selection/_Copy", 216}, - {"/Edit/Selection/_Paste", 217}, - {"/_Pattern", 218}, - {"/Pattern/_Find Unused Pattern", 219}, - {"/Pattern/_Copy Current to Unused Pattern", 220}, - {"/Pattern/C_lear Unused Patterns", 221}, - {"/Pattern/_Pack Patterns", 222}, - {"/_Instrument", 223}, - {"/Instrument/_Load XI...", 224}, - {"/Instrument/_Save XI...", 225}, - {"/Instrument/-", 226}, - {"/Instrument/_Clear Current", 227}, - {"/Instrument/_Delete Unused Instruments", 228}, - {"/_Settings", 229}, - {"/Settings/Display _Oscilloscopes", 230}, - {"/Settings/_Tracker", 231}, - {"/Settings/Tracker/Use _Backing Store", 232}, - {"/Settings/Tracker/_Previous font", 233}, - {"/Settings/Tracker/_Next font", 234}, - {"/Settings/-", 235}, - {"/Settings/_Keyboard Configuration...", 236}, - {"/Settings/_Audio Configuration...", 237}, - {"/Settings/_GUI Configuration...", 238}, - {"/Settings/_Save Settings now", 239}, - {"/Settings/Save Settings on _Exit", 240}, - {"/_Help", 241}, - {"/Help/_About...", 242}, - {"/Help/-", 243}, - {"/Help/Show _Tips...", 244}, - {"/Help/_XM Effects...", 245}, - {"Instrument Name", 246}, - {"#smpl", 247}, - {"Sample Name", 248}, - {"Linear", 249}, - {"Amiga", 250}, - {"Module Info", 251}, - {"Songname:", 252}, - {"Frequencies:", 253}, - {"ProTracker Mode", 254}, - {"Song length", 255}, - {"Current pos", 256}, - {"Restart pos", 257}, +All changes will be lost!", 147}, + {"_Open...", 148}, + {"Save _as...", 149}, + {"Save Module as _WAV...", 150}, + {"Save Song as XM...", 151}, + {"_Quit", 152}, + {"Clear _All", 153}, + {"Clear _Patterns Only", 154}, + {"_Optimize Module", 155}, + {"C_ut", 156}, + {"_Copy", 157}, + {"_Paste", 158}, + {"_Insert", 159}, + {"_Delete", 160}, + {"_Mark", 161}, + {"_Jazz Edit Mode", 162}, + {"Transp_osition...", 163}, + {"_Pattern", 164}, + {"_Track", 165}, + {"_Selection", 166}, + {"_Find Unused Pattern", 167}, + {"_Copy Current to Unused Pattern", 168}, + {"C_lear Unused Patterns", 169}, + {"_Pack Patterns", 170}, + {"_Load XI...", 171}, + {"_Save XI...", 172}, + {"_Clear Current", 173}, + {"_Delete Unused Instruments", 174}, + {"Use _Backing Store", 175}, + {"_Previous font", 176}, + {"_Next font", 177}, + {"Display _Oscilloscopes", 178}, + {"_Tracker", 179}, + {"_Keyboard Configuration...", 180}, + {"_Audio Configuration...", 181}, + {"_GUI Configuration...", 182}, + {"_Save Settings now", 183}, + {"Save Settings on _Exit", 184}, + {"_About...", 185}, + {"Show _Tips...", 186}, + {"_XM Effects...", 187}, + {"_File", 188}, + {"_Module", 189}, + {"_Edit", 190}, + {"_Instrument", 191}, + {"_Settings", 192}, + {"_Help", 193}, + {"/_File", 194}, + {"/File/_Open...", 195}, + {"/File/Save _as...", 196}, + {"/File/-", 197}, + {"/File/Save Module as _WAV...", 198}, + {"/File/Save Song as XM...", 199}, + {"/File/_Quit", 200}, + {"/_Module", 201}, + {"/Module/Clear _All", 202}, + {"/Module/Clear _Patterns Only", 203}, + {"/Module/_Optimize Module", 204}, + {"/_Edit", 205}, + {"/Edit/_Jazz Edit Mode", 206}, + {"/Edit/-", 207}, + {"/Edit/_Transposition...", 208}, + {"/Edit/_Pattern", 209}, + {"/Edit/Pattern/C_ut", 210}, + {"/Edit/Pattern/_Copy", 211}, + {"/Edit/Pattern/_Paste", 212}, + {"/Edit/_Track", 213}, + {"/Edit/Track/C_ut", 214}, + {"/Edit/Track/_Copy", 215}, + {"/Edit/Track/_Paste", 216}, + {"/Edit/Track/_Insert", 217}, + {"/Edit/Track/_Delete", 218}, + {"/Edit/_Selection", 219}, + {"/Edit/Selection/_Mark", 220}, + {"/Edit/Selection/C_ut", 221}, + {"/Edit/Selection/_Copy", 222}, + {"/Edit/Selection/_Paste", 223}, + {"/_Pattern", 224}, + {"/Pattern/_Find Unused Pattern", 225}, + {"/Pattern/_Copy Current to Unused Pattern", 226}, + {"/Pattern/C_lear Unused Patterns", 227}, + {"/Pattern/_Pack Patterns", 228}, + {"/_Instrument", 229}, + {"/Instrument/_Load XI...", 230}, + {"/Instrument/_Save XI...", 231}, + {"/Instrument/-", 232}, + {"/Instrument/_Clear Current", 233}, + {"/Instrument/_Delete Unused Instruments", 234}, + {"/_Settings", 235}, + {"/Settings/Display _Oscilloscopes", 236}, + {"/Settings/_Tracker", 237}, + {"/Settings/Tracker/Use _Backing Store", 238}, + {"/Settings/Tracker/_Previous font", 239}, + {"/Settings/Tracker/_Next font", 240}, + {"/Settings/-", 241}, + {"/Settings/_Keyboard Configuration...", 242}, + {"/Settings/_Audio Configuration...", 243}, + {"/Settings/_GUI Configuration...", 244}, + {"/Settings/_Save Settings now", 245}, + {"/Settings/Save Settings on _Exit", 246}, + {"/_Help", 247}, + {"/Help/_About...", 248}, + {"/Help/-", 249}, + {"/Help/Show _Tips...", 250}, + {"/Help/_XM Effects...", 251}, + {"Instrument Name", 252}, + {"#smpl", 253}, + {"Sample Name", 254}, + {"Linear", 255}, + {"Amiga", 256}, + {"Module Info", 257}, + {"Songname:", 258}, + {"Frequencies:", 259}, + {"ProTracker Mode", 260}, + {"Song length", 261}, + {"Current pos", 262}, + {"Restart pos", 263}, {"\ A directory called '.soundtracker' has been created in your\n\ -home directory to store configuration files.\n", 258}, - {"No loop", 259}, - {"PingPong", 260}, - {"8 bits", 261}, - {"16 bits", 262}, - {"Sample Editor", 263}, - {"Volume", 264}, - {"Panning", 265}, - {"Finetune", 266}, - {"Selection:", 267}, - {"None", 268}, - {"All", 269}, - {"Length:", 270}, - {"RelNote", 271}, - {"Load Sample...", 272}, - {"Save WAV...", 273}, - {"Save region as WAV...", 274}, - {"Save WAV", 275}, - {"Save Region", 276}, - {"Monitor", 277}, - {"Volume Ramp", 278}, - {"Zoom to selection", 279}, - {"Show all", 280}, - {"Zoom in (+50%)", 281}, - {"Zoom out (-50%)", 282}, - {"Reverse", 283}, - {"Cut", 284}, - {"Remove", 285}, - {"Copy", 286}, - {"Paste", 287}, - {"Clear Sample", 288}, - {"(no selection)", 289}, - {"", 290}, - {"Read error.", 291}, - {"Load stereo sample", 292}, +home directory to store configuration files.\n", 264}, + {"No loop", 265}, + {"PingPong", 266}, + {"8 bits", 267}, + {"16 bits", 268}, + {"Sample Editor", 269}, + {"Volume", 270}, + {"Panning", 271}, + {"Finetune", 272}, + {"Selection:", 273}, + {"None", 274}, + {"All", 275}, + {"Length:", 276}, + {"RelNote", 277}, + {"Load Sample...", 278}, + {"Save WAV...", 279}, + {"Save region as WAV...", 280}, + {"Save WAV", 281}, + {"Save Region", 282}, + {"Monitor", 283}, + {"Volume Ramp", 284}, + {"Zoom to selection", 285}, + {"Show all", 286}, + {"Zoom in (+50%)", 287}, + {"Zoom out (-50%)", 288}, + {"Reverse", 289}, + {"Cut", 290}, + {"Remove", 291}, + {"Copy", 292}, + {"Paste", 293}, + {"Clear Sample", 294}, + {"(no selection)", 295}, + {"", 296}, + {"Read error.", 297}, + {"Load stereo sample", 298}, {"\ You have selected a stereo sample!\n\ (SoundTracker can only handle mono samples!)\n\ \n\ -Please choose which channel to load:", 293}, - {"Left", 294}, - {"Mix", 295}, - {"Right", 296}, - {"Can't read sample", 297}, - {"Sample is too long for current mixer module. Loading anyway.", 298}, - {"Can only handle 8 and 16 bit samples with up to 2 channels", 299}, - {"Nothing to save.", 300}, - {"OK", 301}, - {"Start sampling", 302}, - {"Sampling Window", 303}, - {"", 304}, - {"Recorded sample is too long for current mixer module. Using it anyway.", 305}, - {"Normalize", 306}, - {"Execute", 307}, - {"Volume Ramping", 308}, - {"Perform linear volume fade on Selection", 309}, - {"Left [%]:", 310}, - {"Right [%]:", 311}, - {"SoundTracker Tip of the day", 312}, - {"Previous Tip", 313}, - {"Next Tip", 314}, - {"Show tip next time", 315}, +Please choose which channel to load:", 299}, + {"Left", 300}, + {"Mix", 301}, + {"Right", 302}, + {"Can't read sample", 303}, + {"Sample is too long for current mixer module. Loading anyway.", 304}, + {"Can only handle 8 and 16 bit samples with up to 2 channels", 305}, + {"Nothing to save.", 306}, + {"OK", 307}, + {"Start sampling", 308}, + {"No sampling driver available", 309}, + {"Sampling Window", 310}, + {"", 311}, + {"Recorded sample is too long for current mixer module. Using it anyway.", 312}, + {"Normalize", 313}, + {"Execute", 314}, + {"Volume Ramping", 315}, + {"Perform linear volume fade on Selection", 316}, + {"Left [%]:", 317}, + {"Right [%]:", 318}, + {"SoundTracker Tip of the day", 319}, + {"Previous Tip", 320}, + {"Next Tip", 321}, + {"Show tip next time", 322}, {"\ 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.", 316}, +some XM or MOD files first and play with them.", 323}, {"\ 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.", 317}, +the Audio Configuration.", 324}, {"\ You can adjust the loop points in the sample editor by holding Shift\n\ -and using the left and right mousebuttons.\n", 318}, +and using the left and right mousebuttons.\n", 325}, {"\ If you want to know more about tracking, and how the various commands\n\ -work, have a look at http://www.united-trackers.org/", 319}, +work, have a look at http://www.united-trackers.org/", 326}, {"\ 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.", 320}, - {"Arpeggio", 321}, - {"Porta up", 322}, - {"Porta down", 323}, - {"Tone porta", 324}, - {"Vibrato", 325}, - {"Tone porta + Volume slide", 326}, - {"Vibrato + Volume slide", 327}, - {"Tremolo", 328}, - {"Set panning", 329}, - {"Position jump", 330}, - {"Set volume", 331}, - {"Pattern break", 332}, - {"Set tempo/bpm", 333}, - {"Set global volume", 334}, - {"Global volume slide", 335}, - {"Key off", 336}, - {"Set envelop position", 337}, - {"Panning slide", 338}, - {"LP filter resonance", 339}, - {"Multi retrig note", 340}, - {"Tremor", 341}, - {"LP filter cutoff", 342}, - {"Fine porta up", 343}, - {"Fine porta down", 344}, - {"Set gliss control", 345}, - {"Set vibrato control", 346}, - {"Set finetune", 347}, - {"Set loop begin/loop", 348}, - {"Set tremolo control", 349}, - {"Retrig note", 350}, - {"Fine volume slide up", 351}, - {"Fine volume slide down", 352}, - {"Note cut", 353}, - {"Note delay", 354}, - {"Pattern delay", 355}, - {"Volume slide down", 356}, - {"Volume slide up", 357}, - {"Set vibrato speed", 358}, - {"Panning slide left", 359}, - {"Panning slide right", 360}, - {"sine", 361}, - {"ramp down", 362}, - {"square", 363}, - {"Jazz Edit:", 364}, - {"Tracker", 365}, - {"Font list", 366}, - {"Add font", 367}, - {"Delete font", 368}, - {"Apply font", 369}, - {"Up", 370}, - {"Down", 371}, - {"Select font...", 372}, - {"Whole Song", 373}, - {"All Patterns", 374}, - {"Current Pattern", 375}, - {"Current Track", 376}, - {"Current Instrument", 377}, - {"All Instruments", 378}, - {"Half note up", 379}, - {"Half note down", 380}, - {"Octave up", 381}, - {"Octave down", 382}, - {"Exchange 1 <-> 2", 383}, - {"Change 1 -> 2", 384}, - {"Transposition Tools", 385}, - {"Scope of the operation:", 386}, - {"Note Transposition", 387}, - {"Instrument Changing", 388}, - {"Instrument 1:", 389}, - {"Current instrument", 390}, - {"Instrument 2:", 391}, - {"Pattern length out of range: %d.\n", 392}, - {"Invalid vibtype %d, using Sine.\n", 393}, - {"File is no XI instrument.", 394}, - {"Unknown XI version 0x%x\n", 395}, - {"Error while loading patterns.", 396}, - {"Can't open file", 397}, - {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 398}, - {"Error while loading instruments.", 399}, +instrument editor page.", 327}, + {"Arpeggio", 328}, + {"Porta up", 329}, + {"Porta down", 330}, + {"Tone porta", 331}, + {"Vibrato", 332}, + {"Tone porta + Volume slide", 333}, + {"Vibrato + Volume slide", 334}, + {"Tremolo", 335}, + {"Set panning", 336}, + {"Position jump", 337}, + {"Set volume", 338}, + {"Pattern break", 339}, + {"Set tempo/bpm", 340}, + {"Set global volume", 341}, + {"Global volume slide", 342}, + {"Key off", 343}, + {"Set envelop position", 344}, + {"Panning slide", 345}, + {"LP filter resonance", 346}, + {"Multi retrig note", 347}, + {"Tremor", 348}, + {"LP filter cutoff", 349}, + {"Fine porta up", 350}, + {"Fine porta down", 351}, + {"Set gliss control", 352}, + {"Set vibrato control", 353}, + {"Set finetune", 354}, + {"Set loop begin/loop", 355}, + {"Set tremolo control", 356}, + {"Retrig note", 357}, + {"Fine volume slide up", 358}, + {"Fine volume slide down", 359}, + {"Note cut", 360}, + {"Note delay", 361}, + {"Pattern delay", 362}, + {"Volume slide down", 363}, + {"Volume slide up", 364}, + {"Set vibrato speed", 365}, + {"Panning slide left", 366}, + {"Panning slide right", 367}, + {"sine", 368}, + {"ramp down", 369}, + {"square", 370}, + {"Jazz Edit:", 371}, + {"Tracker", 372}, + {"Font list", 373}, + {"Add font", 374}, + {"Delete font", 375}, + {"Apply font", 376}, + {"Up", 377}, + {"Down", 378}, + {"Select font...", 379}, + {"Whole Song", 380}, + {"All Patterns", 381}, + {"Current Pattern", 382}, + {"Current Track", 383}, + {"Current Instrument", 384}, + {"All Instruments", 385}, + {"Half note up", 386}, + {"Half note down", 387}, + {"Octave up", 388}, + {"Octave down", 389}, + {"Exchange 1 <-> 2", 390}, + {"Change 1 -> 2", 391}, + {"Transposition Tools", 392}, + {"Scope of the operation:", 393}, + {"Note Transposition", 394}, + {"Instrument Changing", 395}, + {"Instrument 1:", 396}, + {"Current instrument", 397}, + {"Instrument 2:", 398}, + {"Pattern length out of range: %d.\n", 399}, + {"Invalid vibtype %d, using Sine.\n", 400}, + {"File is no XI instrument.", 401}, + {"Unknown XI version 0x%x\n", 402}, + {"Error while loading patterns.", 403}, + {"Can't open file", 404}, + {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 405}, + {"Error while loading instruments.", 406}, {"\ Module contains sample(s) that are too long for the current mixer.\n\ -Maximum sample length is %d.", 400}, - {"No FastTracker XM and no supported MOD format!", 401}, +Maximum sample length is %d.", 407}, + {"No FastTracker XM and no supported MOD format!", 408}, }; -int _msg_tbl_length = 401; +int _msg_tbl_length = 408; Binary files soundtracker-0.5.3/po/de.gmo and soundtracker-0.5.4/po/de.gmo differ diff -urN soundtracker-0.5.3/po/de.po soundtracker-0.5.4/po/de.po --- soundtracker-0.5.3/po/de.po Wed Mar 29 20:07:58 2000 +++ soundtracker-0.5.4/po/de.po Sat Apr 29 17:37:58 2000 @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: soundtracker-0.3.3\n" -"POT-Creation-Date: 2000-03-29 18:49+0200\n" +"POT-Creation-Date: 2000-04-29 17:37+0200\n" "PO-Revision-Date: 1999-09-21 23:00+02:00\n" "Last-Translator: Colin Marquardt \n" "Language-Team: German \n" @@ -25,35 +25,35 @@ msgid "Sampling" msgstr "Samplen" -#: app/audioconfig.c:222 +#: app/audioconfig.c:223 msgid "Driver Module" msgstr "Treibermodul" -#: app/audioconfig.c:223 +#: app/audioconfig.c:224 #, fuzzy msgid "Mixer Module" msgstr "Treibermodul" -#: app/audioconfig.c:224 +#: app/audioconfig.c:225 #, fuzzy msgid "Description" msgstr "Frage" -#: app/audioconfig.c:232 app/audioconfig.c:235 +#: app/audioconfig.c:233 app/audioconfig.c:236 msgid "Audio Configuration" msgstr "Audio-Konfiguration" -#: app/audioconfig.c:250 +#: app/audioconfig.c:251 #, fuzzy msgid "Drivers" msgstr "Treibermodul" -#: app/audioconfig.c:287 +#: app/audioconfig.c:288 #, fuzzy msgid "Mixers" msgstr "Modifizierer:" -#: app/audioconfig.c:320 app/gui-settings.c:377 app/sample-editor.c:1612 +#: app/audioconfig.c:321 app/gui-settings.c:378 app/sample-editor.c:1655 #: app/tips-dialog.c:165 app/transposition.c:313 msgid "Close" msgstr "Schließen" @@ -150,7 +150,7 @@ msgid "no settings (yet), sorry!" msgstr "Keine Einstellungen (zur Zeit), sorry!" -#: app/drivers/file-output.c:161 app/sample-editor.c:1315 +#: app/drivers/file-output.c:161 app/sample-editor.c:1353 msgid "Can't open file for writing." msgstr "Kann Datei nicht zum Schreiben öffnen." @@ -227,111 +227,116 @@ msgid "Loop" msgstr "Loop" -#: app/envelope-box.c:1000 app/sample-editor.c:224 +#: app/envelope-box.c:1000 app/sample-editor.c:228 msgid "Start" msgstr "Anfang" -#: app/envelope-box.c:1001 app/sample-editor.c:225 +#: app/envelope-box.c:1001 app/sample-editor.c:229 msgid "End" msgstr "Ende" -#: app/file-operations.c:150 +#: app/file-operations.c:153 #, fuzzy msgid "Load Module" msgstr "_Modul" -#: app/file-operations.c:151 +#: app/file-operations.c:154 #, fuzzy msgid "Save Module" msgstr "Treibermodul" -#: app/file-operations.c:152 +#: app/file-operations.c:155 msgid "Render WAV" msgstr "" -#: app/file-operations.c:153 app/sample-editor.c:324 +#: app/file-operations.c:156 +#, fuzzy +msgid "Save Song" +msgstr "Spiele Song" + +#: app/file-operations.c:157 app/sample-editor.c:328 msgid "Load Sample" msgstr "Lade Sample" -#: app/file-operations.c:154 +#: app/file-operations.c:158 #, fuzzy msgid "Save Sample" msgstr "Lade Sample" -#: app/file-operations.c:155 +#: app/file-operations.c:159 #, fuzzy msgid "Load Instrument" msgstr "Lade Instrument..." -#: app/file-operations.c:156 +#: app/file-operations.c:160 #, fuzzy msgid "Save Instrument" msgstr "Speichere Instrument..." -#: app/file-operations.c:162 +#: app/file-operations.c:166 #, fuzzy msgid "File" msgstr "_Datei" -#: app/file-operations.c:213 +#: app/file-operations.c:217 msgid "Operation not supported." msgstr "" -#: app/gui-settings.c:83 +#: app/gui-settings.c:84 msgid "Scopes Frequency" msgstr "Scope-Frequenz" -#: app/gui-settings.c:86 +#: app/gui-settings.c:87 msgid "Tracker Frequency" msgstr "Tracker-Frequenz" -#: app/gui-settings.c:211 app/gui-settings.c:214 +#: app/gui-settings.c:212 app/gui-settings.c:215 msgid "GUI Configuration" msgstr "GUI-Konfiguration" -#: app/gui-settings.c:248 +#: app/gui-settings.c:249 msgid "Use Hexadecimal Numbers" msgstr "Verwende hexadezimale Zahlen" -#: app/gui-settings.c:255 +#: app/gui-settings.c:256 msgid "Use upper case letters for hex numbers" msgstr "" -#: app/gui-settings.c:262 +#: app/gui-settings.c:263 #, fuzzy msgid "Advance cursor horizontally in effect columns" msgstr "Lasse Cursor in FX-Spalten mitlaufen" -#: app/gui-settings.c:269 +#: app/gui-settings.c:270 msgid "Asynchronous Editing" msgstr "" -#: app/gui-settings.c:276 +#: app/gui-settings.c:277 msgid "Show zeroes" msgstr "" -#: app/gui-settings.c:283 +#: app/gui-settings.c:284 msgid "Channel numbering" msgstr "" -#: app/gui-settings.c:290 +#: app/gui-settings.c:291 msgid "Use anti-aliased envelope editor" msgstr "Verwende Antialiasing im Hüllkurven-Editor" -#: app/gui-settings.c:296 +#: app/gui-settings.c:297 msgid "You need to restart SoundTracker for this change to come into effect." msgstr "" "Sie müssen SoundTracker neustarten, damit diese Änderungen wirksam werden." -#: app/gui-settings.c:305 +#: app/gui-settings.c:306 msgid "Scopes buffer size [MB]" msgstr "Puffergröße der Scopes [MB]" -#: app/gui-settings.c:324 +#: app/gui-settings.c:325 msgid "Highlight rows:" msgstr "" -#: app/gui-settings.c:342 +#: app/gui-settings.c:343 msgid "`Save XM' saves all non-empty patterns" msgstr "`Speichere XM' speichert alle nicht-leeren Pattern" @@ -409,28 +414,38 @@ msgid "Instrument saved." msgstr "Instrumentenname" -#: app/gui-subs.c:463 +#: app/gui-subs.c:47 +#, fuzzy +msgid "Saving song..." +msgstr "Spiele Song" + +#: app/gui-subs.c:48 +#, fuzzy +msgid "Song saved." +msgstr "_Modul" + +#: app/gui-subs.c:465 msgid "Question" msgstr "Frage" -#: app/gui-subs.c:480 app/keys.c:702 app/sample-editor.c:1226 -#: app/sample-editor.c:1417 +#: app/gui-subs.c:482 app/keys.c:702 app/sample-editor.c:1264 +#: app/sample-editor.c:1455 msgid "Cancel" msgstr "Abbrechen" -#: app/gui-subs.c:498 +#: app/gui-subs.c:500 msgid "Warning" msgstr "Warnung" -#: app/gui-subs.c:524 +#: app/gui-subs.c:526 msgid "Error!" msgstr "Fehler!" -#: app/gui.c:87 +#: app/gui.c:88 msgid "Tempo" msgstr "Tempo" -#: app/gui.c:221 +#: app/gui.c:228 msgid "" "Are you sure you want to free the current project?\n" "All changes will be lost!" @@ -438,63 +453,68 @@ "Sind Sie sicher, daß Sie das aktuelle Projekt schließen wollen?\n" "Alle Änderungen gehen verloren!" -#: app/gui.c:235 app/gui.c:249 +#: app/gui.c:242 app/gui.c:256 app/gui.c:270 msgid "Are you sure you want to overwrite the file?" msgstr "Sind sie sicher, daß Sie die Datei überschreiben wollen?" -#: app/gui.c:1176 +#: app/gui.c:1200 msgid "Load XM..." msgstr "Lade XM..." -#: app/gui.c:1178 +#: app/gui.c:1202 msgid "Save XM..." msgstr "Speichere XM..." -#: app/gui.c:1181 +#: app/gui.c:1205 msgid "Render module as WAV..." msgstr "" -#: app/gui.c:1233 +#: app/gui.c:1208 +#, fuzzy +msgid "Save song as XM..." +msgstr "Speichere WAV..." + +#: app/gui.c:1259 msgid "Play Song" msgstr "Spiele Song" -#: app/gui.c:1239 +#: app/gui.c:1265 msgid "Play Pattern" msgstr "Spiele Pattern" -#: app/gui.c:1245 +#: app/gui.c:1271 msgid "Stop" msgstr "Stop" -#: app/gui.c:1264 +#: app/gui.c:1290 msgid "Number of Channels:" msgstr "Anzahl der Kanäle:" -#: app/gui.c:1280 app/playlist.c:294 +#: app/gui.c:1306 app/playlist.c:294 msgid "Pattern" msgstr "Pattern" -#: app/gui.c:1296 +#: app/gui.c:1322 msgid "PatLength" msgstr "PatLänge" -#: app/gui.c:1388 +#: app/gui.c:1414 msgid "Octave" msgstr "Oktave" -#: app/gui.c:1396 +#: app/gui.c:1422 msgid "Jump" msgstr "Springe" -#: app/gui.c:1404 +#: app/gui.c:1430 msgid "Instr" msgstr "Instr" -#: app/gui.c:1419 +#: app/gui.c:1445 msgid "Sample" msgstr "Sample" -#: app/gui.c:1482 +#: app/gui.c:1508 msgid "%M:%S" msgstr "" @@ -661,7 +681,7 @@ "Bitte drücken Sie die gewünschte Tastenkombination!\n" "Klicken Sie in die linke Liste, um abzubrechen" -#: app/keys.c:682 app/menubar.c:95 +#: app/keys.c:682 app/menubar.c:97 msgid "Ok" msgstr "OK" @@ -687,7 +707,7 @@ "Bitte verwenden Sie den Dialog für die Tastatur-Konfiguration\n" "im Menü Einstellungen." -#: app/menubar.c:131 +#: app/menubar.c:133 msgid "" "Are you sure you want to do this?\n" "All changes will be lost!" @@ -695,7 +715,7 @@ "Sind Sie sicher, daß Sie das tun wollen?\n" "Alle Änderungen gehen verloren!" -#: app/menubar.c:153 +#: app/menubar.c:155 msgid "" "Are you sure you want to quit?\n" "All changes will be lost!" @@ -703,446 +723,456 @@ "Sind Sie sicher, daß Sie das Programm beenden wollen?\n" "Alle Änderungen gehen verloren!" -#: app/menubar.c:237 +#: app/menubar.c:239 #, fuzzy msgid "_Open..." msgstr "Ö_ffnen..." -#: app/menubar.c:239 +#: app/menubar.c:241 #, fuzzy msgid "Save _as..." msgstr "Speichern _unter..." -#: app/menubar.c:245 +#: app/menubar.c:247 #, fuzzy msgid "Save Module as _WAV..." msgstr "Speichere WAV..." -#: app/menubar.c:250 +#: app/menubar.c:249 +#, fuzzy +msgid "Save Song as XM..." +msgstr "Speichere WAV..." + +#: app/menubar.c:254 msgid "_Quit" msgstr "_Beenden" -#: app/menubar.c:257 +#: app/menubar.c:261 msgid "Clear _All" msgstr "_Alles löschen" -#: app/menubar.c:259 +#: app/menubar.c:263 msgid "Clear _Patterns Only" msgstr "Nur _Pattern löschen" -#: app/menubar.c:261 +#: app/menubar.c:265 msgid "_Optimize Module" msgstr "Modul _optimieren" -#: app/menubar.c:268 app/menubar.c:279 app/menubar.c:297 +#: app/menubar.c:272 app/menubar.c:283 app/menubar.c:301 msgid "C_ut" msgstr "_Ausschneiden" -#: app/menubar.c:270 app/menubar.c:281 app/menubar.c:299 +#: app/menubar.c:274 app/menubar.c:285 app/menubar.c:303 msgid "_Copy" msgstr "_Kopieren" -#: app/menubar.c:272 app/menubar.c:283 app/menubar.c:301 +#: app/menubar.c:276 app/menubar.c:287 app/menubar.c:305 msgid "_Paste" msgstr "E_infügen" -#: app/menubar.c:285 +#: app/menubar.c:289 #, fuzzy msgid "_Insert" msgstr "Einfügen" -#: app/menubar.c:287 +#: app/menubar.c:291 #, fuzzy msgid "_Delete" msgstr "Löschen" -#: app/menubar.c:295 +#: app/menubar.c:299 msgid "_Mark" msgstr "_Markieren" -#: app/menubar.c:308 +#: app/menubar.c:312 msgid "_Jazz Edit Mode" msgstr "_Jazz-Edit-Modus" -#: app/menubar.c:313 +#: app/menubar.c:317 #, fuzzy msgid "Transp_osition..." msgstr "_Transposition..." -#: app/menubar.c:318 app/menubar.c:413 +#: app/menubar.c:322 app/menubar.c:417 msgid "_Pattern" msgstr "_Pattern" -#: app/menubar.c:319 +#: app/menubar.c:323 msgid "_Track" msgstr "_Track" -#: app/menubar.c:320 +#: app/menubar.c:324 msgid "_Selection" msgstr "_Auswahl" -#: app/menubar.c:326 +#: app/menubar.c:330 msgid "_Find Unused Pattern" msgstr "_Finde unbenutztes Pattern" -#: app/menubar.c:328 +#: app/menubar.c:332 msgid "_Copy Current to Unused Pattern" msgstr "_Kopiere aktuelles zu unbenutztem Pattern" -#: app/menubar.c:330 +#: app/menubar.c:334 msgid "C_lear Unused Patterns" msgstr "_Lösche unbenutzte Pattern" -#: app/menubar.c:332 +#: app/menubar.c:336 msgid "_Pack Patterns" msgstr "_Packe Pattern" -#: app/menubar.c:339 +#: app/menubar.c:343 #, fuzzy msgid "_Load XI..." msgstr "_Lade XI..." -#: app/menubar.c:341 +#: app/menubar.c:345 #, fuzzy msgid "_Save XI..." msgstr "Speichere XM..." -#: app/menubar.c:346 +#: app/menubar.c:350 #, fuzzy msgid "_Clear Current" msgstr "Aktuell" -#: app/menubar.c:351 +#: app/menubar.c:355 msgid "_Delete Unused Instruments" msgstr "Lösche unbenutzte _Instrumente" -#: app/menubar.c:358 +#: app/menubar.c:362 msgid "Use _Backing Store" msgstr "Verwende _Backing Store" -#: app/menubar.c:361 +#: app/menubar.c:365 #, fuzzy msgid "_Previous font" msgstr "Vorheriger Tip" -#: app/menubar.c:363 +#: app/menubar.c:367 msgid "_Next font" msgstr "" -#: app/menubar.c:371 +#: app/menubar.c:375 msgid "Display _Oscilloscopes" msgstr "Zeige _Oszilloskope" -#: app/menubar.c:374 +#: app/menubar.c:378 #, fuzzy msgid "_Tracker" msgstr "_Track" -#: app/menubar.c:378 +#: app/menubar.c:382 #, fuzzy msgid "_Keyboard Configuration..." msgstr "_Tastatur-Konfiguration..." -#: app/menubar.c:380 +#: app/menubar.c:384 #, fuzzy msgid "_Audio Configuration..." msgstr "_Audio-Konfiguration..." -#: app/menubar.c:382 +#: app/menubar.c:386 #, fuzzy msgid "_GUI Configuration..." msgstr "_GUI-Konfiguration..." -#: app/menubar.c:387 +#: app/menubar.c:391 msgid "_Save Settings now" msgstr "_Speichere Einstellungen jetzt" -#: app/menubar.c:389 +#: app/menubar.c:393 msgid "Save Settings on _Exit" msgstr "Speichere Einstellungen beim _Verlassen" -#: app/menubar.c:396 +#: app/menubar.c:400 #, fuzzy msgid "_About..." msgstr "Ü_ber..." -#: app/menubar.c:401 +#: app/menubar.c:405 #, fuzzy msgid "Show _Tips..." msgstr "Zeige _Tips..." -#: app/menubar.c:403 +#: app/menubar.c:407 #, fuzzy msgid "_XM Effects..." msgstr "_XM-Effekte..." -#: app/menubar.c:410 +#: app/menubar.c:414 msgid "_File" msgstr "_Datei" -#: app/menubar.c:411 +#: app/menubar.c:415 msgid "_Module" msgstr "_Modul" -#: app/menubar.c:412 +#: app/menubar.c:416 msgid "_Edit" msgstr "_Bearbeiten" -#: app/menubar.c:414 +#: app/menubar.c:418 msgid "_Instrument" msgstr "_Instrument" -#: app/menubar.c:415 +#: app/menubar.c:419 msgid "_Settings" msgstr "_Einstellungen" -#: app/menubar.c:416 +#: app/menubar.c:420 msgid "_Help" msgstr "_Hilfe" -#: app/menubar.c:446 +#: app/menubar.c:450 msgid "/_File" msgstr "/_Datei" -#: app/menubar.c:447 +#: app/menubar.c:451 #, fuzzy msgid "/File/_Open..." msgstr "/Datei/Ö_ffnen..." -#: app/menubar.c:448 +#: app/menubar.c:452 #, fuzzy msgid "/File/Save _as..." msgstr "/Datei/Speichern _unter..." -#: app/menubar.c:449 app/menubar.c:451 +#: app/menubar.c:453 app/menubar.c:456 msgid "/File/-" msgstr "/Datei/-" -#: app/menubar.c:450 +#: app/menubar.c:454 #, fuzzy msgid "/File/Save Module as _WAV..." msgstr "/Datei/Speichern _unter..." -#: app/menubar.c:452 +#: app/menubar.c:455 +#, fuzzy +msgid "/File/Save Song as XM..." +msgstr "/Datei/Speichern _unter..." + +#: app/menubar.c:457 msgid "/File/_Quit" msgstr "/Datei/_Beenden" -#: app/menubar.c:453 +#: app/menubar.c:458 msgid "/_Module" msgstr "/_Modul" -#: app/menubar.c:454 +#: app/menubar.c:459 msgid "/Module/Clear _All" msgstr "/Modul/Lösche _alle" -#: app/menubar.c:455 +#: app/menubar.c:460 msgid "/Module/Clear _Patterns Only" msgstr "/Modul/Lösche nur _Pattern" -#: app/menubar.c:456 +#: app/menubar.c:461 msgid "/Module/_Optimize Module" msgstr "/Modul/_Optimiere Modul" -#: app/menubar.c:457 +#: app/menubar.c:462 msgid "/_Edit" msgstr "/_Bearbeiten" -#: app/menubar.c:458 +#: app/menubar.c:463 msgid "/Edit/_Jazz Edit Mode" msgstr "/Bearbeiten/_Jazz-Edit-Mode" -#: app/menubar.c:459 app/menubar.c:461 +#: app/menubar.c:464 app/menubar.c:466 msgid "/Edit/-" msgstr "/Bearbeiten/-" -#: app/menubar.c:460 +#: app/menubar.c:465 #, fuzzy msgid "/Edit/_Transposition..." msgstr "/Bearbeiten/_Transposition..." -#: app/menubar.c:462 +#: app/menubar.c:467 msgid "/Edit/_Pattern" msgstr "/Bearbeiten/_Pattern" -#: app/menubar.c:463 +#: app/menubar.c:468 msgid "/Edit/Pattern/C_ut" msgstr "/Bearbeiten/Pattern/_Ausschneiden" -#: app/menubar.c:464 +#: app/menubar.c:469 msgid "/Edit/Pattern/_Copy" msgstr "/Bearbeiten/Pattern/_Kopieren" -#: app/menubar.c:465 +#: app/menubar.c:470 msgid "/Edit/Pattern/_Paste" msgstr "/Bearbeiten/Pattern/E_infügen" -#: app/menubar.c:466 +#: app/menubar.c:471 msgid "/Edit/_Track" msgstr "/Bearbeiten/_Track" -#: app/menubar.c:467 +#: app/menubar.c:472 msgid "/Edit/Track/C_ut" msgstr "/Bearbeiten/Track/_Ausschneiden" -#: app/menubar.c:468 +#: app/menubar.c:473 msgid "/Edit/Track/_Copy" msgstr "/Bearbeiten/Track/_Kopieren" -#: app/menubar.c:469 +#: app/menubar.c:474 msgid "/Edit/Track/_Paste" msgstr "/Bearbeiten/Track/E_infügen" -#: app/menubar.c:470 +#: app/menubar.c:475 #, fuzzy msgid "/Edit/Track/_Insert" msgstr "/Bearbeiten/Track/E_infügen" -#: app/menubar.c:471 +#: app/menubar.c:476 #, fuzzy msgid "/Edit/Track/_Delete" msgstr "/Bearbeiten/Track/E_infügen" -#: app/menubar.c:472 +#: app/menubar.c:477 msgid "/Edit/_Selection" msgstr "/Bearbeiten/_Auswahl" -#: app/menubar.c:473 +#: app/menubar.c:478 msgid "/Edit/Selection/_Mark" msgstr "/Bearbeiten/Auswahl/_Markieren" -#: app/menubar.c:474 +#: app/menubar.c:479 msgid "/Edit/Selection/C_ut" msgstr "/Bearbeiten/Auswahl/_Ausschneiden" -#: app/menubar.c:475 +#: app/menubar.c:480 msgid "/Edit/Selection/_Copy" msgstr "/Bearbeiten/Auswahl/_Kopieren" -#: app/menubar.c:476 +#: app/menubar.c:481 msgid "/Edit/Selection/_Paste" msgstr "/Bearbeiten/Auswahl/E_infügen" -#: app/menubar.c:477 +#: app/menubar.c:482 msgid "/_Pattern" msgstr "/_Pattern" -#: app/menubar.c:478 +#: app/menubar.c:483 msgid "/Pattern/_Find Unused Pattern" msgstr "/Pattern/_Finde unbenutztes Pattern" -#: app/menubar.c:479 +#: app/menubar.c:484 msgid "/Pattern/_Copy Current to Unused Pattern" msgstr "/Pattern/_Kopiere aktuelles zu unbenutztem Pattern" -#: app/menubar.c:480 +#: app/menubar.c:485 msgid "/Pattern/C_lear Unused Patterns" msgstr "/Pattern/_Lösche unbenutzte Pattern" -#: app/menubar.c:481 +#: app/menubar.c:486 msgid "/Pattern/_Pack Patterns" msgstr "/Pattern/_Packe Pattern" -#: app/menubar.c:482 +#: app/menubar.c:487 msgid "/_Instrument" msgstr "/_Instrument" -#: app/menubar.c:483 +#: app/menubar.c:488 #, fuzzy msgid "/Instrument/_Load XI..." msgstr "/Instrument/_Lade XI..." -#: app/menubar.c:484 +#: app/menubar.c:489 #, fuzzy msgid "/Instrument/_Save XI..." msgstr "/Instrument/_Lade XI..." -#: app/menubar.c:485 app/menubar.c:487 +#: app/menubar.c:490 app/menubar.c:492 msgid "/Instrument/-" msgstr "/Instrument/-" -#: app/menubar.c:486 +#: app/menubar.c:491 #, fuzzy msgid "/Instrument/_Clear Current" msgstr "/Instrument/_Lösche unbenutzte Instrumente" -#: app/menubar.c:488 +#: app/menubar.c:493 msgid "/Instrument/_Delete Unused Instruments" msgstr "/Instrument/_Lösche unbenutzte Instrumente" -#: app/menubar.c:489 +#: app/menubar.c:494 msgid "/_Settings" msgstr "/_Einstellungen" -#: app/menubar.c:490 +#: app/menubar.c:495 msgid "/Settings/Display _Oscilloscopes" msgstr "/Einstellungen/Zeige _Oszilloskope" -#: app/menubar.c:491 +#: app/menubar.c:496 #, fuzzy msgid "/Settings/_Tracker" msgstr "/Einstellungen/-" -#: app/menubar.c:492 +#: app/menubar.c:497 #, fuzzy msgid "/Settings/Tracker/Use _Backing Store" msgstr "/Einstellungen/Verwende _Backing Store" -#: app/menubar.c:493 +#: app/menubar.c:498 #, fuzzy msgid "/Settings/Tracker/_Previous font" msgstr "/Einstellungen/Speichere Einstellungen beim Verlassen" -#: app/menubar.c:494 +#: app/menubar.c:499 #, fuzzy msgid "/Settings/Tracker/_Next font" msgstr "/Einstellungen/Speichere Einstellungen beim Verlassen" -#: app/menubar.c:495 app/menubar.c:499 +#: app/menubar.c:500 app/menubar.c:504 msgid "/Settings/-" msgstr "/Einstellungen/-" -#: app/menubar.c:496 +#: app/menubar.c:501 #, fuzzy msgid "/Settings/_Keyboard Configuration..." msgstr "/Einstellungen/_Tastatur-Konfiguration..." -#: app/menubar.c:497 +#: app/menubar.c:502 #, fuzzy msgid "/Settings/_Audio Configuration..." msgstr "/Einstellungen/_Audio-Konfiguration..." -#: app/menubar.c:498 +#: app/menubar.c:503 #, fuzzy msgid "/Settings/_GUI Configuration..." msgstr "/Einstellungen/_GUI-Konfiguration..." -#: app/menubar.c:500 +#: app/menubar.c:505 msgid "/Settings/_Save Settings now" msgstr "/Einstellungen/_Speichere Einstellungen jetzt" -#: app/menubar.c:501 +#: app/menubar.c:506 msgid "/Settings/Save Settings on _Exit" msgstr "/Einstellungen/Speichere Einstellungen beim _Verlassen" -#: app/menubar.c:502 +#: app/menubar.c:507 msgid "/_Help" msgstr "/_Hilfe" -#: app/menubar.c:503 +#: app/menubar.c:508 #, fuzzy msgid "/Help/_About..." msgstr "/Hilfe/Ü_ber..." -#: app/menubar.c:504 +#: app/menubar.c:509 msgid "/Help/-" msgstr "/Hilfe/-" -#: app/menubar.c:505 +#: app/menubar.c:510 #, fuzzy msgid "/Help/Show _Tips..." msgstr "/Hilfe/Zeige _Tips..." -#: app/menubar.c:506 +#: app/menubar.c:511 #, fuzzy msgid "/Help/_XM Effects..." msgstr "/Hilfe/_XM-Effekte..." @@ -1163,7 +1193,7 @@ msgid "Linear" msgstr "Linear" -#: app/module-info.c:118 app/sample-editor.c:184 +#: app/module-info.c:118 app/sample-editor.c:188 msgid "Amiga" msgstr "Amiga" @@ -1203,153 +1233,153 @@ "Ein Verzeichnis namens '.soundtracker' wurde in Ihrem Home-Verzeichnis \n" "angelegt, um Konfigurationsdateien darin zu speichern.\n" -#: app/sample-editor.c:183 +#: app/sample-editor.c:187 msgid "No loop" msgstr "Keine Loop" -#: app/sample-editor.c:185 +#: app/sample-editor.c:189 msgid "PingPong" msgstr "PingPong" -#: app/sample-editor.c:189 +#: app/sample-editor.c:193 msgid "8 bits" msgstr "8 Bits" -#: app/sample-editor.c:190 +#: app/sample-editor.c:194 msgid "16 bits" msgstr "16 Bits" -#: app/sample-editor.c:196 +#: app/sample-editor.c:200 msgid "Sample Editor" msgstr "Sample-Editor" -#: app/sample-editor.c:236 +#: app/sample-editor.c:240 msgid "Volume" msgstr "Lautstärke" -#: app/sample-editor.c:237 +#: app/sample-editor.c:241 msgid "Panning" msgstr "Balance" -#: app/sample-editor.c:238 +#: app/sample-editor.c:242 msgid "Finetune" msgstr "Feineinstellung" -#: app/sample-editor.c:258 +#: app/sample-editor.c:262 #, fuzzy msgid "Selection:" msgstr "_Auswahl" -#: app/sample-editor.c:262 app/track-editor.c:168 app/track-editor.c:178 +#: app/sample-editor.c:266 app/track-editor.c:167 app/track-editor.c:177 #, fuzzy msgid "None" msgstr "Note:" -#: app/sample-editor.c:268 +#: app/sample-editor.c:272 msgid "All" msgstr "" -#: app/sample-editor.c:289 +#: app/sample-editor.c:293 #, fuzzy msgid "Length:" msgstr "Länge" -#: app/sample-editor.c:305 +#: app/sample-editor.c:309 msgid "RelNote" msgstr "RelNote" -#: app/sample-editor.c:316 +#: app/sample-editor.c:320 #, fuzzy msgid "Load Sample..." msgstr "Lade Sample..." -#: app/sample-editor.c:318 +#: app/sample-editor.c:322 #, fuzzy msgid "Save WAV..." msgstr "Speichere WAV..." -#: app/sample-editor.c:320 +#: app/sample-editor.c:324 #, fuzzy msgid "Save region as WAV..." msgstr "Speichere WAV..." -#: app/sample-editor.c:333 +#: app/sample-editor.c:337 msgid "Save WAV" msgstr "Speichere WAV" -#: app/sample-editor.c:343 +#: app/sample-editor.c:347 msgid "Save Region" msgstr "" -#: app/sample-editor.c:354 +#: app/sample-editor.c:358 msgid "Monitor" msgstr "Monitor" -#: app/sample-editor.c:360 +#: app/sample-editor.c:364 msgid "Volume Ramp" msgstr "Lautstärke" -#: app/sample-editor.c:370 +#: app/sample-editor.c:374 msgid "Zoom to selection" msgstr "Zoom in Auswahl" -#: app/sample-editor.c:376 +#: app/sample-editor.c:380 msgid "Show all" msgstr "Zeige alles" -#: app/sample-editor.c:382 +#: app/sample-editor.c:386 msgid "Zoom in (+50%)" msgstr "Zoom in (+50%)" -#: app/sample-editor.c:388 +#: app/sample-editor.c:392 msgid "Zoom out (-50%)" msgstr "Zoom out (-50%)" -#: app/sample-editor.c:394 +#: app/sample-editor.c:398 #, fuzzy msgid "Reverse" msgstr "Entfernen" -#: app/sample-editor.c:404 +#: app/sample-editor.c:408 msgid "Cut" msgstr "Ausschneiden" -#: app/sample-editor.c:410 +#: app/sample-editor.c:414 msgid "Remove" msgstr "Entfernen" -#: app/sample-editor.c:416 +#: app/sample-editor.c:420 msgid "Copy" msgstr "Kopieren" -#: app/sample-editor.c:422 +#: app/sample-editor.c:426 msgid "Paste" msgstr "Einfügen" -#: app/sample-editor.c:428 +#: app/sample-editor.c:432 #, fuzzy msgid "Clear Sample" msgstr "Lade Sample" -#: app/sample-editor.c:466 +#: app/sample-editor.c:470 #, fuzzy msgid "(no selection)" msgstr "Zoom in Auswahl" -#: app/sample-editor.c:998 +#: app/sample-editor.c:1036 msgid "" msgstr "" -#: app/sample-editor.c:1074 +#: app/sample-editor.c:1112 msgid "Read error." msgstr "Lesefehler." -#: app/sample-editor.c:1182 +#: app/sample-editor.c:1220 #, fuzzy msgid "Load stereo sample" msgstr "Lade Sample" -#: app/sample-editor.c:1190 +#: app/sample-editor.c:1228 msgid "" "You have selected a stereo sample!\n" "(SoundTracker can only handle mono samples!)\n" @@ -1357,80 +1387,84 @@ "Please choose which channel to load:" msgstr "" -#: app/sample-editor.c:1201 +#: app/sample-editor.c:1239 #, fuzzy msgid "Left" msgstr "Links [%]:" -#: app/sample-editor.c:1207 +#: app/sample-editor.c:1245 msgid "Mix" msgstr "" -#: app/sample-editor.c:1213 +#: app/sample-editor.c:1251 #, fuzzy msgid "Right" msgstr "Rechts [%]:" -#: app/sample-editor.c:1252 +#: app/sample-editor.c:1290 msgid "Can't read sample" msgstr "Kann Sample nicht lesen" -#: app/sample-editor.c:1258 +#: app/sample-editor.c:1296 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:1272 +#: app/sample-editor.c:1310 #, 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:1375 +#: app/sample-editor.c:1413 msgid "Nothing to save." msgstr "" -#: app/sample-editor.c:1402 +#: app/sample-editor.c:1440 msgid "OK" msgstr "OK" -#: app/sample-editor.c:1410 +#: app/sample-editor.c:1448 msgid "Start sampling" msgstr "Starte Sampling" -#: app/sample-editor.c:1445 app/sample-editor.c:1448 +#: app/sample-editor.c:1478 +msgid "No sampling driver available" +msgstr "" + +#: app/sample-editor.c:1488 app/sample-editor.c:1491 msgid "Sampling Window" msgstr "Sampling-Fenster" -#: app/sample-editor.c:1548 +#: app/sample-editor.c:1591 msgid "" msgstr "" -#: app/sample-editor.c:1578 +#: app/sample-editor.c:1621 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:1610 +#: app/sample-editor.c:1653 msgid "Normalize" msgstr "Normalisieren" -#: app/sample-editor.c:1611 +#: app/sample-editor.c:1654 msgid "Execute" msgstr "Ausführen" -#: app/sample-editor.c:1621 app/sample-editor.c:1624 +#: app/sample-editor.c:1664 app/sample-editor.c:1667 msgid "Volume Ramping" msgstr "Lautstärke-Anpassung" -#: app/sample-editor.c:1641 +#: app/sample-editor.c:1684 msgid "Perform linear volume fade on Selection" msgstr "Lineare Lautstärkenverringerung auf Markierung" -#: app/sample-editor.c:1653 +#: app/sample-editor.c:1696 msgid "Left [%]:" msgstr "Links [%]:" -#: app/sample-editor.c:1658 +#: app/sample-editor.c:1701 msgid "Right [%]:" msgstr "Rechts [%]:" @@ -1502,96 +1536,96 @@ "das Sample aktivieren und dann auf die Tastatur im Instrumenten-Editor " "klicken." -#: app/track-editor.c:83 +#: app/track-editor.c:82 msgid "Arpeggio" msgstr "" #. 0 -#: app/track-editor.c:84 +#: app/track-editor.c:83 msgid "Porta up" msgstr "" #. 1 -#: app/track-editor.c:85 +#: app/track-editor.c:84 #, fuzzy msgid "Porta down" msgstr "Oktave runter" #. 2 -#: app/track-editor.c:86 app/track-editor.c:150 +#: app/track-editor.c:85 app/track-editor.c:149 msgid "Tone porta" msgstr "" #. 3 -#: app/track-editor.c:87 app/track-editor.c:146 +#: app/track-editor.c:86 app/track-editor.c:145 #, fuzzy msgid "Vibrato" msgstr "Vibrato-Typ:" #. 4 -#: app/track-editor.c:88 +#: app/track-editor.c:87 msgid "Tone porta + Volume slide" msgstr "" #. 5 -#: app/track-editor.c:89 +#: app/track-editor.c:88 msgid "Vibrato + Volume slide" msgstr "" #. 6 -#: app/track-editor.c:90 +#: app/track-editor.c:89 #, fuzzy msgid "Tremolo" msgstr "Tempo" #. 7 -#: app/track-editor.c:91 app/track-editor.c:147 +#: app/track-editor.c:90 app/track-editor.c:146 #, fuzzy msgid "Set panning" msgstr "Balance" #. 8 -#: app/track-editor.c:92 app/track-editor.c:94 +#: app/track-editor.c:91 app/track-editor.c:93 msgid "Position jump" msgstr "" #. 9 -#: app/track-editor.c:93 app/track-editor.c:95 app/track-editor.c:171 +#: app/track-editor.c:92 app/track-editor.c:94 app/track-editor.c:170 #, fuzzy msgid "Set volume" msgstr "Lautstärke" #. C -#: app/track-editor.c:96 +#: app/track-editor.c:95 #, fuzzy msgid "Pattern break" msgstr "Pattern" #. D #. E -#: app/track-editor.c:98 +#: app/track-editor.c:97 msgid "Set tempo/bpm" msgstr "" #. F -#: app/track-editor.c:99 +#: app/track-editor.c:98 msgid "Set global volume" msgstr "" #. G -#: app/track-editor.c:100 +#: app/track-editor.c:99 msgid "Global volume slide" msgstr "" #. H #. I #. J -#: app/track-editor.c:103 +#: app/track-editor.c:102 msgid "Key off" msgstr "" #. K -#: app/track-editor.c:104 +#: app/track-editor.c:103 msgid "Set envelop position" msgstr "" @@ -1599,24 +1633,24 @@ #. M #. N #. O -#: app/track-editor.c:108 +#: app/track-editor.c:107 #, fuzzy msgid "Panning slide" msgstr "Balance" #. P -#: app/track-editor.c:109 +#: app/track-editor.c:108 msgid "LP filter resonance" msgstr "" #. Q -#: app/track-editor.c:110 +#: app/track-editor.c:109 msgid "Multi retrig note" msgstr "" #. R #. S -#: app/track-editor.c:112 +#: app/track-editor.c:111 #, fuzzy msgid "Tremor" msgstr "Tempo" @@ -1627,124 +1661,124 @@ #. W #. X #. Y -#: app/track-editor.c:118 +#: app/track-editor.c:117 msgid "LP filter cutoff" msgstr "" #. 0 -#: app/track-editor.c:123 +#: app/track-editor.c:122 msgid "Fine porta up" msgstr "" #. 1 -#: app/track-editor.c:124 +#: app/track-editor.c:123 msgid "Fine porta down" msgstr "" #. 2 -#: app/track-editor.c:125 +#: app/track-editor.c:124 msgid "Set gliss control" msgstr "" #. 3 -#: app/track-editor.c:126 +#: app/track-editor.c:125 msgid "Set vibrato control" msgstr "" #. 4 -#: app/track-editor.c:127 +#: app/track-editor.c:126 #, fuzzy msgid "Set finetune" msgstr "Feineinstellung" #. 5 -#: app/track-editor.c:128 +#: app/track-editor.c:127 msgid "Set loop begin/loop" msgstr "" #. 6 -#: app/track-editor.c:129 +#: app/track-editor.c:128 msgid "Set tremolo control" msgstr "" #. 7 #. 8 -#: app/track-editor.c:131 +#: app/track-editor.c:130 msgid "Retrig note" msgstr "" #. 9 -#: app/track-editor.c:132 app/track-editor.c:144 +#: app/track-editor.c:131 app/track-editor.c:143 msgid "Fine volume slide up" msgstr "" #. A -#: app/track-editor.c:133 app/track-editor.c:143 +#: app/track-editor.c:132 app/track-editor.c:142 msgid "Fine volume slide down" msgstr "" #. B -#: app/track-editor.c:134 +#: app/track-editor.c:133 #, fuzzy msgid "Note cut" msgstr "Note:" #. C -#: app/track-editor.c:135 +#: app/track-editor.c:134 msgid "Note delay" msgstr "" #. D -#: app/track-editor.c:136 +#: app/track-editor.c:135 #, fuzzy msgid "Pattern delay" msgstr "Pattern" -#: app/track-editor.c:141 +#: app/track-editor.c:140 msgid "Volume slide down" msgstr "" -#: app/track-editor.c:142 +#: app/track-editor.c:141 #, fuzzy msgid "Volume slide up" msgstr "Lautstärke" -#: app/track-editor.c:145 +#: app/track-editor.c:144 #, fuzzy msgid "Set vibrato speed" msgstr "Vibrato-Typ:" -#: app/track-editor.c:148 +#: app/track-editor.c:147 #, fuzzy msgid "Panning slide left" msgstr "Balance-Hüllkurve" -#: app/track-editor.c:149 +#: app/track-editor.c:148 msgid "Panning slide right" msgstr "" -#: app/track-editor.c:154 +#: app/track-editor.c:153 #, fuzzy msgid "sine" msgstr "Sinus" #. 0 -#: app/track-editor.c:155 +#: app/track-editor.c:154 #, fuzzy msgid "ramp down" msgstr "Oktave runter" #. 1 -#: app/track-editor.c:156 +#: app/track-editor.c:155 #, fuzzy msgid "square" msgstr "Rechteck" -#: app/track-editor.c:331 +#: app/track-editor.c:330 msgid "Jazz Edit:" msgstr "Jazz-Edit:" -#: app/track-editor.c:373 +#: app/track-editor.c:374 #, fuzzy msgid "Tracker" msgstr "_Track" @@ -1875,24 +1909,24 @@ msgid "Unknown XI version 0x%x\n" msgstr "Unbekannte XI-Version 0x%x\n" -#: app/xm.c:790 app/xm.c:908 +#: app/xm.c:795 app/xm.c:913 msgid "Error while loading patterns." msgstr "Fehler beim Laden der Pattern." -#: app/xm.c:858 +#: app/xm.c:863 msgid "Can't open file" msgstr "Kann Datei nicht öffnen" -#: app/xm.c:872 +#: app/xm.c:877 msgid "XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n" msgstr "" "XM-Header-Länge != 276. Vielleicht ein pre-0.0.12 SoundTracker-Modul? :-)\n" -#: app/xm.c:914 +#: app/xm.c:919 msgid "Error while loading instruments." msgstr "Fehler beim Laden der Instrumente." -#: app/xm.c:925 +#: app/xm.c:930 #, c-format msgid "" "Module contains sample(s) that are too long for the current mixer.\n" @@ -1901,7 +1935,7 @@ "Modul enthält Sample(s), die zu lang für den aktuellen Mixer sind..\n" "Maximale Sample-Länge ist %d." -#: app/xm.c:1247 +#: app/xm.c:1262 msgid "No FastTracker XM and no supported MOD format!" msgstr "Kein FastTracker XM und kein unterstütztes MOD-Format!" diff -urN soundtracker-0.5.3/po/soundtracker.pot soundtracker-0.5.4/po/soundtracker.pot --- soundtracker-0.5.3/po/soundtracker.pot Wed Mar 29 18:49:57 2000 +++ soundtracker-0.5.4/po/soundtracker.pot Sat Apr 29 17:37:56 2000 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2000-03-29 18:49+0200\n" +"POT-Creation-Date: 2000-04-29 17:37+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -26,31 +26,31 @@ msgid "Sampling" msgstr "" -#: app/audioconfig.c:222 +#: app/audioconfig.c:223 msgid "Driver Module" msgstr "" -#: app/audioconfig.c:223 +#: app/audioconfig.c:224 msgid "Mixer Module" msgstr "" -#: app/audioconfig.c:224 +#: app/audioconfig.c:225 msgid "Description" msgstr "" -#: app/audioconfig.c:232 app/audioconfig.c:235 +#: app/audioconfig.c:233 app/audioconfig.c:236 msgid "Audio Configuration" msgstr "" -#: app/audioconfig.c:250 +#: app/audioconfig.c:251 msgid "Drivers" msgstr "" -#: app/audioconfig.c:287 +#: app/audioconfig.c:288 msgid "Mixers" msgstr "" -#: app/audioconfig.c:320 app/gui-settings.c:377 app/sample-editor.c:1612 +#: app/audioconfig.c:321 app/gui-settings.c:378 app/sample-editor.c:1655 #: app/tips-dialog.c:165 app/transposition.c:313 msgid "Close" msgstr "" @@ -141,7 +141,7 @@ msgid "no settings (yet), sorry!" msgstr "" -#: app/drivers/file-output.c:161 app/sample-editor.c:1315 +#: app/drivers/file-output.c:161 app/sample-editor.c:1353 msgid "Can't open file for writing." msgstr "" @@ -209,103 +209,107 @@ msgid "Loop" msgstr "" -#: app/envelope-box.c:1000 app/sample-editor.c:224 +#: app/envelope-box.c:1000 app/sample-editor.c:228 msgid "Start" msgstr "" -#: app/envelope-box.c:1001 app/sample-editor.c:225 +#: app/envelope-box.c:1001 app/sample-editor.c:229 msgid "End" msgstr "" -#: app/file-operations.c:150 +#: app/file-operations.c:153 msgid "Load Module" msgstr "" -#: app/file-operations.c:151 +#: app/file-operations.c:154 msgid "Save Module" msgstr "" -#: app/file-operations.c:152 +#: app/file-operations.c:155 msgid "Render WAV" msgstr "" -#: app/file-operations.c:153 app/sample-editor.c:324 +#: app/file-operations.c:156 +msgid "Save Song" +msgstr "" + +#: app/file-operations.c:157 app/sample-editor.c:328 msgid "Load Sample" msgstr "" -#: app/file-operations.c:154 +#: app/file-operations.c:158 msgid "Save Sample" msgstr "" -#: app/file-operations.c:155 +#: app/file-operations.c:159 msgid "Load Instrument" msgstr "" -#: app/file-operations.c:156 +#: app/file-operations.c:160 msgid "Save Instrument" msgstr "" -#: app/file-operations.c:162 +#: app/file-operations.c:166 msgid "File" msgstr "" -#: app/file-operations.c:213 +#: app/file-operations.c:217 msgid "Operation not supported." msgstr "" -#: app/gui-settings.c:83 +#: app/gui-settings.c:84 msgid "Scopes Frequency" msgstr "" -#: app/gui-settings.c:86 +#: app/gui-settings.c:87 msgid "Tracker Frequency" msgstr "" -#: app/gui-settings.c:211 app/gui-settings.c:214 +#: app/gui-settings.c:212 app/gui-settings.c:215 msgid "GUI Configuration" msgstr "" -#: app/gui-settings.c:248 +#: app/gui-settings.c:249 msgid "Use Hexadecimal Numbers" msgstr "" -#: app/gui-settings.c:255 +#: app/gui-settings.c:256 msgid "Use upper case letters for hex numbers" msgstr "" -#: app/gui-settings.c:262 +#: app/gui-settings.c:263 msgid "Advance cursor horizontally in effect columns" msgstr "" -#: app/gui-settings.c:269 +#: app/gui-settings.c:270 msgid "Asynchronous Editing" msgstr "" -#: app/gui-settings.c:276 +#: app/gui-settings.c:277 msgid "Show zeroes" msgstr "" -#: app/gui-settings.c:283 +#: app/gui-settings.c:284 msgid "Channel numbering" msgstr "" -#: app/gui-settings.c:290 +#: app/gui-settings.c:291 msgid "Use anti-aliased envelope editor" msgstr "" -#: app/gui-settings.c:296 +#: app/gui-settings.c:297 msgid "You need to restart SoundTracker for this change to come into effect." msgstr "" -#: app/gui-settings.c:305 +#: app/gui-settings.c:306 msgid "Scopes buffer size [MB]" msgstr "" -#: app/gui-settings.c:324 +#: app/gui-settings.c:325 msgid "Highlight rows:" msgstr "" -#: app/gui-settings.c:342 +#: app/gui-settings.c:343 msgid "`Save XM' saves all non-empty patterns" msgstr "" @@ -369,90 +373,102 @@ msgid "Instrument saved." msgstr "" -#: app/gui-subs.c:463 +#: app/gui-subs.c:47 +msgid "Saving song..." +msgstr "" + +#: app/gui-subs.c:48 +msgid "Song saved." +msgstr "" + +#: app/gui-subs.c:465 msgid "Question" msgstr "" -#: app/gui-subs.c:480 app/keys.c:702 app/sample-editor.c:1226 -#: app/sample-editor.c:1417 +#: app/gui-subs.c:482 app/keys.c:702 app/sample-editor.c:1264 +#: app/sample-editor.c:1455 msgid "Cancel" msgstr "" -#: app/gui-subs.c:498 +#: app/gui-subs.c:500 msgid "Warning" msgstr "" -#: app/gui-subs.c:524 +#: app/gui-subs.c:526 msgid "Error!" msgstr "" -#: app/gui.c:87 +#: app/gui.c:88 msgid "Tempo" msgstr "" -#: app/gui.c:221 +#: app/gui.c:228 msgid "" "Are you sure you want to free the current project?\n" "All changes will be lost!" msgstr "" -#: app/gui.c:235 app/gui.c:249 +#: app/gui.c:242 app/gui.c:256 app/gui.c:270 msgid "Are you sure you want to overwrite the file?" msgstr "" -#: app/gui.c:1176 +#: app/gui.c:1200 msgid "Load XM..." msgstr "" -#: app/gui.c:1178 +#: app/gui.c:1202 msgid "Save XM..." msgstr "" -#: app/gui.c:1181 +#: app/gui.c:1205 msgid "Render module as WAV..." msgstr "" -#: app/gui.c:1233 +#: app/gui.c:1208 +msgid "Save song as XM..." +msgstr "" + +#: app/gui.c:1259 msgid "Play Song" msgstr "" -#: app/gui.c:1239 +#: app/gui.c:1265 msgid "Play Pattern" msgstr "" -#: app/gui.c:1245 +#: app/gui.c:1271 msgid "Stop" msgstr "" -#: app/gui.c:1264 +#: app/gui.c:1290 msgid "Number of Channels:" msgstr "" -#: app/gui.c:1280 app/playlist.c:294 +#: app/gui.c:1306 app/playlist.c:294 msgid "Pattern" msgstr "" -#: app/gui.c:1296 +#: app/gui.c:1322 msgid "PatLength" msgstr "" -#: app/gui.c:1388 +#: app/gui.c:1414 msgid "Octave" msgstr "" -#: app/gui.c:1396 +#: app/gui.c:1422 msgid "Jump" msgstr "" -#: app/gui.c:1404 +#: app/gui.c:1430 msgid "Instr" msgstr "" -#: app/gui.c:1419 +#: app/gui.c:1445 msgid "Sample" msgstr "" -#: app/gui.c:1482 +#: app/gui.c:1508 msgid "%M:%S" msgstr "" @@ -604,7 +620,7 @@ "Click into left list to cancel" msgstr "" -#: app/keys.c:682 app/menubar.c:95 +#: app/keys.c:682 app/menubar.c:97 msgid "Ok" msgstr "" @@ -625,423 +641,431 @@ "in the Settings menu." msgstr "" -#: app/menubar.c:131 +#: app/menubar.c:133 msgid "" "Are you sure you want to do this?\n" "All changes will be lost!" msgstr "" -#: app/menubar.c:153 +#: app/menubar.c:155 msgid "" "Are you sure you want to quit?\n" "All changes will be lost!" msgstr "" -#: app/menubar.c:237 +#: app/menubar.c:239 msgid "_Open..." msgstr "" -#: app/menubar.c:239 +#: app/menubar.c:241 msgid "Save _as..." msgstr "" -#: app/menubar.c:245 +#: app/menubar.c:247 msgid "Save Module as _WAV..." msgstr "" -#: app/menubar.c:250 +#: app/menubar.c:249 +msgid "Save Song as XM..." +msgstr "" + +#: app/menubar.c:254 msgid "_Quit" msgstr "" -#: app/menubar.c:257 +#: app/menubar.c:261 msgid "Clear _All" msgstr "" -#: app/menubar.c:259 +#: app/menubar.c:263 msgid "Clear _Patterns Only" msgstr "" -#: app/menubar.c:261 +#: app/menubar.c:265 msgid "_Optimize Module" msgstr "" -#: app/menubar.c:268 app/menubar.c:279 app/menubar.c:297 +#: app/menubar.c:272 app/menubar.c:283 app/menubar.c:301 msgid "C_ut" msgstr "" -#: app/menubar.c:270 app/menubar.c:281 app/menubar.c:299 +#: app/menubar.c:274 app/menubar.c:285 app/menubar.c:303 msgid "_Copy" msgstr "" -#: app/menubar.c:272 app/menubar.c:283 app/menubar.c:301 +#: app/menubar.c:276 app/menubar.c:287 app/menubar.c:305 msgid "_Paste" msgstr "" -#: app/menubar.c:285 +#: app/menubar.c:289 msgid "_Insert" msgstr "" -#: app/menubar.c:287 +#: app/menubar.c:291 msgid "_Delete" msgstr "" -#: app/menubar.c:295 +#: app/menubar.c:299 msgid "_Mark" msgstr "" -#: app/menubar.c:308 +#: app/menubar.c:312 msgid "_Jazz Edit Mode" msgstr "" -#: app/menubar.c:313 +#: app/menubar.c:317 msgid "Transp_osition..." msgstr "" -#: app/menubar.c:318 app/menubar.c:413 +#: app/menubar.c:322 app/menubar.c:417 msgid "_Pattern" msgstr "" -#: app/menubar.c:319 +#: app/menubar.c:323 msgid "_Track" msgstr "" -#: app/menubar.c:320 +#: app/menubar.c:324 msgid "_Selection" msgstr "" -#: app/menubar.c:326 +#: app/menubar.c:330 msgid "_Find Unused Pattern" msgstr "" -#: app/menubar.c:328 +#: app/menubar.c:332 msgid "_Copy Current to Unused Pattern" msgstr "" -#: app/menubar.c:330 +#: app/menubar.c:334 msgid "C_lear Unused Patterns" msgstr "" -#: app/menubar.c:332 +#: app/menubar.c:336 msgid "_Pack Patterns" msgstr "" -#: app/menubar.c:339 +#: app/menubar.c:343 msgid "_Load XI..." msgstr "" -#: app/menubar.c:341 +#: app/menubar.c:345 msgid "_Save XI..." msgstr "" -#: app/menubar.c:346 +#: app/menubar.c:350 msgid "_Clear Current" msgstr "" -#: app/menubar.c:351 +#: app/menubar.c:355 msgid "_Delete Unused Instruments" msgstr "" -#: app/menubar.c:358 +#: app/menubar.c:362 msgid "Use _Backing Store" msgstr "" -#: app/menubar.c:361 +#: app/menubar.c:365 msgid "_Previous font" msgstr "" -#: app/menubar.c:363 +#: app/menubar.c:367 msgid "_Next font" msgstr "" -#: app/menubar.c:371 +#: app/menubar.c:375 msgid "Display _Oscilloscopes" msgstr "" -#: app/menubar.c:374 +#: app/menubar.c:378 msgid "_Tracker" msgstr "" -#: app/menubar.c:378 +#: app/menubar.c:382 msgid "_Keyboard Configuration..." msgstr "" -#: app/menubar.c:380 +#: app/menubar.c:384 msgid "_Audio Configuration..." msgstr "" -#: app/menubar.c:382 +#: app/menubar.c:386 msgid "_GUI Configuration..." msgstr "" -#: app/menubar.c:387 +#: app/menubar.c:391 msgid "_Save Settings now" msgstr "" -#: app/menubar.c:389 +#: app/menubar.c:393 msgid "Save Settings on _Exit" msgstr "" -#: app/menubar.c:396 +#: app/menubar.c:400 msgid "_About..." msgstr "" -#: app/menubar.c:401 +#: app/menubar.c:405 msgid "Show _Tips..." msgstr "" -#: app/menubar.c:403 +#: app/menubar.c:407 msgid "_XM Effects..." msgstr "" -#: app/menubar.c:410 +#: app/menubar.c:414 msgid "_File" msgstr "" -#: app/menubar.c:411 +#: app/menubar.c:415 msgid "_Module" msgstr "" -#: app/menubar.c:412 +#: app/menubar.c:416 msgid "_Edit" msgstr "" -#: app/menubar.c:414 +#: app/menubar.c:418 msgid "_Instrument" msgstr "" -#: app/menubar.c:415 +#: app/menubar.c:419 msgid "_Settings" msgstr "" -#: app/menubar.c:416 +#: app/menubar.c:420 msgid "_Help" msgstr "" -#: app/menubar.c:446 +#: app/menubar.c:450 msgid "/_File" msgstr "" -#: app/menubar.c:447 +#: app/menubar.c:451 msgid "/File/_Open..." msgstr "" -#: app/menubar.c:448 +#: app/menubar.c:452 msgid "/File/Save _as..." msgstr "" -#: app/menubar.c:449 app/menubar.c:451 +#: app/menubar.c:453 app/menubar.c:456 msgid "/File/-" msgstr "" -#: app/menubar.c:450 +#: app/menubar.c:454 msgid "/File/Save Module as _WAV..." msgstr "" -#: app/menubar.c:452 +#: app/menubar.c:455 +msgid "/File/Save Song as XM..." +msgstr "" + +#: app/menubar.c:457 msgid "/File/_Quit" msgstr "" -#: app/menubar.c:453 +#: app/menubar.c:458 msgid "/_Module" msgstr "" -#: app/menubar.c:454 +#: app/menubar.c:459 msgid "/Module/Clear _All" msgstr "" -#: app/menubar.c:455 +#: app/menubar.c:460 msgid "/Module/Clear _Patterns Only" msgstr "" -#: app/menubar.c:456 +#: app/menubar.c:461 msgid "/Module/_Optimize Module" msgstr "" -#: app/menubar.c:457 +#: app/menubar.c:462 msgid "/_Edit" msgstr "" -#: app/menubar.c:458 +#: app/menubar.c:463 msgid "/Edit/_Jazz Edit Mode" msgstr "" -#: app/menubar.c:459 app/menubar.c:461 +#: app/menubar.c:464 app/menubar.c:466 msgid "/Edit/-" msgstr "" -#: app/menubar.c:460 +#: app/menubar.c:465 msgid "/Edit/_Transposition..." msgstr "" -#: app/menubar.c:462 +#: app/menubar.c:467 msgid "/Edit/_Pattern" msgstr "" -#: app/menubar.c:463 +#: app/menubar.c:468 msgid "/Edit/Pattern/C_ut" msgstr "" -#: app/menubar.c:464 +#: app/menubar.c:469 msgid "/Edit/Pattern/_Copy" msgstr "" -#: app/menubar.c:465 +#: app/menubar.c:470 msgid "/Edit/Pattern/_Paste" msgstr "" -#: app/menubar.c:466 +#: app/menubar.c:471 msgid "/Edit/_Track" msgstr "" -#: app/menubar.c:467 +#: app/menubar.c:472 msgid "/Edit/Track/C_ut" msgstr "" -#: app/menubar.c:468 +#: app/menubar.c:473 msgid "/Edit/Track/_Copy" msgstr "" -#: app/menubar.c:469 +#: app/menubar.c:474 msgid "/Edit/Track/_Paste" msgstr "" -#: app/menubar.c:470 +#: app/menubar.c:475 msgid "/Edit/Track/_Insert" msgstr "" -#: app/menubar.c:471 +#: app/menubar.c:476 msgid "/Edit/Track/_Delete" msgstr "" -#: app/menubar.c:472 +#: app/menubar.c:477 msgid "/Edit/_Selection" msgstr "" -#: app/menubar.c:473 +#: app/menubar.c:478 msgid "/Edit/Selection/_Mark" msgstr "" -#: app/menubar.c:474 +#: app/menubar.c:479 msgid "/Edit/Selection/C_ut" msgstr "" -#: app/menubar.c:475 +#: app/menubar.c:480 msgid "/Edit/Selection/_Copy" msgstr "" -#: app/menubar.c:476 +#: app/menubar.c:481 msgid "/Edit/Selection/_Paste" msgstr "" -#: app/menubar.c:477 +#: app/menubar.c:482 msgid "/_Pattern" msgstr "" -#: app/menubar.c:478 +#: app/menubar.c:483 msgid "/Pattern/_Find Unused Pattern" msgstr "" -#: app/menubar.c:479 +#: app/menubar.c:484 msgid "/Pattern/_Copy Current to Unused Pattern" msgstr "" -#: app/menubar.c:480 +#: app/menubar.c:485 msgid "/Pattern/C_lear Unused Patterns" msgstr "" -#: app/menubar.c:481 +#: app/menubar.c:486 msgid "/Pattern/_Pack Patterns" msgstr "" -#: app/menubar.c:482 +#: app/menubar.c:487 msgid "/_Instrument" msgstr "" -#: app/menubar.c:483 +#: app/menubar.c:488 msgid "/Instrument/_Load XI..." msgstr "" -#: app/menubar.c:484 +#: app/menubar.c:489 msgid "/Instrument/_Save XI..." msgstr "" -#: app/menubar.c:485 app/menubar.c:487 +#: app/menubar.c:490 app/menubar.c:492 msgid "/Instrument/-" msgstr "" -#: app/menubar.c:486 +#: app/menubar.c:491 msgid "/Instrument/_Clear Current" msgstr "" -#: app/menubar.c:488 +#: app/menubar.c:493 msgid "/Instrument/_Delete Unused Instruments" msgstr "" -#: app/menubar.c:489 +#: app/menubar.c:494 msgid "/_Settings" msgstr "" -#: app/menubar.c:490 +#: app/menubar.c:495 msgid "/Settings/Display _Oscilloscopes" msgstr "" -#: app/menubar.c:491 +#: app/menubar.c:496 msgid "/Settings/_Tracker" msgstr "" -#: app/menubar.c:492 +#: app/menubar.c:497 msgid "/Settings/Tracker/Use _Backing Store" msgstr "" -#: app/menubar.c:493 +#: app/menubar.c:498 msgid "/Settings/Tracker/_Previous font" msgstr "" -#: app/menubar.c:494 +#: app/menubar.c:499 msgid "/Settings/Tracker/_Next font" msgstr "" -#: app/menubar.c:495 app/menubar.c:499 +#: app/menubar.c:500 app/menubar.c:504 msgid "/Settings/-" msgstr "" -#: app/menubar.c:496 +#: app/menubar.c:501 msgid "/Settings/_Keyboard Configuration..." msgstr "" -#: app/menubar.c:497 +#: app/menubar.c:502 msgid "/Settings/_Audio Configuration..." msgstr "" -#: app/menubar.c:498 +#: app/menubar.c:503 msgid "/Settings/_GUI Configuration..." msgstr "" -#: app/menubar.c:500 +#: app/menubar.c:505 msgid "/Settings/_Save Settings now" msgstr "" -#: app/menubar.c:501 +#: app/menubar.c:506 msgid "/Settings/Save Settings on _Exit" msgstr "" -#: app/menubar.c:502 +#: app/menubar.c:507 msgid "/_Help" msgstr "" -#: app/menubar.c:503 +#: app/menubar.c:508 msgid "/Help/_About..." msgstr "" -#: app/menubar.c:504 +#: app/menubar.c:509 msgid "/Help/-" msgstr "" -#: app/menubar.c:505 +#: app/menubar.c:510 msgid "/Help/Show _Tips..." msgstr "" -#: app/menubar.c:506 +#: app/menubar.c:511 msgid "/Help/_XM Effects..." msgstr "" @@ -1061,7 +1085,7 @@ msgid "Linear" msgstr "" -#: app/module-info.c:118 app/sample-editor.c:184 +#: app/module-info.c:118 app/sample-editor.c:188 msgid "Amiga" msgstr "" @@ -1099,143 +1123,143 @@ "home directory to store configuration files.\n" msgstr "" -#: app/sample-editor.c:183 +#: app/sample-editor.c:187 msgid "No loop" msgstr "" -#: app/sample-editor.c:185 +#: app/sample-editor.c:189 msgid "PingPong" msgstr "" -#: app/sample-editor.c:189 +#: app/sample-editor.c:193 msgid "8 bits" msgstr "" -#: app/sample-editor.c:190 +#: app/sample-editor.c:194 msgid "16 bits" msgstr "" -#: app/sample-editor.c:196 +#: app/sample-editor.c:200 msgid "Sample Editor" msgstr "" -#: app/sample-editor.c:236 +#: app/sample-editor.c:240 msgid "Volume" msgstr "" -#: app/sample-editor.c:237 +#: app/sample-editor.c:241 msgid "Panning" msgstr "" -#: app/sample-editor.c:238 +#: app/sample-editor.c:242 msgid "Finetune" msgstr "" -#: app/sample-editor.c:258 +#: app/sample-editor.c:262 msgid "Selection:" msgstr "" -#: app/sample-editor.c:262 app/track-editor.c:168 app/track-editor.c:178 +#: app/sample-editor.c:266 app/track-editor.c:167 app/track-editor.c:177 msgid "None" msgstr "" -#: app/sample-editor.c:268 +#: app/sample-editor.c:272 msgid "All" msgstr "" -#: app/sample-editor.c:289 +#: app/sample-editor.c:293 msgid "Length:" msgstr "" -#: app/sample-editor.c:305 +#: app/sample-editor.c:309 msgid "RelNote" msgstr "" -#: app/sample-editor.c:316 +#: app/sample-editor.c:320 msgid "Load Sample..." msgstr "" -#: app/sample-editor.c:318 +#: app/sample-editor.c:322 msgid "Save WAV..." msgstr "" -#: app/sample-editor.c:320 +#: app/sample-editor.c:324 msgid "Save region as WAV..." msgstr "" -#: app/sample-editor.c:333 +#: app/sample-editor.c:337 msgid "Save WAV" msgstr "" -#: app/sample-editor.c:343 +#: app/sample-editor.c:347 msgid "Save Region" msgstr "" -#: app/sample-editor.c:354 +#: app/sample-editor.c:358 msgid "Monitor" msgstr "" -#: app/sample-editor.c:360 +#: app/sample-editor.c:364 msgid "Volume Ramp" msgstr "" -#: app/sample-editor.c:370 +#: app/sample-editor.c:374 msgid "Zoom to selection" msgstr "" -#: app/sample-editor.c:376 +#: app/sample-editor.c:380 msgid "Show all" msgstr "" -#: app/sample-editor.c:382 +#: app/sample-editor.c:386 msgid "Zoom in (+50%)" msgstr "" -#: app/sample-editor.c:388 +#: app/sample-editor.c:392 msgid "Zoom out (-50%)" msgstr "" -#: app/sample-editor.c:394 +#: app/sample-editor.c:398 msgid "Reverse" msgstr "" -#: app/sample-editor.c:404 +#: app/sample-editor.c:408 msgid "Cut" msgstr "" -#: app/sample-editor.c:410 +#: app/sample-editor.c:414 msgid "Remove" msgstr "" -#: app/sample-editor.c:416 +#: app/sample-editor.c:420 msgid "Copy" msgstr "" -#: app/sample-editor.c:422 +#: app/sample-editor.c:426 msgid "Paste" msgstr "" -#: app/sample-editor.c:428 +#: app/sample-editor.c:432 msgid "Clear Sample" msgstr "" -#: app/sample-editor.c:466 +#: app/sample-editor.c:470 msgid "(no selection)" msgstr "" -#: app/sample-editor.c:998 +#: app/sample-editor.c:1036 msgid "" msgstr "" -#: app/sample-editor.c:1074 +#: app/sample-editor.c:1112 msgid "Read error." msgstr "" -#: app/sample-editor.c:1182 +#: app/sample-editor.c:1220 msgid "Load stereo sample" msgstr "" -#: app/sample-editor.c:1190 +#: app/sample-editor.c:1228 msgid "" "You have selected a stereo sample!\n" "(SoundTracker can only handle mono samples!)\n" @@ -1243,75 +1267,79 @@ "Please choose which channel to load:" msgstr "" -#: app/sample-editor.c:1201 +#: app/sample-editor.c:1239 msgid "Left" msgstr "" -#: app/sample-editor.c:1207 +#: app/sample-editor.c:1245 msgid "Mix" msgstr "" -#: app/sample-editor.c:1213 +#: app/sample-editor.c:1251 msgid "Right" msgstr "" -#: app/sample-editor.c:1252 +#: app/sample-editor.c:1290 msgid "Can't read sample" msgstr "" -#: app/sample-editor.c:1258 +#: app/sample-editor.c:1296 msgid "Sample is too long for current mixer module. Loading anyway." msgstr "" -#: app/sample-editor.c:1272 +#: app/sample-editor.c:1310 msgid "Can only handle 8 and 16 bit samples with up to 2 channels" msgstr "" -#: app/sample-editor.c:1375 +#: app/sample-editor.c:1413 msgid "Nothing to save." msgstr "" -#: app/sample-editor.c:1402 +#: app/sample-editor.c:1440 msgid "OK" msgstr "" -#: app/sample-editor.c:1410 +#: app/sample-editor.c:1448 msgid "Start sampling" msgstr "" -#: app/sample-editor.c:1445 app/sample-editor.c:1448 +#: app/sample-editor.c:1478 +msgid "No sampling driver available" +msgstr "" + +#: app/sample-editor.c:1488 app/sample-editor.c:1491 msgid "Sampling Window" msgstr "" -#: app/sample-editor.c:1548 +#: app/sample-editor.c:1591 msgid "" msgstr "" -#: app/sample-editor.c:1578 +#: app/sample-editor.c:1621 msgid "Recorded sample is too long for current mixer module. Using it anyway." msgstr "" -#: app/sample-editor.c:1610 +#: app/sample-editor.c:1653 msgid "Normalize" msgstr "" -#: app/sample-editor.c:1611 +#: app/sample-editor.c:1654 msgid "Execute" msgstr "" -#: app/sample-editor.c:1621 app/sample-editor.c:1624 +#: app/sample-editor.c:1664 app/sample-editor.c:1667 msgid "Volume Ramping" msgstr "" -#: app/sample-editor.c:1641 +#: app/sample-editor.c:1684 msgid "Perform linear volume fade on Selection" msgstr "" -#: app/sample-editor.c:1653 +#: app/sample-editor.c:1696 msgid "Left [%]:" msgstr "" -#: app/sample-editor.c:1658 +#: app/sample-editor.c:1701 msgid "Right [%]:" msgstr "" @@ -1365,90 +1393,90 @@ "instrument editor page." msgstr "" -#: app/track-editor.c:83 +#: app/track-editor.c:82 msgid "Arpeggio" msgstr "" #. 0 -#: app/track-editor.c:84 +#: app/track-editor.c:83 msgid "Porta up" msgstr "" #. 1 -#: app/track-editor.c:85 +#: app/track-editor.c:84 msgid "Porta down" msgstr "" #. 2 -#: app/track-editor.c:86 app/track-editor.c:150 +#: app/track-editor.c:85 app/track-editor.c:149 msgid "Tone porta" msgstr "" #. 3 -#: app/track-editor.c:87 app/track-editor.c:146 +#: app/track-editor.c:86 app/track-editor.c:145 msgid "Vibrato" msgstr "" #. 4 -#: app/track-editor.c:88 +#: app/track-editor.c:87 msgid "Tone porta + Volume slide" msgstr "" #. 5 -#: app/track-editor.c:89 +#: app/track-editor.c:88 msgid "Vibrato + Volume slide" msgstr "" #. 6 -#: app/track-editor.c:90 +#: app/track-editor.c:89 msgid "Tremolo" msgstr "" #. 7 -#: app/track-editor.c:91 app/track-editor.c:147 +#: app/track-editor.c:90 app/track-editor.c:146 msgid "Set panning" msgstr "" #. 8 -#: app/track-editor.c:92 app/track-editor.c:94 +#: app/track-editor.c:91 app/track-editor.c:93 msgid "Position jump" msgstr "" #. 9 -#: app/track-editor.c:93 app/track-editor.c:95 app/track-editor.c:171 +#: app/track-editor.c:92 app/track-editor.c:94 app/track-editor.c:170 msgid "Set volume" msgstr "" #. C -#: app/track-editor.c:96 +#: app/track-editor.c:95 msgid "Pattern break" msgstr "" #. D #. E -#: app/track-editor.c:98 +#: app/track-editor.c:97 msgid "Set tempo/bpm" msgstr "" #. F -#: app/track-editor.c:99 +#: app/track-editor.c:98 msgid "Set global volume" msgstr "" #. G -#: app/track-editor.c:100 +#: app/track-editor.c:99 msgid "Global volume slide" msgstr "" #. H #. I #. J -#: app/track-editor.c:103 +#: app/track-editor.c:102 msgid "Key off" msgstr "" #. K -#: app/track-editor.c:104 +#: app/track-editor.c:103 msgid "Set envelop position" msgstr "" @@ -1456,23 +1484,23 @@ #. M #. N #. O -#: app/track-editor.c:108 +#: app/track-editor.c:107 msgid "Panning slide" msgstr "" #. P -#: app/track-editor.c:109 +#: app/track-editor.c:108 msgid "LP filter resonance" msgstr "" #. Q -#: app/track-editor.c:110 +#: app/track-editor.c:109 msgid "Multi retrig note" msgstr "" #. R #. S -#: app/track-editor.c:112 +#: app/track-editor.c:111 msgid "Tremor" msgstr "" @@ -1482,115 +1510,115 @@ #. W #. X #. Y -#: app/track-editor.c:118 +#: app/track-editor.c:117 msgid "LP filter cutoff" msgstr "" #. 0 -#: app/track-editor.c:123 +#: app/track-editor.c:122 msgid "Fine porta up" msgstr "" #. 1 -#: app/track-editor.c:124 +#: app/track-editor.c:123 msgid "Fine porta down" msgstr "" #. 2 -#: app/track-editor.c:125 +#: app/track-editor.c:124 msgid "Set gliss control" msgstr "" #. 3 -#: app/track-editor.c:126 +#: app/track-editor.c:125 msgid "Set vibrato control" msgstr "" #. 4 -#: app/track-editor.c:127 +#: app/track-editor.c:126 msgid "Set finetune" msgstr "" #. 5 -#: app/track-editor.c:128 +#: app/track-editor.c:127 msgid "Set loop begin/loop" msgstr "" #. 6 -#: app/track-editor.c:129 +#: app/track-editor.c:128 msgid "Set tremolo control" msgstr "" #. 7 #. 8 -#: app/track-editor.c:131 +#: app/track-editor.c:130 msgid "Retrig note" msgstr "" #. 9 -#: app/track-editor.c:132 app/track-editor.c:144 +#: app/track-editor.c:131 app/track-editor.c:143 msgid "Fine volume slide up" msgstr "" #. A -#: app/track-editor.c:133 app/track-editor.c:143 +#: app/track-editor.c:132 app/track-editor.c:142 msgid "Fine volume slide down" msgstr "" #. B -#: app/track-editor.c:134 +#: app/track-editor.c:133 msgid "Note cut" msgstr "" #. C -#: app/track-editor.c:135 +#: app/track-editor.c:134 msgid "Note delay" msgstr "" #. D -#: app/track-editor.c:136 +#: app/track-editor.c:135 msgid "Pattern delay" msgstr "" -#: app/track-editor.c:141 +#: app/track-editor.c:140 msgid "Volume slide down" msgstr "" -#: app/track-editor.c:142 +#: app/track-editor.c:141 msgid "Volume slide up" msgstr "" -#: app/track-editor.c:145 +#: app/track-editor.c:144 msgid "Set vibrato speed" msgstr "" -#: app/track-editor.c:148 +#: app/track-editor.c:147 msgid "Panning slide left" msgstr "" -#: app/track-editor.c:149 +#: app/track-editor.c:148 msgid "Panning slide right" msgstr "" -#: app/track-editor.c:154 +#: app/track-editor.c:153 msgid "sine" msgstr "" #. 0 -#: app/track-editor.c:155 +#: app/track-editor.c:154 msgid "ramp down" msgstr "" #. 1 -#: app/track-editor.c:156 +#: app/track-editor.c:155 msgid "square" msgstr "" -#: app/track-editor.c:331 +#: app/track-editor.c:330 msgid "Jazz Edit:" msgstr "" -#: app/track-editor.c:373 +#: app/track-editor.c:374 msgid "Tracker" msgstr "" @@ -1717,29 +1745,29 @@ msgid "Unknown XI version 0x%x\n" msgstr "" -#: app/xm.c:790 app/xm.c:908 +#: app/xm.c:795 app/xm.c:913 msgid "Error while loading patterns." msgstr "" -#: app/xm.c:858 +#: app/xm.c:863 msgid "Can't open file" msgstr "" -#: app/xm.c:872 +#: app/xm.c:877 msgid "XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n" msgstr "" -#: app/xm.c:914 +#: app/xm.c:919 msgid "Error while loading instruments." msgstr "" -#: app/xm.c:925 +#: app/xm.c:930 #, c-format msgid "" "Module contains sample(s) that are too long for the current mixer.\n" "Maximum sample length is %d." msgstr "" -#: app/xm.c:1247 +#: app/xm.c:1262 msgid "No FastTracker XM and no supported MOD format!" msgstr "" diff -urN soundtracker-0.5.3/soundtracker.spec soundtracker-0.5.4/soundtracker.spec --- soundtracker-0.5.3/soundtracker.spec Wed Mar 29 20:05:51 2000 +++ soundtracker-0.5.4/soundtracker.spec Sat Apr 29 17:37:08 2000 @@ -1,6 +1,6 @@ %define name soundtracker -%define version 0.5.3 -%define release 15 +%define version 0.5.4 +%define release 16 %define prefix /usr Summary: Sound modules editor/player