diff -urN soundtracker-0.3.6/AUTHORS soundtracker-0.3.7/AUTHORS --- soundtracker-0.3.6/AUTHORS Wed Oct 6 11:49:56 1999 +++ soundtracker-0.3.7/AUTHORS Fri Dec 10 18:42:00 1999 @@ -67,3 +67,5 @@ (pl) German Jose Gomez Garcia (es) +Michael Shigorin + (ru) diff -urN soundtracker-0.3.6/ChangeLog soundtracker-0.3.7/ChangeLog --- soundtracker-0.3.6/ChangeLog Sun Nov 14 15:28:59 1999 +++ soundtracker-0.3.7/ChangeLog Wed Dec 22 12:26:53 1999 @@ -1,3 +1,64 @@ +1999-12-22 Michael Krause + + * Released v0.3.7 + + * app/gui-settings.[ch]: Added upper/lower case hex number + selection. + + * app/tracker.c (note2string): Rewritten. Supports upper/lower + case selection now. + + * app/keys.c (keys_load_config): Recognize EOF condition + correctly. Fixes the bug magog@mnf.nu reported (keymap loading + wouldn't work for people where the automatic key recognition + fails). + + * app/gui.c (gui_init): Initialize notebook_current_page variable + so that keyboard works again. + +1999-12-20 Michael Krause + + * app/playlist.[ch]: First attempt at creating a Playlist widget. + At the moment it looks just like the old stuff in the upper left + corner of the main window, but it's easier to modify this way. + + * app/instrument-editor.c (instrument_page_create): "Load XI" and + "Save XI" buttons working again instead of crashing. + (instrument_editor_clear_current_instrument): Stop playing before + clearing the instrument. + +1999-12-19 Michael Krause + + * app/file-operations.c: Handy single-click directory browsing and + loading of modules, samples and instruments. Also handles the + corresponding menu items in a clever way. + + * app/file-operations.[ch]: New notebook page; embeds the various + file requesters we have. + +1999-12-10 Michael Krause + + * po: Updated ja.po. Added ru.po from Michael Shigorin + . + +1999-11-20 Michael Krause + + * app/menubar.c: "Clear Current" instrument function. + + * app/sample-editor.c (sample_editor_clear_clicked): update + modinfo page. + + * app/instrument-editor.c (instrument_editor_save_instrument), + app/menubar.c: "Save XI" function. + + * app/xm.h: Use guint16 instead of short for STEnvelopePoint + elements. + + * app/xm.c (xm_load_xi): Endianness conversion for some XI header + fields. Don't cut first four letters of instrument name. + (xm_save_xm_instrument): Save endian-converted volfade. Urgs. + (xm_save_xi): New function to save instrument in XI format. + 1999-11-14 Michael Krause * Released v0.3.6 diff -urN soundtracker-0.3.6/NEWS soundtracker-0.3.7/NEWS --- soundtracker-0.3.6/NEWS Sun Nov 14 15:28:59 1999 +++ soundtracker-0.3.7/NEWS Wed Dec 22 12:28:06 1999 @@ -2,6 +2,16 @@ (This file lists only major user-visible changes; the ChangeLog file contains more details) +What is new in soundtracker-0.3.7 (22-Dec-1999): + +* Built-in single-click file requesters for easy + module / sample browsing +* Can save XI's +* Effects can be displayed in upper-case letters +* Bug fixed in the keyboard settings loader +* Some XI related bugs fixed. +* Russian translation + What is new in soundtracker-0.3.6 (14-Nov-1999): * Can render modules into WAV files diff -urN soundtracker-0.3.6/README soundtracker-0.3.7/README --- soundtracker-0.3.6/README Sun Nov 14 15:29:00 1999 +++ soundtracker-0.3.7/README Wed Dec 22 12:26:54 1999 @@ -4,7 +4,7 @@ http://www.soundtracker.org/ -------------------------------------------------------------- - v0.3.6 --- THIS IS A DEVELOPMENT VERSION! + v0.3.7 --- THIS IS A DEVELOPMENT VERSION! Written and (C) 1998-1999 by Michael Krause [ raw style / lego ] diff -urN soundtracker-0.3.6/TODO soundtracker-0.3.7/TODO --- soundtracker-0.3.6/TODO Sun Nov 14 15:20:50 1999 +++ soundtracker-0.3.7/TODO Wed Dec 22 12:29:18 1999 @@ -1,6 +1,14 @@ things to do and known bugs (in no particular order) ------------------------------------------------------- +dokumentation fЭr playlist-widget! wann wird welches signal +geschmissen! + +jazz edit: only show buttons that are really useable (num_channels) + +jazz edit: zu dem kanal springen, auf dem keine note spielt, oder +auf dem zumindest das keyoff schon gekommen ist! + MAIN WINDOW "CONTROL PANEL": the scopes must be able to be replaced by an instrument list or something similarly useful in case you don't want the scopes there. the scopes could be put into their own window @@ -10,9 +18,13 @@ save wav disablen, wenn audiofile nicht da -edX-bug (-> kb) +space-bar auch ins menЭ (oder in keyboard configuration) + + -space-bar auch ins menЭ +message archive -> home page! + +http://www.iro.umontreal.ca/contrib/po/HTML/ @@ -43,6 +55,17 @@ ====== GUI ========= +bug: wenn man vorspult, werden die patterns im tracker schon geДndert, +bevor der song sich Дndert. + +status bar (indicates loading and playing and tracker columns) + +delink / link tab!!! + +whoops: rf01102.xm, play it, switch to instrument page, then to sample +editor -> sample display widget behaves strangely. expose() is not +called -> bug in gtk+. + SAMPLE LIST: like in good old MED TRACKER WIDGET: should work with arbitrary note types, effects, and so @@ -86,16 +109,8 @@ current pattern in the middle of the scrollable area (can be used for the numerical envelope editor, too). this is rather boring: ever had a look at the gtk+ clist widget? make this configurable: protracker -(current one) or fasttracker like playlist. - -FILE REQUESTER: write a small file requester widget so that we don't -have to use the gtk+ file selection, which can be quite unpleasant if -you want to quickly scan a directory containing 100 samples for a -specific one. on the other hand - if every program would provide -their own file selectors, the world would be a bad place. this one -would go into a separate notebook page (which could be put into its -own window as well, with the concept described above). probably -copy'n'paste from the gtk+ source code. +(current one) or fasttracker like playlist. ONLY PLAYLIST.[CH] HAVE TO +BE ALTERED. GUI: assign samples to numberpad. Then numberpad could act as a drumpad (one key plays given sample at given frequency). @@ -121,9 +136,6 @@ MIXER POSITION / CLIPPING INDICATOR: update more often -INSTRUMENT EDITOR: "clear instrument", "save instrument" (save in XI -format). - ENVELOPE-BOX: canvas should scroll if points are moved outside the current displayed region. @@ -137,18 +149,31 @@ ENVELOPE-BOX: provide some standard curves -GUI: add volume slide auto generator (Cxx) +GUI: add volume slide auto generator (Cxx) - usable for other effects as well? some kind of undo, especially for block operations -sample loader dialog: preview-button (preHEAR) :) +fileops: tasten aktivieren, wenn man ins edit-feld geht! + +> One first 'easy' extension to the soundtracker widget would be to add a +> status bar like the one that exists in buzz.. It's a quite neat feature, +> when your cursor is on a column, it describes the column: +> +> cursor +> v +> ... |. ... ... .. 3|.. +> +> status bar: +> [ volume ] [ portamento ] +> +> -N.Leveille (Knos) ====== PLAYER / LOADER ======== -LOADER: support loading from archives +LOADER: support loading from archives (gnome-libs-2 VFS in the future?) -SAMPLE IMPORT/EXPORT: XI, IFF and RAW formats. +SAMPLE IMPORT/EXPORT: IFF and RAW formats. XM.C: loading chuck-boom.xm doesn't work! @@ -161,13 +186,14 @@ XM-PLAYER: find the bug which causes ch->chFinalPitch to become zero in tru_funk.mod. -XM SAMPLE HEADER: the byte at offset 17 is "reserved" according to the -XM documentation. Modules saved in FastTracker contain values other -than 0 in there. Does this field have any meaning? - PLAYER / MIXER: what happens if you use 9xx to jump behind the loop end? +edX-bug (-> kb) + +mod saver + + ====== DRIVERS ======= @@ -185,13 +211,8 @@ ====== MISC ====== -GNOME: "can't create ~/.gnome directory" bug -- is this related to -setuid(getuid())? - TIME-BUFFER: rewrite, optimize, respect maximum time delta value. -SAVE: wav output - EVERYWHERE: use of pthread_create isn't quite consistent with use of gthread_* functions everywhere else. @@ -203,7 +224,10 @@ ====== FUTURE ======= -MIDI-OUT (aka Fasttracker) : (Giles looking at this) +MIDI + +Module format plugins (Might be interesting to see what the +linux-audio-dev guys are developing) MIXER: the pitchbend function is cool. what would be even cooler is if SoundTracker could play two mods simultaneously; it could be used as a diff -urN soundtracker-0.3.6/app/Makefile.am soundtracker-0.3.7/app/Makefile.am --- soundtracker-0.3.6/app/Makefile.am Sun Sep 26 17:59:23 1999 +++ soundtracker-0.3.7/app/Makefile.am Mon Dec 20 18:22:18 1999 @@ -13,6 +13,7 @@ envelope-box.c envelope-box.h \ errors.c errors.h \ extspinbutton.c extspinbutton.h \ + file-operations.c file-operations.h \ gui-settings.c gui-settings.h \ gui-subs.c gui-subs.h \ gui.c gui.h \ @@ -23,6 +24,7 @@ menubar.c menubar.h \ mixer.h \ module-info.c module-info.h \ + playlist.c playlist.h \ poll.c poll.h \ preferences.c preferences.h \ recode.c recode.h \ diff -urN soundtracker-0.3.6/app/Makefile.in soundtracker-0.3.7/app/Makefile.in --- soundtracker-0.3.6/app/Makefile.in Sun Nov 14 15:30:09 1999 +++ soundtracker-0.3.7/app/Makefile.in Wed Dec 22 12:32:26 1999 @@ -99,7 +99,7 @@ bin_PROGRAMS = soundtracker -soundtracker_SOURCES = audio.c audio.h audioconfig.c audioconfig.h cheat-sheet.c cheat-sheet.h clavier.c clavier.h driver.h driver-in.h driver-out.h effectsconfig.c effectsconfig.h endian-conv.h envelope-box.c envelope-box.h errors.c errors.h extspinbutton.c extspinbutton.h gui-settings.c gui-settings.h gui-subs.c gui-subs.h gui.c gui.h i18n.h instrument-editor.c instrument-editor.h keys.c keys.h main.c main.h menubar.c menubar.h mixer.h module-info.c module-info.h poll.c poll.h preferences.c preferences.h recode.c recode.h sample-display.c sample-display.h sample-editor.c sample-editor.h scope-group.c scope-group.h st-subs.c st-subs.h time-buffer.c time-buffer.h tips-dialog.c tips-dialog.h track-editor.c track-editor.h tracker.c tracker.h transposition.c transposition.h xm.c xm.h xm-player.c xm-player.h +soundtracker_SOURCES = audio.c audio.h audioconfig.c audioconfig.h cheat-sheet.c cheat-sheet.h clavier.c clavier.h driver.h driver-in.h driver-out.h effectsconfig.c effectsconfig.h endian-conv.h envelope-box.c envelope-box.h errors.c errors.h extspinbutton.c extspinbutton.h file-operations.c file-operations.h gui-settings.c gui-settings.h gui-subs.c gui-subs.h gui.c gui.h i18n.h instrument-editor.c instrument-editor.h keys.c keys.h main.c main.h menubar.c menubar.h mixer.h module-info.c module-info.h playlist.c playlist.h poll.c poll.h preferences.c preferences.h recode.c recode.h sample-display.c sample-display.h sample-editor.c sample-editor.h scope-group.c scope-group.h st-subs.c st-subs.h time-buffer.c time-buffer.h tips-dialog.c tips-dialog.h track-editor.c track-editor.h tracker.c tracker.h transposition.c transposition.h xm.c xm.h xm-player.c xm-player.h soundtracker_LDADD = drivers/libdrivers.a mixers/libmixers.a @@ -120,11 +120,12 @@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ soundtracker_OBJECTS = audio.o audioconfig.o cheat-sheet.o clavier.o \ -effectsconfig.o envelope-box.o errors.o extspinbutton.o gui-settings.o \ -gui-subs.o gui.o instrument-editor.o keys.o main.o menubar.o \ -module-info.o poll.o preferences.o recode.o sample-display.o \ -sample-editor.o scope-group.o st-subs.o time-buffer.o tips-dialog.o \ -track-editor.o tracker.o transposition.o xm.o xm-player.o +effectsconfig.o envelope-box.o errors.o extspinbutton.o \ +file-operations.o gui-settings.o gui-subs.o gui.o instrument-editor.o \ +keys.o main.o menubar.o module-info.o playlist.o poll.o preferences.o \ +recode.o sample-display.o sample-editor.o scope-group.o st-subs.o \ +time-buffer.o tips-dialog.o track-editor.o tracker.o transposition.o \ +xm.o xm-player.o soundtracker_DEPENDENCIES = drivers/libdrivers.a mixers/libmixers.a soundtracker_LDFLAGS = CFLAGS = @CFLAGS@ @@ -327,13 +328,17 @@ envelope-box.o: envelope-box.c ../config.h i18n.h gui-subs.h \ envelope-box.h xm.h mixer.h gui-settings.h errors.o: errors.c audio.h mixer.h driver-out.h driver.h time-buffer.h +extfilesel.o: extfilesel.c fnmatch.h extfilesel.h i18n.h ../config.h extspinbutton.o: extspinbutton.c extspinbutton.h +file-operations.o: file-operations.c ../config.h i18n.h \ + file-operations.h keys.h track-editor.h xm.h mixer.h tracker.h \ + gui-subs.h gui.h gui.o: gui.c ../config.h poll.h i18n.h gui.h gui-subs.h xm.h mixer.h \ st-subs.h audio.h driver-out.h driver.h time-buffer.h \ xm-player.h tracker.h main.h keys.h instrument-editor.h \ sample-editor.h driver-in.h track-editor.h scope-group.h \ sample-display.h module-info.h preferences.h menubar.h \ - tips-dialog.h gui-settings.h + tips-dialog.h gui-settings.h file-operations.h playlist.h gui-settings.o: gui-settings.c ../config.h i18n.h gui-settings.h \ gui-subs.h preferences.h scope-group.h sample-display.h \ track-editor.h xm.h mixer.h tracker.h extspinbutton.h @@ -341,7 +346,8 @@ instrument-editor.o: instrument-editor.c i18n.h ../config.h \ instrument-editor.h xm.h mixer.h envelope-box.h st-subs.h gui.h \ gui-subs.h keys.h track-editor.h tracker.h clavier.h errors.h \ - sample-editor.h driver-in.h driver.h gui-settings.h + sample-editor.h driver-in.h driver.h gui-settings.h \ + module-info.h file-operations.h keys.o: keys.c ../config.h i18n.h keys.h gui-subs.h gui.h menubar.h \ preferences.h main.o: main.c ../config.h i18n.h gui.h xm.h mixer.h audio.h \ @@ -351,11 +357,13 @@ main.h xm.h mixer.h st-subs.h keys.h module-info.h \ preferences.h scope-group.h sample-display.h track-editor.h \ tracker.h audioconfig.h effectsconfig.h gui-settings.h \ - tips-dialog.h instrument-editor.h transposition.h cheat-sheet.h + tips-dialog.h transposition.h cheat-sheet.h file-operations.h \ + instrument-editor.h module-info.o: module-info.c i18n.h ../config.h module-info.h gui.h \ gui-subs.h xm.h mixer.h st-subs.h main.h sample-editor.h \ driver-in.h driver.h instrument-editor.h keys.h track-editor.h \ tracker.h +playlist.o: playlist.c ../config.h i18n.h playlist.h gui-subs.h poll.o: poll.c ../config.h preferences.o: preferences.c i18n.h ../config.h gui-subs.h preferences.h \ menubar.h scope-group.h sample-display.h track-editor.h xm.h \ @@ -366,7 +374,7 @@ mixer.h driver-in.h driver.h st-subs.h gui.h gui-subs.h \ instrument-editor.h sample-display.h endian-conv.h keys.h \ track-editor.h tracker.h errors.h time-buffer.h audio.h \ - driver-out.h + driver-out.h module-info.h file-operations.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 st-subs.o: st-subs.c st-subs.h xm.h mixer.h gui-settings.h diff -urN soundtracker-0.3.6/app/audio.c soundtracker-0.3.7/app/audio.c --- soundtracker-0.3.6/app/audio.c Sun Nov 14 15:09:54 1999 +++ soundtracker-0.3.7/app/audio.c Sun Nov 14 15:35:42 1999 @@ -488,7 +488,6 @@ if(playing_noloop & player_looped) { // "noloop" mode for file renderer -- need to flush output buffer // and then stop playing - printf("stopping.\n"); pi->function(pi->data, pi->fd, x); audio_ctlpipe_stop_playing(); } diff -urN soundtracker-0.3.6/app/drivers/file-output.c soundtracker-0.3.7/app/drivers/file-output.c --- soundtracker-0.3.6/app/drivers/file-output.c Sun Nov 14 15:19:07 1999 +++ soundtracker-0.3.7/app/drivers/file-output.c Sat Nov 20 16:03:16 1999 @@ -162,7 +162,7 @@ goto out; } - // In case we're running setuid root... + /* In case we're running setuid root... */ chown(d->filename, getuid(), getgid()); d->sndbuf_size = 16384; diff -urN soundtracker-0.3.6/app/file-operations.c soundtracker-0.3.7/app/file-operations.c --- soundtracker-0.3.6/app/file-operations.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.7/app/file-operations.c Sun Dec 19 17:30:20 1999 @@ -0,0 +1,205 @@ + +/* + * The Real SoundTracker - file operations page + * + * Copyright (C) 1999 Michael Krause + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include + +#include "i18n.h" +#include +#include "file-operations.h" +#include "keys.h" +#include "track-editor.h" +#include "gui-subs.h" +#include "gui.h" + +/* Welcome! Heavy gtk+ hacking going on here! :-) */ + +GtkWidget *fileops_dialogs[DIALOG_LAST]; + +static GtkWidget *rightbox; +static GtkWidget *typeradio[DIALOG_LAST]; + +static GtkFileSelection *fileops_current_dialog = NULL; +static guint handler_id_f, handler_id_d; + +static GtkWidget * +fileops_filesel_get_confirm_area (GtkFileSelection *fs) +{ + /* whhaaaaaahooooooooo! */ + return GTK_WIDGET( + ((GtkBoxChild*) g_list_nth_data( + GTK_BOX(fs->main_vbox)->children, + 4)) + ->widget); +} + +static gboolean +is_single_click_dialog (GtkFileSelection *fs) +{ + GtkWidget *w = GTK_WIDGET(fs); + + return w == fileops_dialogs[DIALOG_LOAD_MOD] + || w == fileops_dialogs[DIALOG_LOAD_SAMPLE] + || w == fileops_dialogs[DIALOG_LOAD_INSTRUMENT]; +} + +static void +file_selection_file_button (GtkWidget *widget, + gint row, + gint column, + GdkEventButton *bevent, + gpointer user_data) +{ + gtk_button_clicked(GTK_BUTTON(GTK_FILE_SELECTION(user_data)->ok_button)); +} + +static void +file_selection_dir_button (GtkWidget *widget, + gint row, + gint column, + GdkEventButton *bevent, + gpointer user_data) +{ + gchar *temp = NULL; + + gtk_clist_get_text (GTK_CLIST (widget), row, 0, &temp); + + gtk_file_selection_set_filename (GTK_FILE_SELECTION(user_data), + temp); +} + +static void +fileops_filesel_pre_insertion (GtkFileSelection *fs) +{ + gtk_widget_hide(fs->button_area); + gtk_widget_hide(fileops_filesel_get_confirm_area(fs)); + + if(is_single_click_dialog(fs)) { + handler_id_f = gtk_signal_connect_after (GTK_OBJECT (fs->file_list), "select_row", + (GtkSignalFunc) file_selection_file_button, + (gpointer) fs); + } + + handler_id_d = gtk_signal_connect_after (GTK_OBJECT (fs->dir_list), "select_row", + (GtkSignalFunc) file_selection_dir_button, + (gpointer) fs); +} + +static void +fileops_filesel_post_removal (GtkFileSelection *fs) +{ + gtk_signal_disconnect(GTK_OBJECT(fs->dir_list), handler_id_d); + + if(is_single_click_dialog(fs)) { + gtk_signal_disconnect(GTK_OBJECT(fs->file_list), handler_id_f); + } + + gtk_widget_show(fileops_filesel_get_confirm_area(fs)); + gtk_widget_show(fs->button_area); +} + +static void +typeradio_changed (void) +{ + int n = find_current_toggle(typeradio, DIALOG_LAST); + + if(fileops_current_dialog) { + gtk_container_remove(GTK_CONTAINER(rightbox), fileops_current_dialog->main_vbox); + fileops_filesel_post_removal(fileops_current_dialog); + gtk_container_add(GTK_CONTAINER(fileops_current_dialog), fileops_current_dialog->main_vbox); + } + + fileops_current_dialog = GTK_FILE_SELECTION(fileops_dialogs[n]); + + gtk_widget_hide(GTK_WIDGET(fileops_current_dialog)); // close window if it's open + + gtk_object_ref(GTK_OBJECT(fileops_current_dialog->main_vbox)); + gtk_container_remove(GTK_CONTAINER(fileops_current_dialog), fileops_current_dialog->main_vbox); + fileops_filesel_pre_insertion(fileops_current_dialog); + gtk_box_pack_start(GTK_BOX(rightbox), fileops_current_dialog->main_vbox, TRUE, TRUE, 0); +} + +void +fileops_page_create (GtkNotebook *nb) +{ + GtkWidget *hbox, *vbox, *thing; + static const char *labels1[] = { + N_("Load Module"), + N_("Save Module"), + N_("Render WAV"), + N_("Load Sample"), + N_("Save Sample"), + N_("Load Instrument"), + N_("Save Instrument"), + NULL + }; + + hbox = gtk_hbox_new(FALSE, 4); + gtk_container_border_width(GTK_CONTAINER(hbox), 10); + gtk_notebook_append_page(nb, hbox, gtk_label_new(_("File"))); + gtk_widget_show(hbox); + + vbox = gtk_vbox_new(FALSE, 2); + gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); + gtk_widget_show(vbox); + + make_radio_group((const char**)labels1, vbox, typeradio, FALSE, FALSE, typeradio_changed); + + thing = gtk_vseparator_new(); + gtk_box_pack_start(GTK_BOX(hbox), thing, FALSE, FALSE, 0); + gtk_widget_show(thing); + + rightbox = vbox = gtk_vbox_new(TRUE, 2); + gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); + gtk_widget_show(vbox); + + typeradio_changed(); +} + +gboolean +fileops_page_handle_keys (int shift, + int ctrl, + int alt, + guint32 keyval, + gboolean pressed) +{ + int i; + + i = keys_get_key_meaning(keyval, ENCODE_MODIFIERS(shift, ctrl, alt)); + if(i != -1 && KEYS_MEANING_TYPE(i) == KEYS_MEANING_NOTE) { + track_editor_do_the_note_key(i, pressed, keyval, ENCODE_MODIFIERS(shift, ctrl, alt)); + return TRUE; + } + + return FALSE; +} + +void +fileops_open_dialog (void *dummy, + void *index) +{ + int n = (int)index; + + if(fileops_dialogs[n] == (GtkWidget*)fileops_current_dialog) { + gui_go_to_fileops_page(); + } else { + gtk_widget_show(fileops_dialogs[n]); + } +} diff -urN soundtracker-0.3.6/app/file-operations.h soundtracker-0.3.7/app/file-operations.h --- soundtracker-0.3.6/app/file-operations.h Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.7/app/file-operations.h Sun Dec 19 17:30:20 1999 @@ -0,0 +1,51 @@ + +/* + * The Real SoundTracker - file operations page (header) + * + * Copyright (C) 1999 Michael Krause + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _FILE_OPERATIONS_H +#define _FILE_OPERATIONS_H + +#include + +enum { + DIALOG_LOAD_MOD = 0, + DIALOG_SAVE_MOD, + DIALOG_SAVE_MOD_AS_WAV, + DIALOG_LOAD_SAMPLE, + DIALOG_SAVE_SAMPLE, + DIALOG_LOAD_INSTRUMENT, + DIALOG_SAVE_INSTRUMENT, + DIALOG_LAST +}; + +extern GtkWidget *fileops_dialogs[DIALOG_LAST]; + +void fileops_page_create (GtkNotebook *nb); + +gboolean fileops_page_handle_keys (int shift, + int ctrl, + int alt, + guint32 keyval, + gboolean pressed); + +void fileops_open_dialog (void *dummy, + void *index); + +#endif /* _FILE_OPERATIONS_H */ diff -urN soundtracker-0.3.6/app/gui-settings.c soundtracker-0.3.7/app/gui-settings.c --- soundtracker-0.3.6/app/gui-settings.c Wed Oct 6 12:36:47 1999 +++ soundtracker-0.3.7/app/gui-settings.c Wed Dec 22 12:17:28 1999 @@ -36,6 +36,7 @@ gui_prefs gui_settings = { 1, + 0, 1, 1, @@ -57,6 +58,7 @@ "~/", "~/", "~/", + "~/", }; static GtkWidget *configwindow = NULL; @@ -103,6 +105,15 @@ } static void +gui_settings_upcase_toggled (GtkWidget *widget) +{ + int o = gui_settings.tracker_upcase; + if(o != (gui_settings.tracker_upcase = GTK_TOGGLE_BUTTON(widget)->active)) { + gtk_widget_queue_resize(GTK_WIDGET(tracker)); + } +} + +static void gui_settings_advance_cursor_toggled (GtkWidget *widget) { gui_settings.advance_cursor_in_fx_columns = GTK_TOGGLE_BUTTON(widget)->active; @@ -193,6 +204,13 @@ gtk_signal_connect(GTK_OBJECT(thing), "toggled", GTK_SIGNAL_FUNC(gui_settings_hexmode_toggled), NULL); + thing = gtk_check_button_new_with_label(_("Use upper case letters for hex numbers")); + gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(thing), gui_settings.tracker_upcase); + gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + gtk_signal_connect(GTK_OBJECT(thing), "toggled", + GTK_SIGNAL_FUNC(gui_settings_upcase_toggled), NULL); + thing = gtk_check_button_new_with_label(_("Advance Cursor in FX Columns")); gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(thing), gui_settings.advance_cursor_in_fx_columns); gtk_box_pack_start(GTK_BOX(mainbox), thing, FALSE, TRUE, 0); @@ -273,6 +291,7 @@ f = fopen(buf, "rb"); if(f) { prefs_get_int(f, "gui-use-hexadecimal-numbers", &gui_settings.tracker_hexmode); + prefs_get_int(f, "gui-use-upper-case", &gui_settings.tracker_upcase); prefs_get_int(f, "gui-advance-cursor-in-fx-columns", &gui_settings.advance_cursor_in_fx_columns); prefs_get_int(f, "gui-display-scopes", &gui_settings.gui_display_scopes); prefs_get_int(f, "gui-use-backing-store", &gui_settings.gui_use_backing_store); @@ -296,6 +315,7 @@ 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); + prefs_get_string(f, "saveinstr-path", gui_settings.saveinstr_path); fclose(f); } } @@ -314,6 +334,7 @@ return; prefs_put_int(f, "gui-use-hexadecimal-numbers", gui_settings.tracker_hexmode); + prefs_put_int(f, "gui-use-upper-case", gui_settings.tracker_upcase); prefs_put_int(f, "gui-advance-cursor-in-fx-columns", gui_settings.advance_cursor_in_fx_columns); prefs_put_int(f, "gui-display-scopes", gui_settings.gui_display_scopes); prefs_put_int(f, "gui-use-backing-store", gui_settings.gui_use_backing_store); @@ -346,6 +367,7 @@ 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); + prefs_put_string(f, "saveinstr-path", gui_settings.saveinstr_path); fclose(f); } diff -urN soundtracker-0.3.6/app/gui-settings.h soundtracker-0.3.7/app/gui-settings.h --- soundtracker-0.3.6/app/gui-settings.h Wed Oct 6 12:25:30 1999 +++ soundtracker-0.3.7/app/gui-settings.h Wed Dec 22 12:13:15 1999 @@ -26,6 +26,7 @@ typedef struct gui_prefs { gboolean tracker_hexmode; + gboolean tracker_upcase; gboolean advance_cursor_in_fx_columns; gboolean gui_display_scopes; @@ -47,6 +48,7 @@ gchar loadsmpl_path[128]; gchar savesmpl_path[128]; gchar loadinstr_path[128]; + gchar saveinstr_path[128]; } gui_prefs; extern gui_prefs gui_settings; diff -urN soundtracker-0.3.6/app/gui-subs.c soundtracker-0.3.7/app/gui-subs.c --- soundtracker-0.3.6/app/gui-subs.c Wed Oct 6 12:34:59 1999 +++ soundtracker-0.3.7/app/gui-subs.c Mon Dec 20 17:59:24 1999 @@ -347,6 +347,45 @@ return list; } +GtkWidget * +gui_button (GtkWidget * win, char *stock, char *labeltext, + void *callback, gpointer userdata, GtkWidget * box) +{ + GtkWidget *button, *label, *hbox; +#ifdef USE_GNOME + GtkWidget *pixmap; +#endif + + hbox = gtk_hbox_new (0, 0); + gtk_widget_show (hbox); + + button = gtk_button_new (); + gtk_signal_connect (GTK_OBJECT (button), "clicked", + GTK_SIGNAL_FUNC (callback), userdata); + gtk_widget_show (button); + +#ifdef USE_GNOME + if (stock) + { + pixmap = gnome_stock_pixmap_widget_at_size (win, stock, 12, 14); + gtk_container_add (GTK_CONTAINER (hbox), pixmap); + gtk_widget_show (pixmap); + } +#endif + + if (labeltext) + { + label = gtk_label_new (labeltext); + gtk_container_add (GTK_CONTAINER (hbox), label); + gtk_widget_show (label); + } + gtk_container_add (GTK_CONTAINER (button), hbox); + if (box) + gtk_container_add (GTK_CONTAINER (box), button); + + return button; +} + #ifndef USE_GNOME static GtkWidget *cdialog = NULL; diff -urN soundtracker-0.3.6/app/gui-subs.h soundtracker-0.3.7/app/gui-subs.h --- soundtracker-0.3.6/app/gui-subs.h Wed Oct 6 12:34:59 1999 +++ soundtracker-0.3.7/app/gui-subs.h Mon Dec 20 17:59:24 1999 @@ -110,6 +110,13 @@ gchar **tp, GtkWidget *hbox); +GtkWidget * gui_button (GtkWidget * win, + char *stock, + char *labeltext, + void *callback, + gpointer userdata, + GtkWidget *box); + #ifndef USE_GNOME #define GNOME_APP(x) x diff -urN soundtracker-0.3.6/app/gui.c soundtracker-0.3.7/app/gui.c --- soundtracker-0.3.6/app/gui.c Sat Nov 13 14:14:47 1999 +++ soundtracker-0.3.7/app/gui.c Wed Dec 22 11:38:28 1999 @@ -56,11 +56,13 @@ #include "time-buffer.h" #include "tips-dialog.h" #include "gui-settings.h" +#include "file-operations.h" +#include "playlist.h" int gui_playing_mode = 0; GtkWidget *editing_toggle; GtkWidget *gui_curins_name, *gui_cursmpl_name; -GtkWidget *mainwindow, *gui_loadwindow, *gui_savewindow, *gui_savewindow_wav; +GtkWidget *mainwindow; ScopeGroup *scopegroup; static GSList *text_entries; @@ -68,12 +70,11 @@ static gint pipetag = -1; static GtkWidget *mainwindow_upper_hbox, *mainwindow_second_hbox; static GtkWidget *notebook; -static GtkWidget *spin_songlength, *spin_songpos, *spin_songpat, *spin_restartpos; static GtkWidget *spin_editpat, *spin_patlen, *spin_numchans; -static GtkWidget *programlist_ibutton, *programlist_dbutton; static GtkWidget *cursmpl_spin; static GtkAdjustment *adj_amplification, *adj_pitchbend; static GtkWidget *spin_jump, *curins_spin, *spin_octave; +static Playlist *playlist; static void tempo_slider_changed (int value); static void bpm_slider_changed (int value); @@ -95,7 +96,7 @@ static int editing_pat = 0; static int songpos = 0; static int capture_keys = 1; -static int notebook_current_page = 0; +static int notebook_current_page; /* gui event handlers */ static void file_selected(GtkWidget *w, GtkFileSelection *fs); @@ -104,15 +105,9 @@ static void current_sample_changed(GtkSpinButton *spin); static void current_sample_name_changed(void); static int keyevent(GtkWidget *widget, GdkEventKey *event, gpointer data); -static void programlist_songpos_changed(GtkSpinButton *spin); -static void programlist_songlength_changed(GtkSpinButton *spin); -static void programlist_songpat_changed(GtkSpinButton *spin); -static void programlist_restartpos_changed(GtkSpinButton *spin); static void spin_editpat_changed(GtkSpinButton *spin); static void spin_patlen_changed(GtkSpinButton *spin); static void spin_numchans_changed(GtkSpinButton *spin); -static void programlist_insert_clicked(void); -static void programlist_delete_clicked(void); static void notebook_page_switched(GtkNotebook *notebook, GtkNotebookPage *page, int page_num); static void gui_adj_amplification_changed(GtkAdjustment *adj); static void gui_adj_pitchbend_changed(GtkAdjustment *adj); @@ -132,7 +127,6 @@ static void offset_current_instrument(int offset); static void offset_current_sample(int offset); static void programlist_initialize(void); -static void programlist_create(GtkWidget *destbox); static void gui_mixer_play_pattern (int p, @@ -213,7 +207,7 @@ gtk_widget_hide(GTK_WIDGET(fs)); - if(fs == GTK_FILE_SELECTION(gui_loadwindow)) { + if(fs == GTK_FILE_SELECTION(fileops_dialogs[DIALOG_LOAD_MOD])) { file_selection_save_path(fn, gui_settings.loadmod_path); if(xm->modified) { gnome_app_ok_cancel_modal(GNOME_APP(mainwindow), @@ -223,7 +217,7 @@ } else { gui_load_callback(0, fn); } - } else if(fs == GTK_FILE_SELECTION(gui_savewindow)) { + } else if(fs == GTK_FILE_SELECTION(fileops_dialogs[DIALOG_SAVE_MOD])) { FILE *f = fopen(fn, "r"); file_selection_save_path(fn, gui_settings.savemod_path); @@ -399,6 +393,7 @@ gpointer data) { static gboolean (*handle_page_keys[])(int,int,int,guint32,gboolean) = { + fileops_page_handle_keys, track_editor_handle_keys, instrument_editor_handle_keys, sample_editor_handle_keys, @@ -438,59 +433,55 @@ } static void -programlist_songpos_changed (GtkSpinButton *spin) +playlist_position_changed (Playlist *p, + int newpos) { - int m = xm_get_modified(); - int newpos, pat; - - newpos = gtk_spin_button_get_value_as_int(spin); - pat = xm->pattern_order_table[newpos]; - if(newpos == songpos) return; songpos = newpos; if(gui_playing_mode) { + // This will only be executed when the user changes the song position manually gui_mixer_set_songpos(newpos); // See comment in audio.c::audio_mix() for why we do this set_songpos_count++; - gui_set_current_pattern(pat); + gui_set_current_pattern(playlist_get_nth_pattern(p, newpos)); } - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songpat), pat); - xm_set_modified(m); } static void -programlist_songlength_changed (GtkSpinButton *spin) +playlist_restart_position_changed (Playlist *p, + int pos) { - int newlen; - - newlen = gtk_spin_button_get_value_as_int(spin); - - gui_update_spin_adjustment(GTK_SPIN_BUTTON(spin_songpos), 0, newlen - 1); - - xm->song_length = newlen; + xm->restart_position = pos; xm_set_modified(1); } static void -programlist_songpat_changed (GtkSpinButton *spin) +playlist_entry_changed (Playlist *p, + int pos, + int pat) { - int n = gtk_spin_button_get_value_as_int(spin); + int i; - if(n != xm->pattern_order_table[songpos]) { - xm->pattern_order_table[songpos] = n; + if(pos != -1) { + xm->pattern_order_table[pos] = pat; + } else { + for(i = 0; i < xm->song_length; i++) { + xm->pattern_order_table[i] = playlist_get_nth_pattern(p, i); + } } + xm_set_modified(1); } static void -programlist_restartpos_changed (GtkSpinButton *spin) +playlist_song_length_changed (Playlist *p, + int length) { - xm->restart_position = gtk_spin_button_get_value_as_int(spin); - xm_set_modified(1); + xm->song_length = length; + playlist_entry_changed(p, -1, -1); } static void @@ -553,38 +544,6 @@ } static void -programlist_insert_clicked (void) -{ - int pos; - - if(xm->song_length == 255) - return; - - pos = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin_songpos)); - memmove(&xm->pattern_order_table[pos+1], &xm->pattern_order_table[pos], 255 - pos); - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songpat), xm->pattern_order_table[pos]); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songlength), ++xm->song_length); - xm_set_modified(1); -} - -static void -programlist_delete_clicked (void) -{ - int pos; - - if(xm->song_length == 1) - return; - - pos = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin_songpos)); - memmove(&xm->pattern_order_table[pos], &xm->pattern_order_table[pos+1], 255 - pos); - - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songpat), xm->pattern_order_table[pos]); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songlength), --xm->song_length); - xm_set_modified(1); -} - -static void gui_adj_amplification_changed (GtkAdjustment *adj) { audio_ctlpipe_id a = AUDIO_CTLPIPE_SET_AMPLIFICATION; @@ -637,10 +596,10 @@ set_songpos_wait_time = -1.0; if(gui_playing_mode == PLAYING_SONG && nsongpos != songpos) { + // This will not be executed if the user has manually changed the song position songpos = nsongpos; - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songpos), songpos); + playlist_set_position(playlist, songpos); gui_set_current_pattern(xm->pattern_order_table[songpos]); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songpat), xm->pattern_order_table[songpos]); } if(gui_playing_mode != PLAYING_NOTE) { tracker_set_patpos(tracker, npatpos); @@ -901,11 +860,7 @@ gtk_widget_set_sensitive(vscrollbar, enable); gtk_widget_set_sensitive(editing_toggle, enable); gtk_widget_set_sensitive(spin_patlen, enable); - gtk_widget_set_sensitive(spin_songlength, enable); - gtk_widget_set_sensitive(spin_songpat, enable); - gtk_widget_set_sensitive(spin_restartpos, enable); - gtk_widget_set_sensitive(programlist_ibutton, enable); - gtk_widget_set_sensitive(programlist_dbutton, enable); + playlist_enable(playlist, enable); } void @@ -1078,53 +1033,28 @@ static void programlist_initialize (void) { + int i; int m = xm_get_modified(); - int rp = xm->restart_position; - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songlength), xm->song_length); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songpos), 0); - gui_update_spin_adjustment(GTK_SPIN_BUTTON(spin_songpos), 0, xm->song_length - 1); - gui_update_spin_adjustment(GTK_SPIN_BUTTON(spin_restartpos), 0, xm->song_length - 1); - xm->restart_position = rp; - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_restartpos), xm->restart_position); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_songpat), xm->pattern_order_table[0]); - xm_set_modified(m); -} -static void -programlist_create (GtkWidget *destbox) -{ - GtkWidget *hbox, *vbox, *thing; - - hbox = gtk_hbox_new(FALSE, 4); - gtk_box_pack_start(GTK_BOX(destbox), hbox, FALSE, TRUE, 0); - gtk_widget_show(hbox); - - vbox = gtk_vbox_new(FALSE, 2); - gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); - gtk_widget_show(vbox); - - gui_put_labelled_spin_button(vbox, _("Song length"), 1, 256, &spin_songlength, programlist_songlength_changed, NULL); - gui_put_labelled_spin_button(vbox, _("Current pos"), 0, 255, &spin_songpos, programlist_songpos_changed, NULL); - gui_put_labelled_spin_button(vbox, _("Pattern"), 0, 255, &spin_songpat, programlist_songpat_changed, NULL); - gui_put_labelled_spin_button(vbox, _("Restart pos"), 0, 255, &spin_restartpos, programlist_restartpos_changed, NULL); - - hbox = gtk_hbox_new(TRUE, 4); - gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); - gtk_widget_show(hbox); + /* Need to temporarily block some callbacks, otherwise funny things do happen */ + gtk_signal_handler_block_by_func(GTK_OBJECT(playlist), + GTK_SIGNAL_FUNC(playlist_song_length_changed), + NULL); + + playlist_freeze(playlist); + playlist_set_length(playlist, xm->song_length); + for(i = 0; i < xm->song_length; i++) { + playlist_set_nth_pattern(playlist, i, xm->pattern_order_table[i]); + } + playlist_set_position(playlist, 0); + playlist_set_restart_position(playlist, xm->restart_position); + playlist_thaw(playlist); + + gtk_signal_handler_unblock_by_func(GTK_OBJECT(playlist), + GTK_SIGNAL_FUNC(playlist_song_length_changed), + NULL); - thing = gtk_button_new_with_label(_("Insert")); - gtk_box_pack_start(GTK_BOX(hbox), thing, TRUE, TRUE, 0); - gtk_widget_show(thing); - gtk_signal_connect(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(programlist_insert_clicked), NULL); - programlist_ibutton = thing; - - thing = gtk_button_new_with_label(_("Delete")); - gtk_box_pack_start(GTK_BOX(hbox), thing, TRUE, TRUE, 0); - gtk_widget_show(thing); - gtk_signal_connect(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(programlist_delete_clicked), NULL); - programlist_dbutton = thing; + xm_set_modified(m); } static gint @@ -1148,6 +1078,13 @@ return 0; } +void +gui_go_to_fileops_page (void) +{ + gtk_notebook_set_page(GTK_NOTEBOOK(notebook), + 0); +} + int gui_init (int argc, char *argv[]) @@ -1174,11 +1111,11 @@ gtk_signal_connect (GTK_OBJECT (mainwindow), "delete_event", GTK_SIGNAL_FUNC (menubar_quit_requested), NULL); - gui_loadwindow = file_selection_create(_("Load XM..."), file_selected); - gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui_loadwindow), gui_settings.loadmod_path); - gui_savewindow = file_selection_create(_("Save XM..."), file_selected); - gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui_savewindow), gui_settings.savemod_path); - gui_savewindow_wav = file_selection_create(_("Render module as WAV..."), file_selected); + fileops_dialogs[DIALOG_LOAD_MOD] = file_selection_create(_("Load XM..."), file_selected); + gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_LOAD_MOD]), gui_settings.loadmod_path); + fileops_dialogs[DIALOG_SAVE_MOD] = file_selection_create(_("Save XM..."), file_selected); + gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_SAVE_MOD]), gui_settings.savemod_path); + fileops_dialogs[DIALOG_SAVE_MOD_AS_WAV] = file_selection_create(_("Render module as WAV..."), file_selected); mainvbox0 = gtk_vbox_new(FALSE, 0); gtk_container_border_width(GTK_CONTAINER(mainvbox0), 0); @@ -1202,7 +1139,19 @@ gtk_widget_show(mainwindow_upper_hbox); /* Program List */ - programlist_create(mainwindow_upper_hbox); + thing = playlist_new(); + gtk_box_pack_start(GTK_BOX(mainwindow_upper_hbox), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + + playlist = PLAYLIST(thing); + gtk_signal_connect (GTK_OBJECT (playlist), "current_position_changed", + GTK_SIGNAL_FUNC (playlist_position_changed), NULL); + gtk_signal_connect (GTK_OBJECT (playlist), "restart_position_changed", + GTK_SIGNAL_FUNC (playlist_restart_position_changed), NULL); + gtk_signal_connect (GTK_OBJECT (playlist), "song_length_changed", + GTK_SIGNAL_FUNC (playlist_song_length_changed), NULL); + gtk_signal_connect (GTK_OBJECT (playlist), "entry_changed", + GTK_SIGNAL_FUNC (playlist_entry_changed), NULL); thing = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(mainwindow_upper_hbox), thing, FALSE, TRUE, 0); @@ -1427,11 +1376,34 @@ gtk_signal_connect(GTK_OBJECT(notebook), "switch_page", GTK_SIGNAL_FUNC(notebook_page_switched), NULL); + fileops_page_create(GTK_NOTEBOOK(notebook)); tracker_page_create(GTK_NOTEBOOK(notebook)); instrument_page_create(GTK_NOTEBOOK(notebook)); sample_editor_page_create(GTK_NOTEBOOK(notebook)); modinfo_page_create(GTK_NOTEBOOK(notebook)); + // Activate tracker page + gtk_notebook_set_page(GTK_NOTEBOOK(notebook), + 1); + notebook_current_page = 1; + + /* status bar */ +/* + hbox = gtk_hbox_new(FALSE, 4); + gtk_box_pack_start(GTK_BOX(mainvbox), hbox, FALSE, TRUE, 0); + gtk_widget_show(hbox); + + add_empty_hbox(hbox); + thing = gtk_vseparator_new(); + gtk_box_pack_start(GTK_BOX(hbox), thing, FALSE, TRUE, 0); + gtk_widget_show(thing); + + thing = gui_button (mainwindow, GNOME_STOCK_BUTTON_UP, + 0, NULL, NULL, 0); + gtk_box_pack_start (GTK_BOX (hbox), thing, 0, 0, 0); + gtk_widget_show (thing); +// add_tip (wid, "Link/DeLink this tab"); +*/ /* capture all key presses */ gtk_widget_add_events(GTK_WIDGET(mainwindow), GDK_KEY_RELEASE_MASK); gtk_signal_connect(GTK_OBJECT(mainwindow), "key_press_event", GTK_SIGNAL_FUNC(keyevent), (gpointer)1); diff -urN soundtracker-0.3.6/app/gui.h soundtracker-0.3.7/app/gui.h --- soundtracker-0.3.6/app/gui.h Sat Oct 30 19:25:37 1999 +++ soundtracker-0.3.7/app/gui.h Sun Dec 19 17:25:42 1999 @@ -40,7 +40,7 @@ extern GtkWidget *editing_toggle; extern GtkWidget *gui_curins_name, *gui_cursmpl_name; -extern GtkWidget *mainwindow, *gui_loadwindow, *gui_savewindow, *gui_savewindow_wav; +extern GtkWidget *mainwindow; int gui_init (int argc, char *argv[]); @@ -59,6 +59,8 @@ void gui_get_text_entry (int length, void(*changedfunc)(), GtkWidget **widget); + +void gui_go_to_fileops_page (void); void gui_set_current_instrument (int); void gui_set_current_sample (int); diff -urN soundtracker-0.3.6/app/instrument-editor.c soundtracker-0.3.7/app/instrument-editor.c --- soundtracker-0.3.6/app/instrument-editor.c Wed Oct 6 12:34:59 1999 +++ soundtracker-0.3.7/app/instrument-editor.c Mon Dec 20 17:22:57 1999 @@ -33,6 +33,8 @@ #include "sample-editor.h" #include "tracker.h" #include "gui-settings.h" +#include "module-info.h" +#include "file-operations.h" static GtkWidget *volenv, *panenv, *disableboxes[3]; static GtkWidget *instrument_editor_vibtype_w[4]; @@ -41,8 +43,6 @@ static STInstrument *current_instrument; -GtkWidget *instrument_editor_loadwindow, *instrument_editor_savewindow; - static void instrument_page_volfade_changed (int value) { @@ -146,7 +146,7 @@ // Instead of locking the instrument and samples, we simply stop playing. gui_play_stop(); - f = fopen(fn, "r"); + f = fopen(fn, "rb"); if(f) { xm_load_xi(instr, f); fclose(f); @@ -160,6 +160,35 @@ } static void +instrument_editor_save_instrument (gchar *fn) +{ + STInstrument *instr = current_instrument; + FILE *f; + + g_assert(instr != NULL); + + f = fopen(fn, "wb"); + if(f) { + xm_save_xi(instr, f); + fclose(f); + } else { + error_error(_("Can't open file.")); + } +} + +void +instrument_editor_clear_current_instrument (void) +{ + gui_play_stop(); + + st_clean_instrument(current_instrument, NULL); + + instrument_editor_update(); + sample_editor_update(); + modinfo_update_all(); +} + +static void instrument_editor_file_selected (GtkWidget *w, GtkFileSelection *fs) { @@ -167,11 +196,12 @@ gtk_widget_hide(GTK_WIDGET(fs)); - if(fs == GTK_FILE_SELECTION(instrument_editor_loadwindow)) { + if(fs == GTK_FILE_SELECTION(fileops_dialogs[DIALOG_LOAD_INSTRUMENT])) { file_selection_save_path(fn, gui_settings.loadinstr_path); instrument_editor_load_instrument(fn); } else { - error_warning(_("Saving Instruments not yet supported.")); + file_selection_save_path(fn, gui_settings.saveinstr_path); + instrument_editor_save_instrument(fn); } } @@ -217,22 +247,21 @@ gtk_box_pack_start(GTK_BOX(box), box2, TRUE, TRUE, 0); gtk_widget_show(box2); - instrument_editor_loadwindow = file_selection_create(_("Load Instrument.."), instrument_editor_file_selected); - gtk_file_selection_set_filename(GTK_FILE_SELECTION(instrument_editor_loadwindow), gui_settings.loadinstr_path); - instrument_editor_savewindow = file_selection_create(_("Save Instrument.."), instrument_editor_file_selected); + fileops_dialogs[DIALOG_LOAD_INSTRUMENT] = file_selection_create(_("Load Instrument.."), instrument_editor_file_selected); + gtk_file_selection_set_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_LOAD_INSTRUMENT]), gui_settings.loadinstr_path); + fileops_dialogs[DIALOG_SAVE_INSTRUMENT] = file_selection_create(_("Save Instrument.."), instrument_editor_file_selected); thing = gtk_button_new_with_label(_("Load XI")); gtk_box_pack_start(GTK_BOX(box2), thing, TRUE, TRUE, 0); gtk_widget_show(thing); - gtk_signal_connect_object(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_show), (gpointer)instrument_editor_loadwindow); + gtk_signal_connect(GTK_OBJECT(thing), "clicked", + GTK_SIGNAL_FUNC(fileops_open_dialog), (void*)DIALOG_LOAD_INSTRUMENT); thing = gtk_button_new_with_label(_("Save XI")); gtk_box_pack_start(GTK_BOX(box2), thing, TRUE, TRUE, 0); gtk_widget_show(thing); - gtk_signal_connect_object(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(gtk_widget_show), (gpointer)instrument_editor_savewindow); - gtk_widget_set_sensitive(thing, 0); + gtk_signal_connect(GTK_OBJECT(thing), "clicked", + GTK_SIGNAL_FUNC(fileops_open_dialog), (void*)DIALOG_SAVE_INSTRUMENT); thing = gtk_vseparator_new(); gtk_box_pack_start(GTK_BOX(box), thing, FALSE, TRUE, 0); diff -urN soundtracker-0.3.6/app/instrument-editor.h soundtracker-0.3.7/app/instrument-editor.h --- soundtracker-0.3.6/app/instrument-editor.h Sun Aug 22 18:17:46 1999 +++ soundtracker-0.3.7/app/instrument-editor.h Sun Dec 19 16:27:19 1999 @@ -36,8 +36,6 @@ void instrument_editor_set_instrument (STInstrument *); STInstrument* instrument_editor_get_instrument (void); void instrument_editor_update (void); /* instrument data has changed, redraw */ - -// exported for menubar.c -extern GtkWidget *instrument_editor_loadwindow, *instrument_editor_savewindow; +void instrument_editor_clear_current_instrument (void); #endif /* _INSTRUMENT_EDITOR_H */ diff -urN soundtracker-0.3.6/app/keys.c soundtracker-0.3.7/app/keys.c --- soundtracker-0.3.6/app/keys.c Fri Sep 24 16:05:34 1999 +++ soundtracker-0.3.7/app/keys.c Wed Dec 22 11:52:12 1999 @@ -2,9 +2,9 @@ /* * The Real SoundTracker - X keyboard handling * - * This file involves heavy X hacking. It may not exactly be the incarnation - * of beauty, but it's the solution I've come up with after nearly three - * years of experimentation... + * This file involves heavy X hacking. It may not be beautiful, but + * it's the solution I've come up with after nearly three years of + * experimentation... * * Copyright (C) 1997-1999 Michael Krause * @@ -236,7 +236,7 @@ static void keys_key_group_changed (void *a, - void *b) + void *b) { unsigned n = (int)b; keys_key *kpt; @@ -328,8 +328,8 @@ groups[cw_currentgroup].keys[cw_currentkey].xkeysym = keysym; keys_encode_assignment(string, - groups[cw_currentgroup].keys[cw_currentkey].modifiers, - keysym); + groups[cw_currentgroup].keys[cw_currentkey].modifiers, + keysym); gtk_clist_set_text(GTK_CLIST(cw_clist), cw_currentkey, 1, string); } @@ -614,8 +614,12 @@ // Oh, oh, oh my god... goto is sooo evil :) while(!feof(f)) { - if(!fgets(buf, 256, f)) - goto err; + clearerr(f); + if(!fgets(buf, 256, f)) { + if(ferror(f)) { + goto err; + } else break; + } chop(buf); for(g = 0; g < NUM_KEY_GROUPS; g++) { for(k = groups[g].keys; k->title; k++) { @@ -627,6 +631,8 @@ k->xkeycode = keycode; k->xkeysym = keysym; k->modifiers = mod; + } else { + fprintf(stderr, "*** Can't find key '%s'\n", buf); } goto break2; } @@ -744,7 +750,7 @@ static int keys_qsort_compare_func (const void *string1, - const void *string2) + const void *string2) { const char *s1 = *(char **) string1; const char *s2 = *(char **) string2; diff -urN soundtracker-0.3.6/app/menubar.c soundtracker-0.3.7/app/menubar.c --- soundtracker-0.3.6/app/menubar.c Sun Nov 14 14:54:20 1999 +++ soundtracker-0.3.7/app/menubar.c Sun Dec 19 17:32:31 1999 @@ -36,9 +36,10 @@ #include "effectsconfig.h" #include "gui-settings.h" #include "tips-dialog.h" -#include "instrument-editor.h" #include "transposition.h" #include "cheat-sheet.h" +#include "file-operations.h" +#include "instrument-editor.h" #ifdef USE_GNOME #include @@ -49,13 +50,6 @@ extern ScopeGroup *scopegroup; -static void -menubar_load_save (void **a, - void **b) -{ - gtk_widget_show(GTK_WIDGET(*b)); -} - #ifndef USE_GNOME static GtkWidget *about = NULL; @@ -224,14 +218,14 @@ #ifdef USE_GNOME static GnomeUIInfo file_menu[] = { - { GNOME_APP_UI_ITEM, N_("_Open..."), NULL, menubar_load_save, &gui_loadwindow, NULL, + { GNOME_APP_UI_ITEM, N_("_Open..."), NULL, fileops_open_dialog, (gpointer)DIALOG_LOAD_MOD, NULL, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN, 'O', GDK_CONTROL_MASK, NULL }, - { GNOME_APP_UI_ITEM, N_("Save _as..."), NULL, menubar_load_save, &gui_savewindow, NULL, + { GNOME_APP_UI_ITEM, N_("Save _as..."), NULL, fileops_open_dialog, (gpointer)DIALOG_SAVE_MOD, NULL, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_SAVE_AS, 'A', GDK_CONTROL_MASK, NULL }, GNOMEUIINFO_SEPARATOR, - { GNOME_APP_UI_ITEM, N_("Save Module as _WAV..."), NULL, menubar_load_save, &gui_savewindow_wav, NULL, + { 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 }, GNOMEUIINFO_SEPARATOR, @@ -325,8 +319,15 @@ }; static GnomeUIInfo instrument_menu[] = { - { GNOME_APP_UI_ITEM, N_("_Load XI..."), NULL, menubar_load_save, &instrument_editor_loadwindow, NULL, + { GNOME_APP_UI_ITEM, N_("_Load XI..."), NULL, fileops_open_dialog, (gpointer)DIALOG_LOAD_INSTRUMENT, NULL, GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_OPEN, 0, 0, NULL }, + { GNOME_APP_UI_ITEM, N_("_Save XI..."), NULL, fileops_open_dialog, (gpointer)DIALOG_SAVE_INSTRUMENT, NULL, + GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_SAVE_AS, 0, 0, NULL }, + + GNOMEUIINFO_SEPARATOR, + + { GNOME_APP_UI_ITEM, N_("_Clear Current"), NULL, instrument_editor_clear_current_instrument, NULL, NULL, + GNOME_APP_PIXMAP_STOCK, GNOME_STOCK_MENU_NEW, 0, 0, NULL }, GNOMEUIINFO_SEPARATOR, @@ -411,13 +412,12 @@ #else -/* Hmmm, casting a pointer to a guint isn't quite okay; what's up on 64-bit systems?!? :) */ static GtkItemFactoryEntry menu_items[] = { { N_("/_File"), NULL, NULL, 0, "" }, - { N_("/File/_Open..."), "O", menubar_load_save, (guint)&gui_loadwindow }, - { N_("/File/Save _as..."), "A", menubar_load_save, (guint)&gui_savewindow }, + { N_("/File/_Open..."), "O", fileops_open_dialog, DIALOG_LOAD_MOD }, + { N_("/File/Save _as..."), "A", fileops_open_dialog, DIALOG_SAVE_MOD }, { N_("/File/-"), NULL, NULL, 0, "" }, - { N_("/File/Save Module as _WAV..."), NULL, menubar_load_save, (guint)&gui_savewindow_wav }, + { N_("/File/Save Module as _WAV..."), NULL, fileops_open_dialog, DIALOG_SAVE_MOD_AS_WAV }, { N_("/File/-"), NULL, NULL, 0, "" }, { N_("/File/_Quit"), "Q", menubar_quit_requested, 0 }, { N_("/_Module"), NULL, NULL, 0, "" }, @@ -450,7 +450,10 @@ { N_("/Pattern/C_lear Unused Patterns"), NULL, modinfo_clear_unused_patterns, 0 }, { N_("/Pattern/_Pack Patterns"), NULL, modinfo_pack_patterns, 0 }, { N_("/_Instrument"), NULL, NULL, 0, "" }, - { N_("/Instrument/_Load XI..."), NULL, menubar_load_save, (guint)&instrument_editor_loadwindow }, + { N_("/Instrument/_Load XI..."), NULL, fileops_open_dialog, DIALOG_LOAD_INSTRUMENT }, + { N_("/Instrument/_Save XI..."), NULL, fileops_open_dialog, DIALOG_SAVE_INSTRUMENT }, + { N_("/Instrument/-"), NULL, NULL, 0, "" }, + { N_("/Instrument/_Clear Current"), NULL, instrument_editor_clear_current_instrument, 0 }, { N_("/Instrument/-"), NULL, NULL, 0, "" }, { N_("/Instrument/_Delete Unused Instruments"), NULL, modinfo_delete_unused_instruments, 0 }, { N_("/_Settings"), NULL, NULL, 0, "" }, diff -urN soundtracker-0.3.6/app/playlist.c soundtracker-0.3.7/app/playlist.c --- soundtracker-0.3.6/app/playlist.c Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.7/app/playlist.c Mon Dec 20 20:12:53 1999 @@ -0,0 +1,399 @@ + +/* + * The Real SoundTracker - gtk+ Playlist widget (header) + * + * Copyright (C) 1999 Michael Krause + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include + +#include "i18n.h" + +#include "playlist.h" +#include "gui-subs.h" + +enum { + SIG_CURRENT_POSITION_CHANGED, + SIG_RESTART_POSITION_CHANGED, + SIG_SONG_LENGTH_CHANGED, + SIG_ENTRY_CHANGED, + LAST_SIGNAL +}; + +static guint playlist_signals[LAST_SIGNAL] = { 0 }; + +void +playlist_freeze (Playlist *p) +{ +} + +void +playlist_thaw (Playlist *p) +{ +} + +void +playlist_enable (Playlist *p, + gboolean enable) +{ + gtk_widget_set_sensitive(p->spin_songlength, enable); + gtk_widget_set_sensitive(p->spin_songpat, enable); + gtk_widget_set_sensitive(p->spin_restartpos, enable); + gtk_widget_set_sensitive(p->ibutton, enable); + gtk_widget_set_sensitive(p->dbutton, enable); +} + +void +playlist_set_length (Playlist *p, int length) +{ + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songlength), length); +} + +int +playlist_get_length (Playlist *p) +{ + return p->length; +} + +void +playlist_set_nth_pattern (Playlist *p, + int pos, + int pat) +{ + g_assert(pos >= 0 && pos < p->length); + g_assert(pat >= p->min_pattern && pat <= p->max_pattern); + + p->patterns[pos] = pat; +} + +int +playlist_get_nth_pattern (Playlist *p, + int pos) +{ + g_assert(pos >= 0 && pos < p->length); + + return p->patterns[pos]; +} + +void +playlist_set_position (Playlist *p, + int pos) +{ + g_assert(pos >= 0 && pos < p->length); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songpos), pos); +} + +int +playlist_get_position (Playlist *p) +{ + return p->current_position; +} + +void +playlist_set_restart_position (Playlist *p, + int pos) +{ + g_assert(pos >= 0 && pos < p->length); + + p->restart_position = pos; +} + +int +playlist_get_restart_position (Playlist *p) +{ + return p->restart_position; +} + +static void +playlist_songpos_changed (GtkSpinButton *spin, + Playlist *p) +{ + int newpos, pat; + + g_assert(IS_PLAYLIST(p)); + + newpos = gtk_spin_button_get_value_as_int(spin); + + if(newpos == p->current_position) + return; + + p->current_position = newpos; + + pat = p->patterns[newpos]; + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songpat), pat); + + gtk_signal_emit(GTK_OBJECT(p), + playlist_signals[SIG_CURRENT_POSITION_CHANGED], + newpos); +} + +static void +playlist_songlength_changed (GtkSpinButton *spin, + Playlist *p) +{ + int i, newlen; + + g_assert(IS_PLAYLIST(p)); + + newlen = gtk_spin_button_get_value_as_int(spin); + + gui_update_spin_adjustment(GTK_SPIN_BUTTON(p->spin_songpos), 0, newlen - 1); + + if(newlen == p->length) + return; + + if(newlen > p->alloc_length) { + p->patterns = g_renew(int, p->patterns, newlen); + p->alloc_length = newlen; + } + + if(newlen > p->length) { + for(i = p->length; i < newlen; i++) { + p->patterns[i] = p->patterns[p->length - 1]; + } + } + + p->length = newlen; + + gtk_signal_emit(GTK_OBJECT(p), + playlist_signals[SIG_SONG_LENGTH_CHANGED], + p->length); +} + +static void +playlist_songpat_changed (GtkSpinButton *spin, + Playlist *p) +{ + int n = gtk_spin_button_get_value_as_int(spin); + + g_assert(IS_PLAYLIST(p)); + + p->patterns[p->current_position] = n; + + gtk_signal_emit(GTK_OBJECT(p), + playlist_signals[SIG_ENTRY_CHANGED], + p->current_position, n); +} + +static void +playlist_restartpos_changed (GtkSpinButton *spin, + Playlist *p) +{ + g_assert(IS_PLAYLIST(p)); + + p->restart_position = gtk_spin_button_get_value_as_int(spin); + + gtk_signal_emit(GTK_OBJECT(p), + playlist_signals[SIG_RESTART_POSITION_CHANGED], + p->restart_position); +} + +static void +playlist_insert_clicked (GtkWidget *w, + Playlist *p) +{ + int pos; + + g_assert(IS_PLAYLIST(p)); + + if(p->length == p->max_length) + return; + + p->length++; + if(p->length > p->alloc_length) { + p->patterns = g_renew(int, p->patterns, p->length); + p->alloc_length = p->length; + } + + pos = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(p->spin_songpos)); + memmove(&p->patterns[pos + 1], &p->patterns[pos], (p->length - pos - 1) * sizeof(int)); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songlength), p->length); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songpat), p->patterns[pos]); +} + +static void +playlist_delete_clicked (GtkWidget *w, + Playlist *p) +{ + int pos; + + g_assert(IS_PLAYLIST(p)); + + if(p->length == 1) + return; + + p->length--; + + pos = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(p->spin_songpos)); + memmove(&p->patterns[pos], &p->patterns[pos + 1], (p->length - pos) * sizeof(int)); + + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songlength), p->length); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(p->spin_songpat), p->patterns[pos]); +} + + +GtkWidget * +playlist_new (void) +{ + Playlist *p; + GtkWidget *vbox, *hbox, *thing; + + p = gtk_type_new(playlist_get_type()); + GTK_BOX(p)->spacing = 2; + GTK_BOX(p)->homogeneous = FALSE; + + vbox = GTK_WIDGET(p); + + gui_put_labelled_spin_button(vbox, _("Song length"), 1, p->max_length, &p->spin_songlength, playlist_songlength_changed, p); + gui_put_labelled_spin_button(vbox, _("Current pos"), 0, p->length - 1, &p->spin_songpos, playlist_songpos_changed, p); + gui_put_labelled_spin_button(vbox, _("Pattern"), p->min_pattern, p->max_pattern, &p->spin_songpat, playlist_songpat_changed, p); + gui_put_labelled_spin_button(vbox, _("Restart pos"), 0, p->length - 1, &p->spin_restartpos, playlist_restartpos_changed, p); + + hbox = gtk_hbox_new(TRUE, 4); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); + gtk_widget_show(hbox); + + p->ibutton = thing = gtk_button_new_with_label(_("Insert")); + gtk_box_pack_start(GTK_BOX(hbox), thing, TRUE, TRUE, 0); + gtk_widget_show(thing); + gtk_signal_connect(GTK_OBJECT(thing), "clicked", + GTK_SIGNAL_FUNC(playlist_insert_clicked), p); + + p->dbutton = thing = gtk_button_new_with_label(_("Delete")); + gtk_box_pack_start(GTK_BOX(hbox), thing, TRUE, TRUE, 0); + gtk_widget_show(thing); + gtk_signal_connect(GTK_OBJECT(thing), "clicked", + GTK_SIGNAL_FUNC(playlist_delete_clicked), p); + + return GTK_WIDGET(p); +} + +/* --- gtk+ object initialization crap --- */ + +static void +my_1int_marshal (GtkObject *object, + GtkSignalFunc func, + gpointer func_data, + GtkArg *args) +{ + typedef void (*my_1int_marshal_func) (Playlist *, int); + + my_1int_marshal_func rfunc = (my_1int_marshal_func) func; + (*rfunc) (PLAYLIST(object), + GTK_VALUE_INT(args[0])); +} + +static void +my_2int_marshal (GtkObject *object, + GtkSignalFunc func, + gpointer func_data, + GtkArg *args) +{ + typedef void (*my_2int_marshal_func) (Playlist *, int, int); + + my_2int_marshal_func rfunc = (my_2int_marshal_func) func; + (*rfunc) (PLAYLIST(object), + GTK_VALUE_INT(args[0]), + GTK_VALUE_INT(args[1])); +} + +static void +playlist_class_init (PlaylistClass *class) +{ + GtkObjectClass *object_class; + + object_class = (GtkObjectClass*) class; + + playlist_signals[SIG_CURRENT_POSITION_CHANGED] = gtk_signal_new ("current_position_changed", + GTK_RUN_FIRST, + object_class->type, + GTK_SIGNAL_OFFSET(PlaylistClass, current_position_changed), + my_1int_marshal, + GTK_TYPE_NONE, 1, + GTK_TYPE_INT); + playlist_signals[SIG_RESTART_POSITION_CHANGED] = gtk_signal_new ("restart_position_changed", + GTK_RUN_FIRST, + object_class->type, + GTK_SIGNAL_OFFSET(PlaylistClass, restart_position_changed), + my_1int_marshal, + GTK_TYPE_NONE, 1, + GTK_TYPE_INT); + playlist_signals[SIG_SONG_LENGTH_CHANGED] = gtk_signal_new ("song_length_changed", + GTK_RUN_FIRST, + object_class->type, + GTK_SIGNAL_OFFSET(PlaylistClass, song_length_changed), + my_1int_marshal, + GTK_TYPE_NONE, 1, + GTK_TYPE_INT); + playlist_signals[SIG_ENTRY_CHANGED] = gtk_signal_new ("entry_changed", + GTK_RUN_FIRST, + object_class->type, + GTK_SIGNAL_OFFSET(PlaylistClass, entry_changed), + my_2int_marshal, + GTK_TYPE_NONE, 2, + GTK_TYPE_INT, + GTK_TYPE_INT); + + gtk_object_class_add_signals(object_class, playlist_signals, LAST_SIGNAL); + + class->current_position_changed = NULL; + class->restart_position_changed = NULL; + class->song_length_changed = NULL; + class->entry_changed = NULL; +} + +static void +playlist_init (Playlist *p) +{ + // These presets should probably be configurable via the interface + p->max_length = 256; + p->min_pattern = 0; + p->max_pattern = 255; + + // A reasonable default playlist + p->length = 1; + p->alloc_length = 1; + p->patterns = g_new0(int, p->alloc_length); + p->current_position = 0; + p->restart_position = 0; +} + +guint +playlist_get_type() +{ + static guint playlist_type = 0; + + if (!playlist_type) { + GtkTypeInfo playlist_info = + { + "Playlist", + sizeof(Playlist), + sizeof(PlaylistClass), + (GtkClassInitFunc) playlist_class_init, + (GtkObjectInitFunc) playlist_init, + (GtkArgSetFunc) NULL, + (GtkArgGetFunc) NULL, + }; + + playlist_type = gtk_type_unique (gtk_vbox_get_type (), &playlist_info); + } + + return playlist_type; +} + diff -urN soundtracker-0.3.6/app/playlist.h soundtracker-0.3.7/app/playlist.h --- soundtracker-0.3.6/app/playlist.h Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.7/app/playlist.h Mon Dec 20 19:52:35 1999 @@ -0,0 +1,83 @@ + +/* + * The Real SoundTracker - gtk+ Playlist widget (header) + * + * Copyright (C) 1999 Michael Krause + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef _PLAYLIST_H +#define _PLAYLIST_H + +#include +#include + +#define PLAYLIST(obj) GTK_CHECK_CAST (obj, playlist_get_type (), Playlist) +#define PLAYLIST_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, playlist_get_type (), PlaylistClass) +#define IS_PLAYLIST(obj) GTK_CHECK_TYPE (obj, playlist_get_type ()) + +typedef struct _Playlist Playlist; +typedef struct _PlaylistClass PlaylistClass; + +struct _Playlist +{ + GtkVBox widget; + + GtkWidget *spin_songlength, *spin_songpos, *spin_songpat, *spin_restartpos; + GtkWidget *ibutton, *dbutton; + + int max_length; + int min_pattern; + int max_pattern; + + int length; + int alloc_length; + int *patterns; + + int current_position; + int restart_position; +}; + +struct _PlaylistClass +{ + GtkVBoxClass parent_class; + + void (*current_position_changed) (Playlist *p, int pos); + void (*restart_position_changed) (Playlist *p, int pos); + void (*song_length_changed) (Playlist *p, int length); + void (*entry_changed) (Playlist *p, int pos, int pat); +}; + +guint playlist_get_type (void); +GtkWidget * playlist_new (void); + +void playlist_freeze (Playlist *p); +void playlist_thaw (Playlist *p); +void playlist_enable (Playlist *p, gboolean enable); + +void playlist_set_length (Playlist *p, int length); +int playlist_get_length (Playlist *p); + +void playlist_set_nth_pattern (Playlist *p, int pos, int pat); +int playlist_get_nth_pattern (Playlist *p, int pos); + +void playlist_set_position (Playlist *p, int pos); +int playlist_get_position (Playlist *p); + +void playlist_set_restart_position (Playlist *p, int pos); +int playlist_get_restart_position (Playlist *p); + +#endif /* _PLAYLIST_H */ diff -urN soundtracker-0.3.6/app/sample-display.c soundtracker-0.3.7/app/sample-display.c --- soundtracker-0.3.6/app/sample-display.c Thu Sep 9 19:34:30 1999 +++ soundtracker-0.3.7/app/sample-display.c Mon Dec 20 18:27:29 1999 @@ -847,6 +847,7 @@ class->selection_changed = NULL; class->loop_changed = NULL; + class->window_changed = NULL; for(n = 0, p = default_colors, c = class->colors; n < SAMPLE_DISPLAYCOL_LAST; n++, c++) { c->red = *p++ * 65535 / 255; diff -urN soundtracker-0.3.6/app/sample-editor.c soundtracker-0.3.7/app/sample-editor.c --- soundtracker-0.3.6/app/sample-editor.c Sun Sep 26 12:26:05 1999 +++ soundtracker-0.3.7/app/sample-editor.c Sun Dec 19 17:29:49 1999 @@ -55,13 +55,15 @@ #include "time-buffer.h" #include "audio.h" #include "mixer.h" +#include "module-info.h" +#include "file-operations.h" // == GUI variables static STSample *current_sample = NULL; static GtkWidget *spin_volume, *spin_panning, *spin_finetune, *spin_relnote; -static GtkWidget *loadwindow, *savewindow, *savebutton; +static GtkWidget *savebutton; static SampleDisplay *sampledisplay; static GtkWidget *sample_editor_hscrollbar; static GtkWidget *loopradio[3], *resolution_radio[2]; @@ -121,7 +123,6 @@ static void sample_editor_zoom_out_clicked(void); static void sample_editor_loopradio_changed(void); static void sample_editor_resolution_changed(void); -static void sample_editor_load_save_clicked(GtkWidget *widget, GtkWidget *fs); static void sample_editor_monitor_clicked(void); static void sample_editor_cut_clicked(void); static void sample_editor_remove_clicked(void); @@ -151,13 +152,6 @@ g_mutex_unlock(current_sample->sample.lock); } -static void -sample_editor_load_save_clicked (GtkWidget *widget, - GtkWidget *fs) -{ - gtk_widget_show(fs); -} - void sample_editor_page_create (GtkNotebook *nb) { @@ -252,13 +246,13 @@ gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 0); #ifndef NO_AUDIOFILE - loadwindow = file_selection_create(_("Load Sample.."), sample_editor_load_wav); - savewindow = file_selection_create(_("Save WAV.."), sample_editor_save_wav); + fileops_dialogs[DIALOG_LOAD_SAMPLE] = file_selection_create(_("Load Sample.."), sample_editor_load_wav); + fileops_dialogs[DIALOG_SAVE_SAMPLE] = file_selection_create(_("Save WAV.."), sample_editor_save_wav); #endif thing = gtk_button_new_with_label(_("Load Sample")); gtk_signal_connect(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(sample_editor_load_save_clicked), loadwindow); + GTK_SIGNAL_FUNC(fileops_open_dialog), (void*)DIALOG_LOAD_SAMPLE); gtk_box_pack_start(GTK_BOX(vbox), thing, TRUE, TRUE, 0); gtk_widget_show(thing); #ifdef NO_AUDIOFILE @@ -267,7 +261,7 @@ thing = gtk_button_new_with_label(_("Save WAV")); gtk_signal_connect(GTK_OBJECT(thing), "clicked", - GTK_SIGNAL_FUNC(sample_editor_load_save_clicked), savewindow); + GTK_SIGNAL_FUNC(fileops_open_dialog), (void*)DIALOG_SAVE_SAMPLE); gtk_box_pack_start(GTK_BOX(vbox), thing, TRUE, TRUE, 0); gtk_widget_show(thing); savebutton = thing; @@ -427,7 +421,7 @@ gtk_widget_set_sensitive(box_loop, 0); gtk_widget_set_sensitive(box_params, 0); gtk_widget_set_sensitive(box_sel, 0); - gtk_widget_hide(savewindow); + gtk_widget_hide(fileops_dialogs[DIALOG_SAVE_SAMPLE]); gtk_widget_set_sensitive(savebutton, 0); sample_display_set_data_16(sampledisplay, NULL, 0, FALSE); return; @@ -762,14 +756,16 @@ st_clean_sample(current_sample, NULL); instr = instrument_editor_get_instrument(); - if(st_instrument_num_samples(instr) == 0) - st_clean_instrument(instr, NULL); + if(st_instrument_num_samples(instr) == 0) { + instrument_editor_clear_current_instrument(); + } else { + instrument_editor_update(); + sample_editor_update(); + modinfo_update_all(); + } sample_editor_unlock_sample(); - instrument_editor_update(); - sample_editor_update(); - xm_set_modified(1); } @@ -1017,7 +1013,7 @@ static void sample_editor_load_wav (void) { - const gchar *fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION(loadwindow)); + const gchar *fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_LOAD_SAMPLE])); void *sbuf; const char *samplename; AFfilehandle file; @@ -1025,7 +1021,7 @@ int sampleFormat, sampleWidth, channelCount; int len; - gtk_widget_hide(loadwindow); + gtk_widget_hide(fileops_dialogs[DIALOG_LOAD_SAMPLE]); g_return_if_fail(current_sample != NULL); @@ -1102,12 +1098,12 @@ AFfilehandle outfile; AFfilesetup outfilesetup; - gtk_widget_hide(savewindow); + gtk_widget_hide(fileops_dialogs[DIALOG_SAVE_SAMPLE]); g_return_if_fail(current_sample != NULL); g_return_if_fail(current_sample->sample.data != NULL); - fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION(savewindow)); + fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION(fileops_dialogs[DIALOG_SAVE_SAMPLE])); outfilesetup = afNewFileSetup(); afInitFileFormat(outfilesetup, AF_FILE_WAVE); diff -urN soundtracker-0.3.6/app/track-editor.c soundtracker-0.3.7/app/track-editor.c --- soundtracker-0.3.6/app/track-editor.c Sat Oct 30 18:44:28 1999 +++ soundtracker-0.3.7/app/track-editor.c Wed Dec 22 11:40:38 1999 @@ -123,7 +123,7 @@ note_running[i] = -1; } - gtk_notebook_append_page(nb, vbox, gtk_label_new("Tracker")); + gtk_notebook_append_page(nb, vbox, gtk_label_new(_("Tracker"))); gtk_container_border_width(GTK_CONTAINER(vbox), 10); memset(&block_buffer, 0, sizeof(block_buffer)); diff -urN soundtracker-0.3.6/app/tracker.c soundtracker-0.3.7/app/tracker.c --- soundtracker-0.3.6/app/tracker.c Sat Sep 25 17:16:46 1999 +++ soundtracker-0.3.7/app/tracker.c Wed Dec 22 12:16:48 1999 @@ -101,7 +101,8 @@ } } -void tracker_redraw(Tracker *t) +void +tracker_redraw (Tracker *t) { t->oldpos = OLDPOS_MAGIC_REDRAW; gtk_widget_queue_draw(GTK_WIDGET(t)); @@ -121,7 +122,9 @@ tracker_redraw_row(t, t->patpos); } -void tracker_set_pattern(Tracker *t, XMPattern *pattern) +void +tracker_set_pattern (Tracker *t, + XMPattern *pattern) { g_return_if_fail(t != NULL); @@ -137,7 +140,9 @@ } } -void tracker_set_backing_store(Tracker *t, int on) +void +tracker_set_backing_store (Tracker *t, + int on) { GtkWidget *widget; @@ -165,7 +170,9 @@ } } -void tracker_set_xpanning(Tracker *t, int left_channel) +void +tracker_set_xpanning (Tracker *t, + int left_channel) { GtkWidget *widget; @@ -189,7 +196,8 @@ } } -static void adjust_xpanning(Tracker *t) +static void +adjust_xpanning (Tracker *t) { if(t->cursor_ch < t->leftchan) tracker_set_xpanning(t, t->cursor_ch); @@ -199,7 +207,9 @@ tracker_set_xpanning(t, t->num_channels - t->disp_numchans); } -void tracker_step_cursor_item(Tracker *t, int direction) +void +tracker_step_cursor_item (Tracker *t, + int direction) { g_return_if_fail(direction == -1 || direction == 1); @@ -213,7 +223,9 @@ } } -void tracker_step_cursor_channel(Tracker *t, int direction) +void +tracker_step_cursor_channel (Tracker *t, + int direction) { t->cursor_ch += direction; @@ -240,16 +252,19 @@ } static void -tracker_fixup_digit (char *d) -{ - if(*d >= 10) - *d += 'a' - '9' - 1; - *d += '0'; -} - -static void note2string(XMNote *note, char *buf) +note2string (XMNote *note, + char *buf) { const char *b; + static const char hexmapU[] = { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', + 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' + }; + static const char hexmapL[] = { + '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', + 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' + }; + const char *hexmap = gui_settings.tracker_upcase ? hexmapU : hexmapL; if(note->note > 0 && note->note < 97) { b = notenames[note->note-1]; @@ -259,24 +274,34 @@ b = "---"; } - sprintf(buf, "%s %02x %c%02x ", - b, note->volume, - note->fxtype >= 10 ? note->fxtype + 'a' - 10 : note->fxtype + '0', - note->fxparam); + buf[0] = b[0]; + buf[1] = b[1]; + buf[2] = b[2]; if(gui_settings.tracker_hexmode) { - buf[4] = note->instrument / 16; - buf[5] = note->instrument % 16; + buf[3] = ' '; + buf[4] = hexmap[note->instrument / 16]; + buf[5] = hexmap[note->instrument & 15]; } else { - buf[5] = note->instrument % 10; - buf[4] = (note->instrument / 10) % 10; if(note->instrument >= 100) { - buf[3] = note->instrument / 100; - tracker_fixup_digit(buf + 3); + buf[3] = '1'; + } else { + buf[3] = ' '; } + buf[4] = ((note->instrument / 10) % 10) + '0'; + buf[5] = (note->instrument % 10) + '0'; } - tracker_fixup_digit(buf + 4); - tracker_fixup_digit(buf + 5); + + buf[6] = ' '; + buf[7] = hexmap[note->volume / 16]; + buf[8] = hexmap[note->volume & 15]; + buf[9] = ' '; + buf[10] = hexmap[note->fxtype]; + buf[11] = hexmap[note->fxparam / 16]; + buf[12] = hexmap[note->fxparam & 15]; + buf[13] = ' '; + buf[14] = ' '; + buf[15] = 0; } static void @@ -321,7 +346,13 @@ gdk_draw_string(win, t->font, t->notes_gc, t->disp_startx, y, buf); } -static void print_notes_and_bars(GtkWidget *widget, GdkDrawable *win, int x, int y, int w, int h) +static void +print_notes_and_bars (GtkWidget *widget, + GdkDrawable *win, + int x, + int y, + int w, + int h) { int scry; int n, n1, n2; @@ -364,7 +395,9 @@ } } -static void print_channel_numbers(GtkWidget *widget, GdkDrawable *win) +static void +print_channel_numbers (GtkWidget *widget, + GdkDrawable *win) { int x, y, i; char buf[4]; @@ -380,7 +413,9 @@ } } -static void print_cursor(GtkWidget *widget, GdkDrawable *win) +static void +print_cursor (GtkWidget *widget, + GdkDrawable *win) { int x, y, width; Tracker *t = TRACKER(widget); @@ -428,7 +463,9 @@ gdk_draw_rectangle(win, t->misc_gc, FALSE, x, y, width * t->fontw, t->fonth - 1); } -static void tracker_draw(GtkWidget *widget, GdkRectangle *area) +static void +tracker_draw (GtkWidget *widget, + GdkRectangle *area) { Tracker *t; int dist, absdist; @@ -498,7 +535,9 @@ } } -static gint tracker_expose(GtkWidget *widget, GdkEventExpose *event) +static gint +tracker_expose (GtkWidget *widget, + GdkEventExpose *event) { Tracker *t = TRACKER(widget); int ytemp; @@ -532,14 +571,19 @@ return FALSE; } -static void tracker_size_request(GtkWidget *widget, GtkRequisition *requisition) +static void +tracker_size_request (GtkWidget *widget, + GtkRequisition *requisition) { Tracker *t = TRACKER(widget); requisition->width = 15 * t->fontw + 3*t->fontw + 10; requisition->height = 11*t->fonth; } -static void init_display(Tracker *t, int width, int height) +static void +init_display (Tracker *t, + int width, + int height) { GtkWidget *widget = GTK_WIDGET(t); int u; @@ -580,7 +624,9 @@ } } -static void tracker_size_allocate(GtkWidget *widget, GtkAllocation *allocation) +static void +tracker_size_allocate (GtkWidget *widget, + GtkAllocation *allocation) { Tracker *t; @@ -600,7 +646,8 @@ } } -void tracker_reset(Tracker *t) +void +tracker_reset (Tracker *t) { GtkWidget *widget; @@ -619,7 +666,8 @@ } } -static void init_colors(GtkWidget *widget) +static void +init_colors (GtkWidget *widget) { int n; const int *p; @@ -634,7 +682,8 @@ } } -static void tracker_realize(GtkWidget *widget) +static void +tracker_realize (GtkWidget *widget) { GdkWindowAttr attributes; gint attributes_mask; @@ -682,7 +731,12 @@ gdk_window_set_background(widget->window, &t->colors[TRACKERCOL_BG]); } -static void my_3ints_marshal(GtkObject *object, GtkSignalFunc func, gpointer func_data, GtkArg *args) { +static void +my_3ints_marshal (GtkObject *object, + GtkSignalFunc func, + gpointer func_data, + GtkArg *args) +{ typedef void (*my_3ints_marshal_func)(Tracker *, int, int, int); my_3ints_marshal_func rfunc = (my_3ints_marshal_func) func; (*rfunc) (TRACKER(object), @@ -691,7 +745,8 @@ GTK_VALUE_INT(args[2])); } -static void tracker_class_init(TrackerClass *class) +static void +tracker_class_init (TrackerClass *class) { GtkObjectClass *object_class; GtkWidgetClass *widget_class; @@ -730,7 +785,8 @@ class->xpanning = NULL; } -static void tracker_init(Tracker *t) +static void +tracker_init (Tracker *t) { t->font = gdk_font_load(XFONTNAME); t->fonth = t->font->ascent + t->font->descent; @@ -744,7 +800,8 @@ t->cursor_item = 0; } -guint tracker_get_type() +guint +tracker_get_type (void) { static guint tracker_type = 0; @@ -766,7 +823,8 @@ return tracker_type; } -GtkWidget* tracker_new() +GtkWidget* +tracker_new (void) { return GTK_WIDGET(gtk_type_new(tracker_get_type())); } diff -urN soundtracker-0.3.6/app/xm.c soundtracker-0.3.7/app/xm.c --- soundtracker-0.3.6/app/xm.c Thu Aug 12 20:05:58 1999 +++ soundtracker-0.3.7/app/xm.c Sat Nov 20 16:08:02 1999 @@ -474,7 +474,7 @@ } fread(a, 1, 22, f); - strncpy(instr->name, a + 4, 22); + strncpy(instr->name, a, 22); recode_ibmpc_to_latin1(instr->name, 22); fread(a, 1, 23, f); @@ -486,7 +486,9 @@ fread(instr->samplemap, 1, 96, f); fread(instr->vol_env.points, 1, 48, f); + byteswap_16_array((gint16*)instr->vol_env.points, 24); fread(instr->pan_env.points, 1, 48, f); + byteswap_16_array((gint16*)instr->pan_env.points, 24); fread(b, 1, 16, f); instr->vol_env.num_points = b[0]; @@ -523,59 +525,112 @@ return 1; } +gboolean +xm_save_xi (STInstrument *instr, + FILE *f) +{ + guint8 a[48]; + int num_samples; + + num_samples = st_instrument_num_save_samples(instr); + + fwrite("Extended Instrument: ", 1, 21, f); + + strncpy(a, instr->name, 22); + recode_latin1_to_ibmpc(a, 22); + fwrite(a, 1, 22, f); + + a[0] = 0x1a; + memcpy(a + 1, "rst's SoundTracker ", 20); + put_le_16(a + 21, 0x0102); + fwrite(a, 1, 23, f); + + fwrite(instr->samplemap, 1, 96, f); + memcpy(a, instr->vol_env.points, 48); + byteswap_16_array((gint16*)a, 24); + fwrite(a, 1, 48, f); + memcpy(a, instr->pan_env.points, 48); + byteswap_16_array((gint16*)a, 24); + fwrite(a, 1, 48, f); + + a[0] = instr->vol_env.num_points; + a[2] = instr->vol_env.sustain_point; + a[3] = instr->vol_env.loop_start; + a[4] = instr->vol_env.loop_end; + a[8] = instr->vol_env.flags; + a[1] = instr->pan_env.num_points; + a[5] = instr->pan_env.sustain_point; + a[6] = instr->pan_env.loop_start; + a[7] = instr->pan_env.loop_end; + a[9] = instr->pan_env.flags; + a[10] = instr->vibtype; + a[13] = instr->vibrate; + a[12] = instr->vibdepth; + a[11] = instr->vibsweep; + put_le_16(a + 14, instr->volfade); + fwrite(a, 1, 16, f); + + memset(a, 0, 24); + put_le_16(a + 22, num_samples); + fwrite(a, 1, 24, f); + + xm_save_xm_samples(instr->samples, f, num_samples); + + return TRUE; +} + static void xm_save_xm_instrument (STInstrument *instr, FILE *f) { - guint8 header[29]; - guint8 b[38]; + guint8 h[38]; int num_samples; num_samples = st_instrument_num_save_samples(instr); - memset(header, 0, sizeof(header)); - strncpy(header + 4, instr->name, 22); - recode_latin1_to_ibmpc(header + 4, 22); - header[27] = num_samples; + memset(h, 0, sizeof(h)); + strncpy(h + 4, instr->name, 22); + recode_latin1_to_ibmpc(h + 4, 22); + h[27] = num_samples; if(num_samples == 0) { - header[0] = 33; - header[1] = 0; - fwrite(header, 1, 29, f); - put_le_32(header, 40); - fwrite(header, 1, 4, f); + h[0] = 33; + h[1] = 0; + fwrite(h, 1, 29, f); + put_le_32(h, 40); + fwrite(h, 1, 4, f); return; } - put_le_16(header + 0, 263); - fwrite(header, 1, 29, f); - put_le_32(header, 40); - fwrite(header, 1, 4, f); + put_le_16(h + 0, 263); + fwrite(h, 1, 29, f); + put_le_32(h, 40); + fwrite(h, 1, 4, f); fwrite(instr->samplemap, 1, 96, f); fwrite(instr->vol_env.points, 1, 48, f); fwrite(instr->pan_env.points, 1, 48, f); - memset(&b, 0, sizeof(b)); - b[0] = instr->vol_env.num_points; - b[2] = instr->vol_env.sustain_point; - b[3] = instr->vol_env.loop_start; - b[4] = instr->vol_env.loop_end; - b[8] = instr->vol_env.flags; - b[1] = instr->pan_env.num_points; - b[5] = instr->pan_env.sustain_point; - b[6] = instr->pan_env.loop_start; - b[7] = instr->pan_env.loop_end; - b[9] = instr->pan_env.flags; - - b[10] = instr->vibtype; - b[13] = instr->vibrate; - b[12] = instr->vibdepth; - b[11] = instr->vibsweep; + memset(&h, 0, 38); + h[0] = instr->vol_env.num_points; + h[2] = instr->vol_env.sustain_point; + h[3] = instr->vol_env.loop_start; + h[4] = instr->vol_env.loop_end; + h[8] = instr->vol_env.flags; + h[1] = instr->pan_env.num_points; + h[5] = instr->pan_env.sustain_point; + h[6] = instr->pan_env.loop_start; + h[7] = instr->pan_env.loop_end; + h[9] = instr->pan_env.flags; + + h[10] = instr->vibtype; + h[13] = instr->vibrate; + h[12] = instr->vibdepth; + h[11] = instr->vibsweep; - b[14] = instr->volfade; + put_le_16(h + 14, instr->volfade); - fwrite(&b, 1, sizeof(b), f); + fwrite(&h, 1, 38, f); xm_save_xm_samples(instr->samples, f, num_samples); } diff -urN soundtracker-0.3.6/app/xm.h soundtracker-0.3.7/app/xm.h --- soundtracker-0.3.6/app/xm.h Fri Aug 13 20:44:51 1999 +++ soundtracker-0.3.7/app/xm.h Sat Nov 20 15:54:19 1999 @@ -69,8 +69,8 @@ #define ST_MAX_ENVELOPE_POINTS 12 typedef struct STEnvelopePoint { - short pos; - short val; + guint16 pos; + guint16 val; } STEnvelopePoint; typedef struct STEnvelope { @@ -128,6 +128,8 @@ void XM_Free (XM*); gboolean xm_load_xi (STInstrument *instr, + FILE *f); +gboolean xm_save_xi (STInstrument *instr, FILE *f); static inline int diff -urN soundtracker-0.3.6/configure soundtracker-0.3.7/configure --- soundtracker-0.3.6/configure Sat Oct 30 19:09:51 1999 +++ soundtracker-0.3.7/configure Wed Dec 22 12:28:40 1999 @@ -722,7 +722,7 @@ PACKAGE=soundtracker -VERSION=0.3.6 +VERSION=0.3.7 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; } @@ -1342,7 +1342,7 @@ fi -ALL_LINGUAS="de es it pl ja" +ALL_LINGUAS="de es it pl ja ru" echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 echo "configure:1348: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && diff -urN soundtracker-0.3.6/configure.in soundtracker-0.3.7/configure.in --- soundtracker-0.3.6/configure.in Sat Oct 30 19:09:48 1999 +++ soundtracker-0.3.7/configure.in Wed Dec 22 12:26:55 1999 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(app/endian-conv.h) -AM_INIT_AUTOMAKE(soundtracker, 0.3.6) +AM_INIT_AUTOMAKE(soundtracker, 0.3.7) AM_CONFIG_HEADER(config.h) dnl ----------------------------------------------------------------------- @@ -36,7 +36,7 @@ dnl ----------------------------------------------------------------------- dnl Also add new catalogs to soundtracker.spec (%build)! -ALL_LINGUAS="de es it pl ja" +ALL_LINGUAS="de es it pl ja ru" AM_GNU_GETTEXT dnl ----------------------------------------------------------------------- diff -urN soundtracker-0.3.6/po/POTFILES.in soundtracker-0.3.7/po/POTFILES.in --- soundtracker-0.3.6/po/POTFILES.in Sat Nov 13 14:36:29 1999 +++ soundtracker-0.3.7/po/POTFILES.in Sat Dec 18 22:01:51 1999 @@ -11,6 +11,7 @@ app/envelope-box.c app/errors.c app/extspinbutton.c +app/file-operations.c app/gui-settings.c app/gui-subs.c app/gui.c diff -urN soundtracker-0.3.6/po/cat-id-tbl.c soundtracker-0.3.7/po/cat-id-tbl.c --- soundtracker-0.3.6/po/cat-id-tbl.c Sun Nov 14 15:19:15 1999 +++ soundtracker-0.3.7/po/cat-id-tbl.c Wed Dec 22 12:15:10 1999 @@ -66,311 +66,320 @@ {"Loop", 38}, {"Start", 39}, {"End", 40}, - {"Scopes Frequency", 41}, - {"Tracker Frequency", 42}, - {"GUI Configuration", 43}, - {"Use Hexadecimal Numbers", 44}, - {"Advance Cursor in FX Columns", 45}, - {"Use anti-aliased envelope editor", 46}, - {"You need to restart SoundTracker for this change to come into effect.", 47}, - {"Scopes buffer size [MB]", 48}, - {"Highlight rows:", 49}, - {"`Save XM' saves all non-empty patterns", 50}, - {"Question", 51}, - {"Cancel", 52}, - {"Warning", 53}, - {"Error!", 54}, - {"Tempo", 55}, + {"Load Module", 41}, + {"Save Module", 42}, + {"Render WAV", 43}, + {"Load Sample", 44}, + {"Save Sample", 45}, + {"Load Instrument", 46}, + {"Save Instrument", 47}, + {"File", 48}, + {"Scopes Frequency", 49}, + {"Tracker Frequency", 50}, + {"GUI Configuration", 51}, + {"Use Hexadecimal Numbers", 52}, + {"Use upper case letters for hex numbers", 53}, + {"Advance Cursor in FX Columns", 54}, + {"Use anti-aliased envelope editor", 55}, + {"You need to restart SoundTracker for this change to come into effect.", 56}, + {"Scopes buffer size [MB]", 57}, + {"Highlight rows:", 58}, + {"`Save XM' saves all non-empty patterns", 59}, + {"Question", 60}, + {"Cancel", 61}, + {"Warning", 62}, + {"Error!", 63}, + {"Tempo", 64}, {"\ Are you sure you want to free the current project?\n\ -All changes will be lost!", 56}, - {"Are you sure you want to overwrite the file?", 57}, - {"Song length", 58}, - {"Current pos", 59}, - {"Pattern", 60}, - {"Restart pos", 61}, - {"Load XM...", 62}, - {"Save XM...", 63}, - {"Render module as WAV...", 64}, - {"Play Song", 65}, - {"Play Pattern", 66}, - {"Stop", 67}, - {"Number of Channels:", 68}, - {"PatLength", 69}, - {"Octave", 70}, - {"Jump", 71}, - {"Instr", 72}, - {"Sample", 73}, - {"VolFade", 74}, - {"VibSpeed", 75}, - {"VibDepth", 76}, - {"VibSweep", 77}, - {"Can't open file.", 78}, - {"Saving Instruments not yet supported.", 79}, - {"Sine", 80}, - {"Square", 81}, - {"Saw Down", 82}, - {"Saw Up", 83}, - {"Instrument Editor", 84}, - {"Volume envelope", 85}, - {"Panning envelope", 86}, - {"Load Instrument..", 87}, - {"Save Instrument..", 88}, - {"Load XI", 89}, - {"Save XI", 90}, - {"Vibrato Type:", 91}, - {"Note:", 92}, - {"Initialize", 93}, - {"The key that inserts the special keyoff note for FastTracker modules.", 94}, - {"Upper Octave Keys..", 95}, +All changes will be lost!", 65}, + {"Are you sure you want to overwrite the file?", 66}, + {"Load XM...", 67}, + {"Save XM...", 68}, + {"Render module as WAV...", 69}, + {"Play Song", 70}, + {"Play Pattern", 71}, + {"Stop", 72}, + {"Number of Channels:", 73}, + {"Pattern", 74}, + {"PatLength", 75}, + {"Octave", 76}, + {"Jump", 77}, + {"Instr", 78}, + {"Sample", 79}, + {"VolFade", 80}, + {"VibSpeed", 81}, + {"VibDepth", 82}, + {"VibSweep", 83}, + {"Can't open file.", 84}, + {"Sine", 85}, + {"Square", 86}, + {"Saw Down", 87}, + {"Saw Up", 88}, + {"Instrument Editor", 89}, + {"Volume envelope", 90}, + {"Panning envelope", 91}, + {"Load Instrument..", 92}, + {"Save Instrument..", 93}, + {"Load XI", 94}, + {"Save XI", 95}, + {"Vibrato Type:", 96}, + {"Note:", 97}, + {"Initialize", 98}, + {"The key that inserts the special keyoff note for FastTracker modules.", 99}, + {"Upper Octave Keys..", 100}, {"\ 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.", 96}, - {"Lower Octave Keys..", 97}, +in a piano keyboard fashion, including the number keys row above.", 101}, + {"Lower Octave Keys..", 102}, {"\ 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.", 98}, - {"Other Keys..", 99}, - {"Various other keys", 100}, - {"Function", 101}, - {"Assignment", 102}, - {"Keyboard Configuration", 103}, - {"Key Group Explanation", 104}, - {"Key Explanation", 105}, - {"Modifiers:", 106}, - {"Learn selected key", 107}, - {"Learn all keys", 108}, +keys should be ordered in a piano keyboard fashion, including the row above.", 103}, + {"Other Keys..", 104}, + {"Various other keys", 105}, + {"Function", 106}, + {"Assignment", 107}, + {"Keyboard Configuration", 108}, + {"Key Group Explanation", 109}, + {"Key Explanation", 110}, + {"Modifiers:", 111}, + {"Learn selected key", 112}, + {"Learn all keys", 113}, {"\ Please press the desired key combination!\n\ -Click into left list to cancel", 109}, +Click into left list to cancel", 114}, {"\ The keyboard configuration file is defective.\n\ -Please use the Keyboard Configuration dialog.", 110}, +Please use the Keyboard Configuration dialog.", 115}, {"\ Automatic key configuration unsuccessful.\n\ Please use the Keyboard Configuration dialog\n\ -in the Settings menu.", 111}, - {"Ok", 112}, +in the Settings menu.", 116}, + {"Ok", 117}, {"\ Are you sure you want to do this?\n\ -All changes will be lost!", 113}, +All changes will be lost!", 118}, {"\ Are you sure you want to quit?\n\ -All changes will be lost!", 114}, - {"_Open...", 115}, - {"Save _as...", 116}, - {"Save Module as _WAV...", 117}, - {"_Quit", 118}, - {"Clear _All", 119}, - {"Clear _Patterns Only", 120}, - {"_Optimize Module", 121}, - {"C_ut", 122}, - {"_Copy", 123}, - {"_Paste", 124}, - {"_Insert", 125}, - {"_Delete", 126}, - {"_Mark", 127}, - {"_Jazz Edit Mode", 128}, - {"Transp_osition...", 129}, - {"_Pattern", 130}, - {"_Track", 131}, - {"_Selection", 132}, - {"_Find Unused Pattern", 133}, - {"_Copy Current to Unused Pattern", 134}, - {"C_lear Unused Patterns", 135}, - {"_Pack Patterns", 136}, - {"_Load XI...", 137}, - {"_Delete Unused Instruments", 138}, - {"Display _Oscilloscopes", 139}, - {"Use _Backing Store", 140}, - {"_Keyboard Configuration...", 141}, - {"_Audio Configuration...", 142}, - {"_Playback Effects...", 143}, - {"_GUI Configuration...", 144}, - {"_Save Settings now", 145}, - {"Save Settings on _Exit", 146}, - {"_About...", 147}, - {"Show _Tips...", 148}, - {"_XM Effects...", 149}, - {"_File", 150}, - {"_Module", 151}, - {"_Edit", 152}, - {"_Instrument", 153}, - {"_Settings", 154}, - {"_Help", 155}, - {"/_File", 156}, - {"/File/_Open...", 157}, - {"/File/Save _as...", 158}, - {"/File/-", 159}, - {"/File/Save Module as _WAV...", 160}, - {"/File/_Quit", 161}, - {"/_Module", 162}, - {"/Module/Clear _All", 163}, - {"/Module/Clear _Patterns Only", 164}, - {"/Module/_Optimize Module", 165}, - {"/_Edit", 166}, - {"/Edit/_Jazz Edit Mode", 167}, - {"/Edit/-", 168}, - {"/Edit/_Transposition...", 169}, - {"/Edit/_Pattern", 170}, - {"/Edit/Pattern/C_ut", 171}, - {"/Edit/Pattern/_Copy", 172}, - {"/Edit/Pattern/_Paste", 173}, - {"/Edit/_Track", 174}, - {"/Edit/Track/C_ut", 175}, - {"/Edit/Track/_Copy", 176}, - {"/Edit/Track/_Paste", 177}, - {"/Edit/Track/_Insert", 178}, - {"/Edit/Track/_Delete", 179}, - {"/Edit/_Selection", 180}, - {"/Edit/Selection/_Mark", 181}, - {"/Edit/Selection/C_ut", 182}, - {"/Edit/Selection/_Copy", 183}, - {"/Edit/Selection/_Paste", 184}, - {"/_Pattern", 185}, - {"/Pattern/_Find Unused Pattern", 186}, - {"/Pattern/_Copy Current to Unused Pattern", 187}, - {"/Pattern/C_lear Unused Patterns", 188}, - {"/Pattern/_Pack Patterns", 189}, - {"/_Instrument", 190}, - {"/Instrument/_Load XI...", 191}, - {"/Instrument/-", 192}, - {"/Instrument/_Delete Unused Instruments", 193}, - {"/_Settings", 194}, - {"/Settings/Display _Oscilloscopes", 195}, - {"/Settings/Use _Backing Store", 196}, - {"/Settings/-", 197}, - {"/Settings/_Keyboard Configuration...", 198}, - {"/Settings/_Audio Configuration...", 199}, - {"/Settings/_Playback Effects...", 200}, - {"/Settings/_GUI Configuration...", 201}, - {"/Settings/_Save Settings now", 202}, - {"/Settings/Save Settings on _Exit", 203}, - {"/_Help", 204}, - {"/Help/_About...", 205}, - {"/Help/-", 206}, - {"/Help/Show _Tips...", 207}, - {"/Help/_XM Effects...", 208}, - {"/Settings/Display Oscilloscopes", 209}, - {"/Settings/Use Backing Store", 210}, - {"/Settings/Save Settings on Exit", 211}, - {"Instrument Name", 212}, - {"#smpl", 213}, - {"Sample Name", 214}, - {"Linear", 215}, - {"Amiga", 216}, - {"Module Info", 217}, - {"Songname:", 218}, - {"Frequencies:", 219}, - {"ProTracker Mode", 220}, +All changes will be lost!", 119}, + {"_Open...", 120}, + {"Save _as...", 121}, + {"Save Module as _WAV...", 122}, + {"_Quit", 123}, + {"Clear _All", 124}, + {"Clear _Patterns Only", 125}, + {"_Optimize Module", 126}, + {"C_ut", 127}, + {"_Copy", 128}, + {"_Paste", 129}, + {"_Insert", 130}, + {"_Delete", 131}, + {"_Mark", 132}, + {"_Jazz Edit Mode", 133}, + {"Transp_osition...", 134}, + {"_Pattern", 135}, + {"_Track", 136}, + {"_Selection", 137}, + {"_Find Unused Pattern", 138}, + {"_Copy Current to Unused Pattern", 139}, + {"C_lear Unused Patterns", 140}, + {"_Pack Patterns", 141}, + {"_Load XI...", 142}, + {"_Save XI...", 143}, + {"_Clear Current", 144}, + {"_Delete Unused Instruments", 145}, + {"Display _Oscilloscopes", 146}, + {"Use _Backing Store", 147}, + {"_Keyboard Configuration...", 148}, + {"_Audio Configuration...", 149}, + {"_Playback Effects...", 150}, + {"_GUI Configuration...", 151}, + {"_Save Settings now", 152}, + {"Save Settings on _Exit", 153}, + {"_About...", 154}, + {"Show _Tips...", 155}, + {"_XM Effects...", 156}, + {"_File", 157}, + {"_Module", 158}, + {"_Edit", 159}, + {"_Instrument", 160}, + {"_Settings", 161}, + {"_Help", 162}, + {"/_File", 163}, + {"/File/_Open...", 164}, + {"/File/Save _as...", 165}, + {"/File/-", 166}, + {"/File/Save Module as _WAV...", 167}, + {"/File/_Quit", 168}, + {"/_Module", 169}, + {"/Module/Clear _All", 170}, + {"/Module/Clear _Patterns Only", 171}, + {"/Module/_Optimize Module", 172}, + {"/_Edit", 173}, + {"/Edit/_Jazz Edit Mode", 174}, + {"/Edit/-", 175}, + {"/Edit/_Transposition...", 176}, + {"/Edit/_Pattern", 177}, + {"/Edit/Pattern/C_ut", 178}, + {"/Edit/Pattern/_Copy", 179}, + {"/Edit/Pattern/_Paste", 180}, + {"/Edit/_Track", 181}, + {"/Edit/Track/C_ut", 182}, + {"/Edit/Track/_Copy", 183}, + {"/Edit/Track/_Paste", 184}, + {"/Edit/Track/_Insert", 185}, + {"/Edit/Track/_Delete", 186}, + {"/Edit/_Selection", 187}, + {"/Edit/Selection/_Mark", 188}, + {"/Edit/Selection/C_ut", 189}, + {"/Edit/Selection/_Copy", 190}, + {"/Edit/Selection/_Paste", 191}, + {"/_Pattern", 192}, + {"/Pattern/_Find Unused Pattern", 193}, + {"/Pattern/_Copy Current to Unused Pattern", 194}, + {"/Pattern/C_lear Unused Patterns", 195}, + {"/Pattern/_Pack Patterns", 196}, + {"/_Instrument", 197}, + {"/Instrument/_Load XI...", 198}, + {"/Instrument/_Save XI...", 199}, + {"/Instrument/-", 200}, + {"/Instrument/_Clear Current", 201}, + {"/Instrument/_Delete Unused Instruments", 202}, + {"/_Settings", 203}, + {"/Settings/Display _Oscilloscopes", 204}, + {"/Settings/Use _Backing Store", 205}, + {"/Settings/-", 206}, + {"/Settings/_Keyboard Configuration...", 207}, + {"/Settings/_Audio Configuration...", 208}, + {"/Settings/_Playback Effects...", 209}, + {"/Settings/_GUI Configuration...", 210}, + {"/Settings/_Save Settings now", 211}, + {"/Settings/Save Settings on _Exit", 212}, + {"/_Help", 213}, + {"/Help/_About...", 214}, + {"/Help/-", 215}, + {"/Help/Show _Tips...", 216}, + {"/Help/_XM Effects...", 217}, + {"/Settings/Display Oscilloscopes", 218}, + {"/Settings/Use Backing Store", 219}, + {"/Settings/Save Settings on Exit", 220}, + {"Instrument Name", 221}, + {"#smpl", 222}, + {"Sample Name", 223}, + {"Linear", 224}, + {"Amiga", 225}, + {"Module Info", 226}, + {"Songname:", 227}, + {"Frequencies:", 228}, + {"ProTracker Mode", 229}, {"\ A directory called '.soundtracker' has been created in your\n\ -home directory to store configuration files.\n", 221}, - {"No loop", 222}, - {"PingPong", 223}, - {"8 bits", 224}, - {"16 bits", 225}, - {"Sample Editor", 226}, - {"Volume", 227}, - {"Panning", 228}, - {"Finetune", 229}, - {"SelStart", 230}, - {"SelEnd", 231}, - {"Reset Sel", 232}, - {"RelNote", 233}, - {"Length: 0", 234}, - {"Load Sample..", 235}, - {"Save WAV..", 236}, - {"Load Sample", 237}, - {"Save WAV", 238}, - {"Clear", 239}, - {"Monitor", 240}, - {"Volume Ramp", 241}, - {"Zoom to selection", 242}, - {"Show all", 243}, - {"Zoom in (+50%)", 244}, - {"Zoom out (-50%)", 245}, - {"Resample", 246}, - {"Cut", 247}, - {"Remove", 248}, - {"Copy", 249}, - {"Paste", 250}, - {"Filter", 251}, - {"Length: %d", 252}, - {"", 253}, - {"Can't read sample", 254}, - {"Sample is too long for current mixer module. Loading anyway.", 255}, - {"Can only handle mono 8 and 16 bit samples", 256}, - {"Read error.", 257}, - {"OK", 258}, - {"Start sampling", 259}, - {"Sampling Window", 260}, - {"", 261}, - {"Recorded sample is too long for current mixer module. Using it anyway.", 262}, - {"Normalize", 263}, - {"Execute", 264}, - {"Close", 265}, - {"Volume Ramping", 266}, - {"Perform linear volume fade on Selection", 267}, - {"Left [%]:", 268}, - {"Right [%]:", 269}, - {"SoundTracker Tip of the day", 270}, - {"Previous Tip", 271}, - {"Next Tip", 272}, - {"Show tip next time", 273}, +home directory to store configuration files.\n", 230}, + {"No loop", 231}, + {"PingPong", 232}, + {"8 bits", 233}, + {"16 bits", 234}, + {"Sample Editor", 235}, + {"Volume", 236}, + {"Panning", 237}, + {"Finetune", 238}, + {"SelStart", 239}, + {"SelEnd", 240}, + {"Reset Sel", 241}, + {"RelNote", 242}, + {"Length: 0", 243}, + {"Load Sample..", 244}, + {"Save WAV..", 245}, + {"Save WAV", 246}, + {"Clear", 247}, + {"Monitor", 248}, + {"Volume Ramp", 249}, + {"Zoom to selection", 250}, + {"Show all", 251}, + {"Zoom in (+50%)", 252}, + {"Zoom out (-50%)", 253}, + {"Resample", 254}, + {"Cut", 255}, + {"Remove", 256}, + {"Copy", 257}, + {"Paste", 258}, + {"Filter", 259}, + {"Length: %d", 260}, + {"", 261}, + {"Can't read sample", 262}, + {"Sample is too long for current mixer module. Loading anyway.", 263}, + {"Can only handle mono 8 and 16 bit samples", 264}, + {"Read error.", 265}, + {"OK", 266}, + {"Start sampling", 267}, + {"Sampling Window", 268}, + {"", 269}, + {"Recorded sample is too long for current mixer module. Using it anyway.", 270}, + {"Normalize", 271}, + {"Execute", 272}, + {"Close", 273}, + {"Volume Ramping", 274}, + {"Perform linear volume fade on Selection", 275}, + {"Left [%]:", 276}, + {"Right [%]:", 277}, + {"SoundTracker Tip of the day", 278}, + {"Previous Tip", 279}, + {"Next Tip", 280}, + {"Show tip next time", 281}, {"\ 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.", 274}, +some XM or MOD files first and play with them.", 282}, {"\ 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.", 275}, +the Audio Configuration.", 283}, {"\ You can adjust the loop points in the sample editor by holding Shift\n\ -and using the left and right mousebuttons.\n", 276}, +and using the left and right mousebuttons.\n", 284}, {"\ If you want to know more about tracking, and how the various commands\n\ -work, have a look at http://www.united-trackers.org/", 277}, +work, have a look at http://www.united-trackers.org/", 285}, {"\ 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.", 278}, - {"Jazz Edit:", 279}, - {"Whole Song", 280}, - {"All Patterns", 281}, - {"Current Pattern", 282}, - {"Current Track", 283}, - {"Current Instrument", 284}, - {"All Instruments", 285}, - {"Half note up", 286}, - {"Half note down", 287}, - {"Octave up", 288}, - {"Octave down", 289}, - {"Exchange 1 <-> 2", 290}, - {"Change 1 -> 2", 291}, - {"Transposition Tools", 292}, - {"Scope of the operation:", 293}, - {"Note Transposition", 294}, - {"Instrument Changing", 295}, - {"Instrument 1:", 296}, - {"Current instrument", 297}, - {"Instrument 2:", 298}, - {"Pattern length out of range: %d.\n", 299}, - {"Invalid vibtype %d, using Sine.\n", 300}, - {"File is no XI instrument.", 301}, - {"Unknown XI version 0x%x\n", 302}, - {"No FastTracker XM and no supported MOD format!", 303}, - {"Error while loading patterns.", 304}, - {"Can't open file", 305}, - {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 306}, - {"Error while loading instruments.", 307}, +instrument editor page.", 286}, + {"Jazz Edit:", 287}, + {"Tracker", 288}, + {"Whole Song", 289}, + {"All Patterns", 290}, + {"Current Pattern", 291}, + {"Current Track", 292}, + {"Current Instrument", 293}, + {"All Instruments", 294}, + {"Half note up", 295}, + {"Half note down", 296}, + {"Octave up", 297}, + {"Octave down", 298}, + {"Exchange 1 <-> 2", 299}, + {"Change 1 -> 2", 300}, + {"Transposition Tools", 301}, + {"Scope of the operation:", 302}, + {"Note Transposition", 303}, + {"Instrument Changing", 304}, + {"Instrument 1:", 305}, + {"Current instrument", 306}, + {"Instrument 2:", 307}, + {"Pattern length out of range: %d.\n", 308}, + {"Invalid vibtype %d, using Sine.\n", 309}, + {"File is no XI instrument.", 310}, + {"Unknown XI version 0x%x\n", 311}, + {"No FastTracker XM and no supported MOD format!", 312}, + {"Error while loading patterns.", 313}, + {"Can't open file", 314}, + {"XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n", 315}, + {"Error while loading instruments.", 316}, {"\ Module contains sample(s) that are too long for the current mixer.\n\ -Maximum sample length is %d.", 308}, +Maximum sample length is %d.", 317}, }; -int _msg_tbl_length = 308; +int _msg_tbl_length = 317; Binary files soundtracker-0.3.6/po/de.gmo and soundtracker-0.3.7/po/de.gmo differ diff -urN soundtracker-0.3.6/po/de.po soundtracker-0.3.7/po/de.po --- soundtracker-0.3.6/po/de.po Sun Nov 14 15:30:04 1999 +++ soundtracker-0.3.7/po/de.po Wed Dec 22 12:32:23 1999 @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: soundtracker-0.3.3\n" -"POT-Creation-Date: 1999-11-14 15:19+0100\n" +"POT-Creation-Date: 1999-12-22 12:28+0100\n" "PO-Revision-Date: 1999-09-21 23:00+02:00\n" "Last-Translator: Colin Marquardt \n" "Language-Team: German \n" @@ -125,7 +125,7 @@ msgid "no settings (yet), sorry!" msgstr "Keine Einstellungen (zur Zeit), sorry!" -#: app/drivers/file-output.c:161 app/sample-editor.c:1120 +#: app/drivers/file-output.c:161 app/sample-editor.c:1116 msgid "Can't open file for writing." msgstr "Kann Datei nicht zum Schreiben Жffnen." @@ -176,11 +176,11 @@ msgid "Value" msgstr "Wert" -#: app/envelope-box.c:749 app/gui.c:1115 +#: app/envelope-box.c:749 msgid "Insert" msgstr "EinfЭgen" -#: app/envelope-box.c:755 app/gui.c:1122 +#: app/envelope-box.c:755 msgid "Delete" msgstr "LЖschen" @@ -210,76 +210,118 @@ msgid "Loop" msgstr "Loop" -#: app/envelope-box.c:876 app/sample-editor.c:207 +#: app/envelope-box.c:876 app/sample-editor.c:201 msgid "Start" msgstr "Anfang" -#: app/envelope-box.c:877 app/sample-editor.c:208 +#: app/envelope-box.c:877 app/sample-editor.c:202 msgid "End" msgstr "Ende" -#: app/gui-settings.c:75 +#: app/file-operations.c:144 +#, fuzzy +msgid "Load Module" +msgstr "_Modul" + +#: app/file-operations.c:145 +#, fuzzy +msgid "Save Module" +msgstr "Treibermodul" + +#: app/file-operations.c:146 +msgid "Render WAV" +msgstr "" + +#: app/file-operations.c:147 app/sample-editor.c:253 +msgid "Load Sample" +msgstr "Lade Sample" + +#: app/file-operations.c:148 +#, fuzzy +msgid "Save Sample" +msgstr "Lade Sample" + +#: app/file-operations.c:149 +#, fuzzy +msgid "Load Instrument" +msgstr "Lade Instrument..." + +#: app/file-operations.c:150 +#, fuzzy +msgid "Save Instrument" +msgstr "Speichere Instrument..." + +#: app/file-operations.c:156 +#, fuzzy +msgid "File" +msgstr "_Datei" + +#: app/gui-settings.c:77 msgid "Scopes Frequency" msgstr "Scope-Frequenz" -#: app/gui-settings.c:78 +#: app/gui-settings.c:80 msgid "Tracker Frequency" msgstr "Tracker-Frequenz" -#: app/gui-settings.c:161 app/gui-settings.c:164 +#: app/gui-settings.c:172 app/gui-settings.c:175 msgid "GUI Configuration" msgstr "GUI-Konfiguration" -#: app/gui-settings.c:189 +#: app/gui-settings.c:200 msgid "Use Hexadecimal Numbers" msgstr "Verwende hexadezimale Zahlen" -#: app/gui-settings.c:196 +#: app/gui-settings.c:207 +msgid "Use upper case letters for hex numbers" +msgstr "" + +#: app/gui-settings.c:214 msgid "Advance Cursor in FX Columns" msgstr "Lasse Cursor in FX-Spalten mitlaufen" -#: app/gui-settings.c:203 +#: app/gui-settings.c:221 msgid "Use anti-aliased envelope editor" msgstr "Verwende Antialiasing im HЭllkurven-Editor" -#: app/gui-settings.c:209 +#: app/gui-settings.c:227 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:218 +#: app/gui-settings.c:236 msgid "Scopes buffer size [MB]" msgstr "PuffergrЖъe der Scopes [MB]" -#: app/gui-settings.c:237 +#: app/gui-settings.c:255 msgid "Highlight rows:" msgstr "" -#: app/gui-settings.c:255 +#: app/gui-settings.c:273 msgid "`Save XM' saves all non-empty patterns" msgstr "`Speichere XM' speichert alle nicht-leeren Pattern" -#: app/gui-subs.c:386 +#: app/gui-subs.c:425 msgid "Question" msgstr "Frage" -#: app/gui-subs.c:403 app/sample-editor.c:1172 +#: app/gui-subs.c:442 app/sample-editor.c:1168 msgid "Cancel" msgstr "Abbrechen" -#: app/gui-subs.c:421 +#: app/gui-subs.c:460 msgid "Warning" msgstr "Warnung" -#: app/gui-subs.c:447 +#: app/gui-subs.c:486 msgid "Error!" msgstr "Fehler!" -#: app/gui.c:82 +#: app/gui.c:83 msgid "Tempo" msgstr "Tempo" -#: app/gui.c:220 +#: app/gui.c:214 msgid "" "Are you sure you want to free the current project?\n" "All changes will be lost!" @@ -287,71 +329,59 @@ "Sind Sie sicher, daъ Sie das aktuelle Projekt schlieъen wollen?\n" "Alle дnderungen gehen verloren!" -#: app/gui.c:234 app/gui.c:246 +#: app/gui.c:228 app/gui.c:240 msgid "Are you sure you want to overwrite the file?" msgstr "Sind sie sicher, daъ Sie die Datei Эberschreiben wollen?" -#: app/gui.c:1106 -msgid "Song length" -msgstr "Song-LДnge" - -#: app/gui.c:1107 -msgid "Current pos" -msgstr "Aktuelle Pos" - -#: app/gui.c:1108 app/gui.c:1266 -msgid "Pattern" -msgstr "Pattern" - -#: app/gui.c:1109 -msgid "Restart pos" -msgstr "Restart-Pos" - -#: app/gui.c:1177 +#: app/gui.c:1114 msgid "Load XM..." msgstr "Lade XM..." -#: app/gui.c:1179 +#: app/gui.c:1116 msgid "Save XM..." msgstr "Speichere XM..." -#: app/gui.c:1181 +#: app/gui.c:1118 msgid "Render module as WAV..." msgstr "" -#: app/gui.c:1219 +#: app/gui.c:1168 msgid "Play Song" msgstr "Spiele Song" -#: app/gui.c:1225 +#: app/gui.c:1174 msgid "Play Pattern" msgstr "Spiele Pattern" -#: app/gui.c:1231 +#: app/gui.c:1180 msgid "Stop" msgstr "Stop" -#: app/gui.c:1250 +#: app/gui.c:1199 msgid "Number of Channels:" msgstr "Anzahl der KanДle:" -#: app/gui.c:1282 +#: app/gui.c:1215 +msgid "Pattern" +msgstr "Pattern" + +#: app/gui.c:1231 msgid "PatLength" msgstr "PatLДnge" -#: app/gui.c:1374 +#: app/gui.c:1323 msgid "Octave" msgstr "Oktave" -#: app/gui.c:1382 +#: app/gui.c:1331 msgid "Jump" msgstr "Springe" -#: app/gui.c:1390 +#: app/gui.c:1339 msgid "Instr" msgstr "Instr" -#: app/gui.c:1405 +#: app/gui.c:1354 msgid "Sample" msgstr "Sample" @@ -371,67 +401,63 @@ msgid "VibSweep" msgstr "VibSweep" -#: app/instrument-editor.c:154 +#: app/instrument-editor.c:154 app/instrument-editor.c:175 msgid "Can't open file." msgstr "Kann Datei nicht Жffnen." -#: app/instrument-editor.c:174 -msgid "Saving Instruments not yet supported." -msgstr "Speichern von Instrumenten noch nicht unterstЭtzt." - -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Sine" msgstr "Sinus" -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Square" msgstr "Rechteck" -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Saw Down" msgstr "SДge Fall" -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Saw Up" msgstr "SДge Steig" -#: app/instrument-editor.c:186 +#: app/instrument-editor.c:216 msgid "Instrument Editor" msgstr "Instrumenten-Editor" -#: app/instrument-editor.c:195 +#: app/instrument-editor.c:225 msgid "Volume envelope" msgstr "LautstДrken-HЭllkurve" -#: app/instrument-editor.c:203 +#: app/instrument-editor.c:233 msgid "Panning envelope" msgstr "Balance-HЭllkurve" -#: app/instrument-editor.c:220 +#: app/instrument-editor.c:250 msgid "Load Instrument.." msgstr "Lade Instrument..." -#: app/instrument-editor.c:222 +#: app/instrument-editor.c:252 msgid "Save Instrument.." msgstr "Speichere Instrument..." -#: app/instrument-editor.c:224 +#: app/instrument-editor.c:254 msgid "Load XI" msgstr "Lade XI" -#: app/instrument-editor.c:230 +#: app/instrument-editor.c:260 msgid "Save XI" msgstr "Speichere XI" -#: app/instrument-editor.c:250 +#: app/instrument-editor.c:279 msgid "Vibrato Type:" msgstr "Vibrato-Typ:" -#: app/instrument-editor.c:322 +#: app/instrument-editor.c:351 msgid "Note:" msgstr "Note:" -#: app/instrument-editor.c:340 +#: app/instrument-editor.c:369 msgid "Initialize" msgstr "Initialisieren" @@ -517,7 +543,7 @@ "Bitte drЭcken Sie die gewЭnschte Tastenkombination!\n" "Klicken Sie in die linke Liste, um abzubrechen" -#: app/keys.c:635 +#: app/keys.c:641 msgid "" "The keyboard configuration file is defective.\n" "Please use the Keyboard Configuration dialog." @@ -525,7 +551,7 @@ "Die Datei fЭr die Tastaturkonfiguration ist fehlerhaft.\n" "Bitte verwenden Sie den Dialog fЭr die Tastatur-Konfiguration." -#: app/keys.c:845 +#: app/keys.c:851 msgid "" "Automatic key configuration unsuccessful.\n" "Please use the Keyboard Configuration dialog\n" @@ -535,11 +561,11 @@ "Bitte verwenden Sie den Dialog fЭr die Tastatur-Konfiguration\n" "im MenЭ Einstellungen." -#: app/menubar.c:98 +#: app/menubar.c:92 msgid "Ok" msgstr "OK" -#: app/menubar.c:134 +#: app/menubar.c:128 msgid "" "Are you sure you want to do this?\n" "All changes will be lost!" @@ -547,7 +573,7 @@ "Sind Sie sicher, daъ Sie das tun wollen?\n" "Alle дnderungen gehen verloren!" -#: app/menubar.c:156 +#: app/menubar.c:150 msgid "" "Are you sure you want to quit?\n" "All changes will be lost!" @@ -555,181 +581,191 @@ "Sind Sie sicher, daъ Sie das Programm beenden wollen?\n" "Alle дnderungen gehen verloren!" -#: app/menubar.c:227 +#: app/menubar.c:221 #, fuzzy msgid "_Open..." msgstr "ж_ffnen..." -#: app/menubar.c:229 +#: app/menubar.c:223 #, fuzzy msgid "Save _as..." msgstr "Speichern _unter..." -#: app/menubar.c:234 +#: app/menubar.c:228 #, fuzzy msgid "Save Module as _WAV..." msgstr "Speichere WAV..." -#: app/menubar.c:239 +#: app/menubar.c:233 msgid "_Quit" msgstr "_Beenden" -#: app/menubar.c:246 +#: app/menubar.c:240 msgid "Clear _All" msgstr "_Alles lЖschen" -#: app/menubar.c:248 +#: app/menubar.c:242 msgid "Clear _Patterns Only" msgstr "Nur _Pattern lЖschen" -#: app/menubar.c:250 +#: app/menubar.c:244 msgid "_Optimize Module" msgstr "Modul _optimieren" -#: app/menubar.c:257 app/menubar.c:268 app/menubar.c:286 +#: app/menubar.c:251 app/menubar.c:262 app/menubar.c:280 msgid "C_ut" msgstr "_Ausschneiden" -#: app/menubar.c:259 app/menubar.c:270 app/menubar.c:288 +#: app/menubar.c:253 app/menubar.c:264 app/menubar.c:282 msgid "_Copy" msgstr "_Kopieren" -#: app/menubar.c:261 app/menubar.c:272 app/menubar.c:290 +#: app/menubar.c:255 app/menubar.c:266 app/menubar.c:284 msgid "_Paste" msgstr "E_infЭgen" -#: app/menubar.c:274 +#: app/menubar.c:268 #, fuzzy msgid "_Insert" msgstr "EinfЭgen" -#: app/menubar.c:276 +#: app/menubar.c:270 #, fuzzy msgid "_Delete" msgstr "LЖschen" -#: app/menubar.c:284 +#: app/menubar.c:278 msgid "_Mark" msgstr "_Markieren" -#: app/menubar.c:297 +#: app/menubar.c:291 msgid "_Jazz Edit Mode" msgstr "_Jazz-Edit-Modus" -#: app/menubar.c:302 +#: app/menubar.c:296 #, fuzzy msgid "Transp_osition..." msgstr "_Transposition..." -#: app/menubar.c:307 app/menubar.c:385 +#: app/menubar.c:301 app/menubar.c:386 msgid "_Pattern" msgstr "_Pattern" -#: app/menubar.c:308 +#: app/menubar.c:302 msgid "_Track" msgstr "_Track" -#: app/menubar.c:309 +#: app/menubar.c:303 msgid "_Selection" msgstr "_Auswahl" -#: app/menubar.c:315 +#: app/menubar.c:309 msgid "_Find Unused Pattern" msgstr "_Finde unbenutztes Pattern" -#: app/menubar.c:317 +#: app/menubar.c:311 msgid "_Copy Current to Unused Pattern" msgstr "_Kopiere aktuelles zu unbenutztem Pattern" -#: app/menubar.c:319 +#: app/menubar.c:313 msgid "C_lear Unused Patterns" msgstr "_LЖsche unbenutzte Pattern" -#: app/menubar.c:321 +#: app/menubar.c:315 msgid "_Pack Patterns" msgstr "_Packe Pattern" -#: app/menubar.c:328 +#: app/menubar.c:322 #, fuzzy msgid "_Load XI..." msgstr "_Lade XI..." -#: app/menubar.c:333 +#: app/menubar.c:324 +#, fuzzy +msgid "_Save XI..." +msgstr "Speichere XM..." + +#: app/menubar.c:329 +#, fuzzy +msgid "_Clear Current" +msgstr "Aktuell" + +#: app/menubar.c:334 msgid "_Delete Unused Instruments" msgstr "LЖsche unbenutzte _Instrumente" -#: app/menubar.c:341 +#: app/menubar.c:342 msgid "Display _Oscilloscopes" msgstr "Zeige _Oszilloskope" -#: app/menubar.c:343 +#: app/menubar.c:344 msgid "Use _Backing Store" msgstr "Verwende _Backing Store" -#: app/menubar.c:348 +#: app/menubar.c:349 #, fuzzy msgid "_Keyboard Configuration..." msgstr "_Tastatur-Konfiguration..." -#: app/menubar.c:350 +#: app/menubar.c:351 #, fuzzy msgid "_Audio Configuration..." msgstr "_Audio-Konfiguration..." -#: app/menubar.c:352 +#: app/menubar.c:353 #, fuzzy msgid "_Playback Effects..." msgstr "_Playback-Effekte..." -#: app/menubar.c:354 +#: app/menubar.c:355 #, fuzzy msgid "_GUI Configuration..." msgstr "_GUI-Konfiguration..." -#: app/menubar.c:359 +#: app/menubar.c:360 msgid "_Save Settings now" msgstr "_Speichere Einstellungen jetzt" -#: app/menubar.c:361 +#: app/menubar.c:362 msgid "Save Settings on _Exit" msgstr "Speichere Einstellungen beim _Verlassen" -#: app/menubar.c:368 +#: app/menubar.c:369 #, fuzzy msgid "_About..." msgstr "э_ber..." -#: app/menubar.c:373 +#: app/menubar.c:374 #, fuzzy msgid "Show _Tips..." msgstr "Zeige _Tips..." -#: app/menubar.c:375 +#: app/menubar.c:376 #, fuzzy msgid "_XM Effects..." msgstr "_XM-Effekte..." -#: app/menubar.c:382 +#: app/menubar.c:383 msgid "_File" msgstr "_Datei" -#: app/menubar.c:383 +#: app/menubar.c:384 msgid "_Module" msgstr "_Modul" -#: app/menubar.c:384 +#: app/menubar.c:385 msgid "_Edit" msgstr "_Bearbeiten" -#: app/menubar.c:386 +#: app/menubar.c:387 msgid "_Instrument" msgstr "_Instrument" -#: app/menubar.c:387 +#: app/menubar.c:388 msgid "_Settings" msgstr "_Einstellungen" -#: app/menubar.c:388 +#: app/menubar.c:389 msgid "_Help" msgstr "_Hilfe" @@ -885,89 +921,99 @@ msgstr "/Instrument/_Lade XI..." #: app/menubar.c:454 +#, fuzzy +msgid "/Instrument/_Save XI..." +msgstr "/Instrument/_Lade XI..." + +#: app/menubar.c:455 app/menubar.c:457 msgid "/Instrument/-" msgstr "/Instrument/-" -#: app/menubar.c:455 +#: app/menubar.c:456 +#, fuzzy +msgid "/Instrument/_Clear Current" +msgstr "/Instrument/_LЖsche unbenutzte Instrumente" + +#: app/menubar.c:458 msgid "/Instrument/_Delete Unused Instruments" msgstr "/Instrument/_LЖsche unbenutzte Instrumente" -#: app/menubar.c:456 +#: app/menubar.c:459 msgid "/_Settings" msgstr "/_Einstellungen" -#: app/menubar.c:457 +#: app/menubar.c:460 msgid "/Settings/Display _Oscilloscopes" msgstr "/Einstellungen/Zeige _Oszilloskope" -#: app/menubar.c:458 +#: app/menubar.c:461 msgid "/Settings/Use _Backing Store" msgstr "/Einstellungen/Verwende _Backing Store" -#: app/menubar.c:459 app/menubar.c:464 +#: app/menubar.c:462 app/menubar.c:467 msgid "/Settings/-" msgstr "/Einstellungen/-" -#: app/menubar.c:460 +#: app/menubar.c:463 #, fuzzy msgid "/Settings/_Keyboard Configuration..." msgstr "/Einstellungen/_Tastatur-Konfiguration..." -#: app/menubar.c:461 +#: app/menubar.c:464 #, fuzzy msgid "/Settings/_Audio Configuration..." msgstr "/Einstellungen/_Audio-Konfiguration..." -#: app/menubar.c:462 +#: app/menubar.c:465 #, fuzzy msgid "/Settings/_Playback Effects..." msgstr "/Einstellungen/_Playback-Effekte..." -#: app/menubar.c:463 +#: app/menubar.c:466 #, fuzzy msgid "/Settings/_GUI Configuration..." msgstr "/Einstellungen/_GUI-Konfiguration..." -#: app/menubar.c:465 +#: app/menubar.c:468 msgid "/Settings/_Save Settings now" msgstr "/Einstellungen/_Speichere Einstellungen jetzt" -#: app/menubar.c:466 +#: app/menubar.c:469 msgid "/Settings/Save Settings on _Exit" msgstr "/Einstellungen/Speichere Einstellungen beim _Verlassen" -#: app/menubar.c:467 +#: app/menubar.c:470 msgid "/_Help" msgstr "/_Hilfe" -#: app/menubar.c:468 +#: app/menubar.c:471 #, fuzzy msgid "/Help/_About..." msgstr "/Hilfe/э_ber..." -#: app/menubar.c:469 +#: app/menubar.c:472 msgid "/Help/-" msgstr "/Hilfe/-" -#: app/menubar.c:470 +#: app/menubar.c:473 #, fuzzy msgid "/Help/Show _Tips..." msgstr "/Hilfe/Zeige _Tips..." -#: app/menubar.c:471 +#: app/menubar.c:474 #, fuzzy msgid "/Help/_XM Effects..." msgstr "/Hilfe/_XM-Effekte..." -#: app/menubar.c:485 +#: app/menubar.c:488 msgid "/Settings/Display Oscilloscopes" msgstr "/Einstellungen/Zeige Oszilloskope" -#: app/menubar.c:487 +#: app/menubar.c:490 msgid "/Settings/Use Backing Store" msgstr "/Einstellungen/Verwende Backing Store" -#: app/menubar.c:489 +#: app/menubar.c:492 msgid "/Settings/Save Settings on Exit" msgstr "/Einstellungen/Speichere Einstellungen beim Verlassen" @@ -987,7 +1033,7 @@ msgid "Linear" msgstr "Linear" -#: app/module-info.c:118 app/sample-editor.c:167 +#: app/module-info.c:118 app/sample-editor.c:161 msgid "Amiga" msgstr "Amiga" @@ -1015,198 +1061,194 @@ "Ein Verzeichnis namens '.soundtracker' wurde in Ihrem Home-Verzeichnis \n" "angelegt, um Konfigurationsdateien darin zu speichern.\n" -#: app/sample-editor.c:166 +#: app/sample-editor.c:160 msgid "No loop" msgstr "Keine Loop" -#: app/sample-editor.c:168 +#: app/sample-editor.c:162 msgid "PingPong" msgstr "PingPong" -#: app/sample-editor.c:172 +#: app/sample-editor.c:166 msgid "8 bits" msgstr "8 Bits" -#: app/sample-editor.c:173 +#: app/sample-editor.c:167 msgid "16 bits" msgstr "16 Bits" -#: app/sample-editor.c:179 +#: app/sample-editor.c:173 msgid "Sample Editor" msgstr "Sample-Editor" -#: app/sample-editor.c:219 +#: app/sample-editor.c:213 msgid "Volume" msgstr "LautstДrke" -#: app/sample-editor.c:220 +#: app/sample-editor.c:214 msgid "Panning" msgstr "Balance" -#: app/sample-editor.c:221 +#: app/sample-editor.c:215 msgid "Finetune" msgstr "Feineinstellung" -#: app/sample-editor.c:232 +#: app/sample-editor.c:226 msgid "SelStart" msgstr "AuswAnf" -#: app/sample-editor.c:233 +#: app/sample-editor.c:227 msgid "SelEnd" msgstr "AuswEnde" -#: app/sample-editor.c:236 +#: app/sample-editor.c:230 msgid "Reset Sel" msgstr "RЭcks. Ausw" -#: app/sample-editor.c:241 +#: app/sample-editor.c:235 msgid "RelNote" msgstr "RelNote" -#: app/sample-editor.c:242 +#: app/sample-editor.c:236 msgid "Length: 0" msgstr "LДnge: 0" -#: app/sample-editor.c:255 +#: app/sample-editor.c:249 msgid "Load Sample.." msgstr "Lade Sample..." -#: app/sample-editor.c:256 +#: app/sample-editor.c:250 msgid "Save WAV.." msgstr "Speichere WAV..." -#: app/sample-editor.c:259 -msgid "Load Sample" -msgstr "Lade Sample" - -#: app/sample-editor.c:268 +#: app/sample-editor.c:262 msgid "Save WAV" msgstr "Speichere WAV" -#: app/sample-editor.c:278 +#: app/sample-editor.c:272 msgid "Clear" msgstr "LЖschen" -#: app/sample-editor.c:284 +#: app/sample-editor.c:278 msgid "Monitor" msgstr "Monitor" -#: app/sample-editor.c:290 +#: app/sample-editor.c:284 msgid "Volume Ramp" msgstr "LautstДrke" -#: app/sample-editor.c:300 +#: app/sample-editor.c:294 msgid "Zoom to selection" msgstr "Zoom in Auswahl" -#: app/sample-editor.c:306 +#: app/sample-editor.c:300 msgid "Show all" msgstr "Zeige alles" -#: app/sample-editor.c:312 +#: app/sample-editor.c:306 msgid "Zoom in (+50%)" msgstr "Zoom in (+50%)" -#: app/sample-editor.c:318 +#: app/sample-editor.c:312 msgid "Zoom out (-50%)" msgstr "Zoom out (-50%)" -#: app/sample-editor.c:324 +#: app/sample-editor.c:318 msgid "Resample" msgstr "Neu samplen" -#: app/sample-editor.c:335 +#: app/sample-editor.c:329 msgid "Cut" msgstr "Ausschneiden" -#: app/sample-editor.c:341 +#: app/sample-editor.c:335 msgid "Remove" msgstr "Entfernen" -#: app/sample-editor.c:347 +#: app/sample-editor.c:341 msgid "Copy" msgstr "Kopieren" -#: app/sample-editor.c:353 +#: app/sample-editor.c:347 msgid "Paste" msgstr "EinfЭgen" -#: app/sample-editor.c:359 +#: app/sample-editor.c:353 msgid "Filter" msgstr "Filter" -#: app/sample-editor.c:459 +#: app/sample-editor.c:453 #, c-format msgid "Length: %d" msgstr "LДnge: %d" -#: app/sample-editor.c:957 +#: app/sample-editor.c:953 msgid "" msgstr "" -#: app/sample-editor.c:1034 +#: app/sample-editor.c:1030 msgid "Can't read sample" msgstr "Kann Sample nicht lesen" -#: app/sample-editor.c:1040 +#: app/sample-editor.c:1036 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:1054 +#: app/sample-editor.c:1050 msgid "Can only handle mono 8 and 16 bit samples" msgstr "Kann nur mono- 8 und 16 Bit Samples verarbeiten" -#: app/sample-editor.c:1065 +#: app/sample-editor.c:1061 msgid "Read error." msgstr "Lesefehler." -#: app/sample-editor.c:1157 +#: app/sample-editor.c:1153 msgid "OK" msgstr "OK" -#: app/sample-editor.c:1165 +#: app/sample-editor.c:1161 msgid "Start sampling" msgstr "Starte Sampling" -#: app/sample-editor.c:1200 app/sample-editor.c:1203 +#: app/sample-editor.c:1196 app/sample-editor.c:1199 msgid "Sampling Window" msgstr "Sampling-Fenster" -#: app/sample-editor.c:1303 +#: app/sample-editor.c:1299 msgid "" msgstr "" -#: app/sample-editor.c:1333 +#: app/sample-editor.c:1329 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:1365 +#: app/sample-editor.c:1361 msgid "Normalize" msgstr "Normalisieren" -#: app/sample-editor.c:1366 +#: app/sample-editor.c:1362 msgid "Execute" msgstr "AusfЭhren" -#: app/sample-editor.c:1367 app/tips-dialog.c:165 +#: app/sample-editor.c:1363 app/tips-dialog.c:165 msgid "Close" msgstr "Schlieъen" -#: app/sample-editor.c:1376 app/sample-editor.c:1379 +#: app/sample-editor.c:1372 app/sample-editor.c:1375 msgid "Volume Ramping" msgstr "LautstДrke-Anpassung" -#: app/sample-editor.c:1396 +#: app/sample-editor.c:1392 msgid "Perform linear volume fade on Selection" msgstr "Lineare LautstДrkenverringerung auf Markierung" -#: app/sample-editor.c:1408 +#: app/sample-editor.c:1404 msgid "Left [%]:" msgstr "Links [%]:" -#: app/sample-editor.c:1413 +#: app/sample-editor.c:1409 msgid "Right [%]:" msgstr "Rechts [%]:" @@ -1282,6 +1324,11 @@ msgid "Jazz Edit:" msgstr "Jazz-Edit:" +#: app/track-editor.c:126 +#, fuzzy +msgid "Tracker" +msgstr "_Track" + #: app/transposition.c:166 msgid "Whole Song" msgstr "Ganzer Song" @@ -1363,7 +1410,7 @@ msgid "Pattern length out of range: %d.\n" msgstr "PatternlДnge auъerhalb des Bereiches: %d.\n" -#: app/xm.c:441 app/xm.c:510 +#: app/xm.c:441 app/xm.c:512 #, c-format msgid "Invalid vibtype %d, using Sine.\n" msgstr "UngЭltiger vibtype %d, verwende Sinus.\n" @@ -1377,28 +1424,28 @@ msgid "Unknown XI version 0x%x\n" msgstr "Unbekannte XI-Version 0x%x\n" -#: app/xm.c:702 +#: app/xm.c:757 msgid "No FastTracker XM and no supported MOD format!" msgstr "Kein FastTracker XM und kein unterstЭtztes MOD-Format!" -#: app/xm.c:716 app/xm.c:816 +#: app/xm.c:771 app/xm.c:871 msgid "Error while loading patterns." msgstr "Fehler beim Laden der Pattern." -#: app/xm.c:774 +#: app/xm.c:829 msgid "Can't open file" msgstr "Kann Datei nicht Жffnen" -#: app/xm.c:788 +#: app/xm.c:843 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:822 +#: app/xm.c:877 msgid "Error while loading instruments." msgstr "Fehler beim Laden der Instrumente." -#: app/xm.c:833 +#: app/xm.c:888 #, c-format msgid "" "Module contains sample(s) that are too long for the current mixer.\n" @@ -1406,6 +1453,18 @@ msgstr "" "Modul enthДlt Sample(s), die zu lang fЭr den aktuellen Mixer sind..\n" "Maximale Sample-LДnge ist %d." + +#~ msgid "Song length" +#~ msgstr "Song-LДnge" + +#~ msgid "Current pos" +#~ msgstr "Aktuelle Pos" + +#~ msgid "Restart pos" +#~ msgstr "Restart-Pos" + +#~ msgid "Saving Instruments not yet supported." +#~ msgstr "Speichern von Instrumenten noch nicht unterstЭtzt." #~ msgid "/Pattern/_Cut" #~ msgstr "/Pattern/_Ausschneiden" Binary files soundtracker-0.3.6/po/ja.gmo and soundtracker-0.3.7/po/ja.gmo differ diff -urN soundtracker-0.3.6/po/ja.po soundtracker-0.3.7/po/ja.po --- soundtracker-0.3.6/po/ja.po Sat Oct 30 18:52:43 1999 +++ soundtracker-0.3.7/po/ja.po Fri Dec 10 18:39:59 1999 @@ -1,4 +1,4 @@ -# ja.po(0.3.5-0) for SoundTracker +# ja.po(0.3.6-1) for SoundTracker # Copyright (C) 1998-1999 Michael Krause . # Atsushi Yamagata , 1999. # Yuuki NINOMIYA , 1999. @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: SoundTracker 0.3.5\n" -"POT-Creation-Date: 1999-10-08 16:31+0200\n" -"PO-Revision-Date: 1999-09-27 10:06+09:00\n" +"Project-Id-Version: SoundTracker 0.3.6\n" +"POT-Creation-Date: 1999-11-14 15:19+0100\n" +"PO-Revision-Date: 1999-11-15 11:31+09:00\n" "Last-Translator: Atsushi Yamagata \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" @@ -106,10 +106,35 @@ "╔╣╔╕╔С╔и╫пно╓кбп╓╥╓фALSA╔г╔п╔╓╔╧(╔╚║╪╔и:%d║╒╔г╔п╔╓╔╧:%d)╓╛Ё╚╓╠╓ч╓╩╓С╓г╓╥╓©:\n" "%s" -#: app/drivers/oss-input.c:90 +#: app/drivers/esd-output.c:94 +msgid "" +"Note that the ESD output is unusable in\n" +"interactive mode because of the latency added\n" +"by ESD. Use the OSS or ALSA output plug-ins\n" +"for serious work." +msgstr "" +"ESD╓Рди╡ц╓╥╓©бт╓а╩Ч╢ж╓г║╒ESD╫пно╓╛\n" +"бпоц╔Б║╪╔и╓г╩х╓╗╓й╓╓╓н╓гцМ╟у╓╥╓ф╓╞\n" +"╓ю╓╣╓╓║ё╫ебГ╓й╨Н╤х╓к╓оOSS╓ДALSA╫п\n" +"но╔в╔И╔╟╔╓╔С╓Р╩х╓ц╓ф╓╞╓ю╓╣╓╓║ё" + +#: app/drivers/esd-output.c:159 +#, c-format +msgid "" +"Couldn't connect to ESD for sound output:\n" +"%s" +msgstr "" +"╔╣╔╕╔С╔и╫пно╓РESD╓кюэбЁ╓г╓╜╓ч╓╩╓С╓г╓╥╓©:\n" +"%s" + +#: app/drivers/file-output.c:86 app/drivers/oss-input.c:90 msgid "no settings (yet), sorry!" msgstr "╓╧╓ъ╓ч╓╩╓С║╒(╓ч╓ю)юъдЙ╓╣╓Л╓ф╓╓╓ч╓╩╓С!" +#: app/drivers/file-output.c:161 app/sample-editor.c:1120 +msgid "Can't open file for writing." +msgstr "╫Я╓╜╧Ч╓ъ╓н╓©╓А╓к╔у╔║╔╓╔К╓╛Ё╚╓╠╓ч╓╩╓С║ё" + #: app/drivers/oss-input.c:188 #, c-format msgid "" @@ -157,11 +182,11 @@ msgid "Value" msgstr "цм" -#: app/envelope-box.c:749 app/gui.c:1078 +#: app/envelope-box.c:749 app/gui.c:1115 msgid "Insert" msgstr "ачфЧ" -#: app/envelope-box.c:755 app/gui.c:1085 +#: app/envelope-box.c:755 app/gui.c:1122 msgid "Delete" msgstr "╨О╫Э" @@ -259,7 +284,7 @@ msgid "Tempo" msgstr "╔ф╔С╔щ" -#: app/gui.c:211 +#: app/gui.c:220 msgid "" "Are you sure you want to free the current project?\n" "All changes will be lost!" @@ -267,67 +292,71 @@ "╔╚╔Л╔С╔х║╕╔в╔М╔╦╔╖╔╞╔х╓Р╡РйЭ╓╥╓©╓╓╓н╓оЁн╓╚╓г╓╧╓╚?\n" "а╢╓ф╓нйя╧╧╓╛╪╨╓О╓Л╓ч╓╧!" -#: app/gui.c:225 +#: app/gui.c:234 app/gui.c:246 msgid "Are you sure you want to overwrite the file?" msgstr "╔у╔║╔╓╔К╓Р╬Е╫Я╓╜╓╥╓©╓╓╓н╓оЁн╓╚╓г╓╧╓╚?" -#: app/gui.c:1069 +#: app/gui.c:1106 msgid "Song length" msgstr "╤йд╧" -#: app/gui.c:1070 +#: app/gui.c:1107 msgid "Current pos" msgstr "╦╫╨ъ╟лцж" -#: app/gui.c:1071 app/gui.c:1228 +#: app/gui.c:1108 app/gui.c:1266 msgid "Pattern" msgstr "╔я╔©║╪╔С" -#: app/gui.c:1072 +#: app/gui.c:1109 msgid "Restart pos" msgstr "╨фЁ╚╟лцж" -#: app/gui.c:1140 +#: app/gui.c:1177 msgid "Load XM..." msgstr "XM╔М║╪╔и..." -#: app/gui.c:1142 +#: app/gui.c:1179 msgid "Save XM..." msgstr "XMйщб╦..." #: app/gui.c:1181 +msgid "Render module as WAV..." +msgstr "WAV╓х╓╥╓ф╔Б╔╦╔Е║╪╔К╓Р╔Л╔С╔ю╔Й╔С╔╟╓╧╓К..." + +#: app/gui.c:1219 msgid "Play Song" msgstr "╤й╓н╨фю╦" -#: app/gui.c:1187 +#: app/gui.c:1225 msgid "Play Pattern" msgstr "╔я╔©║╪╔С╨фю╦" -#: app/gui.c:1193 +#: app/gui.c:1231 msgid "Stop" msgstr "дД╩ъ" -#: app/gui.c:1212 +#: app/gui.c:1250 msgid "Number of Channels:" msgstr "╔а╔Ц╔С╔м╔К©Т:" -#: app/gui.c:1244 +#: app/gui.c:1282 msgid "PatLength" msgstr "╔я╔©║╪╔Сд╧" -#: app/gui.c:1336 +#: app/gui.c:1374 msgid "Octave" msgstr "╔╙╔╞╔©║╪╔ж" -#: app/gui.c:1344 +#: app/gui.c:1382 msgid "Jump" msgstr "╔╦╔Ц╔С╔в" -#: app/gui.c:1352 +#: app/gui.c:1390 msgid "Instr" msgstr "Ёз╢О" -#: app/gui.c:1367 +#: app/gui.c:1405 msgid "Sample" msgstr "╔╣╔С╔в╔К" @@ -536,374 +565,382 @@ msgstr "йщб╦(_A)..." #: app/menubar.c:234 +msgid "Save Module as _WAV..." +msgstr "WAV╓х╓╥╓ф╔Б╔╦╔Е║╪╔К╓Рйщб╦..." + +#: app/menubar.c:239 msgid "_Quit" msgstr "╫╙н╩(_Q)" -#: app/menubar.c:241 +#: app/menubar.c:246 msgid "Clear _All" msgstr "а╢╓ф╬ц╣Н(_A)" -#: app/menubar.c:243 +#: app/menubar.c:248 msgid "Clear _Patterns Only" msgstr "╔я╔©║╪╔С╓н╓ъ╬ц╣Н(_P)" -#: app/menubar.c:245 +#: app/menubar.c:250 msgid "_Optimize Module" msgstr "╔Б╔╦╔Е║╪╔К╨ге╛╡╫(_O)" -#: app/menubar.c:252 app/menubar.c:263 app/menubar.c:281 +#: app/menubar.c:257 app/menubar.c:268 app/menubar.c:286 msgid "C_ut" msgstr "юз╪Х(_u)" -#: app/menubar.c:254 app/menubar.c:265 app/menubar.c:283 +#: app/menubar.c:259 app/menubar.c:270 app/menubar.c:288 msgid "_Copy" msgstr "╔Ё╔т║╪(_C)" -#: app/menubar.c:256 app/menubar.c:267 app/menubar.c:285 +#: app/menubar.c:261 app/menubar.c:272 app/menubar.c:290 msgid "_Paste" msgstr "е╫иу(_P)" -#: app/menubar.c:269 +#: app/menubar.c:274 msgid "_Insert" msgstr "ачфЧ(_I)" -#: app/menubar.c:271 +#: app/menubar.c:276 msgid "_Delete" msgstr "╨О╫Э(_D)" -#: app/menubar.c:279 +#: app/menubar.c:284 msgid "_Mark" msgstr "╔ч║╪╔╞(_M)" -#: app/menubar.c:292 +#: app/menubar.c:297 msgid "_Jazz Edit Mode" msgstr "Jazzйт╫╦╔Б║╪╔и(_J)" -#: app/menubar.c:297 +#: app/menubar.c:302 msgid "Transp_osition..." msgstr "╟эд╢(_o)..." -#: app/menubar.c:302 app/menubar.c:380 +#: app/menubar.c:307 app/menubar.c:385 msgid "_Pattern" msgstr "╔я╔©║╪╔С(_P)" -#: app/menubar.c:303 +#: app/menubar.c:308 msgid "_Track" msgstr "╔х╔И╔ц╔╞(_T)" -#: app/menubar.c:304 +#: app/menubar.c:309 msgid "_Selection" msgstr "а╙бР(_S)" -#: app/menubar.c:310 +#: app/menubar.c:315 msgid "_Find Unused Pattern" msgstr "л╓╩хмя╔я╔©║╪╔С╦║╨В(_F)" -#: app/menubar.c:312 +#: app/menubar.c:317 msgid "_Copy Current to Unused Pattern" msgstr "л╓╩хмя╔я╔©║╪╔С╓к╔╚╔Л╔С╔х╓Р╔Ё╔т║╪(_C)" -#: app/menubar.c:314 +#: app/menubar.c:319 msgid "C_lear Unused Patterns" msgstr "л╓╩хмя╔я╔©║╪╔С╬ц╣Н(_l)" -#: app/menubar.c:316 +#: app/menubar.c:321 msgid "_Pack Patterns" msgstr "╔я╔©║╪╔С║╕╔я╔ц╔╞(_P)" -#: app/menubar.c:323 +#: app/menubar.c:328 msgid "_Load XI..." msgstr "XI╔М║╪╔и(_L)..." -#: app/menubar.c:328 +#: app/menubar.c:333 msgid "_Delete Unused Instruments" msgstr "л╓╩хмяЁз╢О╨О╫Э(_D)" -#: app/menubar.c:336 +#: app/menubar.c:341 msgid "Display _Oscilloscopes" msgstr "╔╙╔╥╔М╔╧╔Ё║╪╔ви╫╪╗(_O)" -#: app/menubar.c:338 +#: app/menubar.c:343 msgid "Use _Backing Store" msgstr "╔п╔ц╔╜╔С╔╟║╕╔╧╔х╔╒╩хмя(_B)" -#: app/menubar.c:343 +#: app/menubar.c:348 msgid "_Keyboard Configuration..." msgstr "╔╜║╪╔э║╪╔июъдЙ(_K)..." -#: app/menubar.c:345 +#: app/menubar.c:350 msgid "_Audio Configuration..." msgstr "╔╙║╪╔г╔ё╔╙юъдЙ(_A)..." -#: app/menubar.c:347 +#: app/menubar.c:352 msgid "_Playback Effects..." msgstr "╨фю╦╦З╡л(_P)..." -#: app/menubar.c:349 +#: app/menubar.c:354 msgid "_GUI Configuration..." msgstr "GUIюъдЙ(_G)..." -#: app/menubar.c:354 +#: app/menubar.c:359 msgid "_Save Settings now" msgstr "юъдЙ╓Р╨ёйщб╦(_S)" -#: app/menubar.c:356 +#: app/menubar.c:361 msgid "Save Settings on _Exit" msgstr "╫╙н╩╩Ч╓кюъдЙ╓Рйщб╦(_E)" -#: app/menubar.c:363 +#: app/menubar.c:368 msgid "_About..." msgstr "╬ПйС(_A)..." -#: app/menubar.c:368 +#: app/menubar.c:373 msgid "Show _Tips..." msgstr "╣╩╓ни╫╪╗(_T)..." -#: app/menubar.c:370 +#: app/menubar.c:375 msgid "_XM Effects..." msgstr "_XM╦З╡л..." -#: app/menubar.c:377 +#: app/menubar.c:382 msgid "_File" msgstr "╔у╔║╔╓╔К(_F)" -#: app/menubar.c:378 +#: app/menubar.c:383 msgid "_Module" msgstr "╔Б╔╦╔Е║╪╔К(_M)" -#: app/menubar.c:379 +#: app/menubar.c:384 msgid "_Edit" msgstr "йт╫╦(_E)" -#: app/menubar.c:381 +#: app/menubar.c:386 msgid "_Instrument" msgstr "Ёз╢О(_I)" -#: app/menubar.c:382 +#: app/menubar.c:387 msgid "_Settings" msgstr "юъдЙ(_S)" -#: app/menubar.c:383 +#: app/menubar.c:388 msgid "_Help" msgstr "╔ь╔К╔в(_H)" -#: app/menubar.c:411 +#: app/menubar.c:416 msgid "/_File" msgstr "/╔у╔║╔╓╔К" -#: app/menubar.c:412 +#: app/menubar.c:417 msgid "/File/_Open..." msgstr "/╔у╔║╔╓╔К/Ё╚╓╞(_O)..." -#: app/menubar.c:413 +#: app/menubar.c:418 msgid "/File/Save _as..." msgstr "/╔у╔║╔╓╔К/йщб╦(_a)..." -#: app/menubar.c:414 +#: app/menubar.c:419 app/menubar.c:421 msgid "/File/-" msgstr "/╔у╔║╔╓╔К/-" -#: app/menubar.c:415 +#: app/menubar.c:420 +msgid "/File/Save Module as _WAV..." +msgstr "/╔у╔║╔╓╔К/_WAV╓х╓╥╓ф╔Б╔╦╔Е║╪╔К╓Рйщб╦..." + +#: app/menubar.c:422 msgid "/File/_Quit" msgstr "/╔у╔║╔╓╔К/╫╙н╩(_Q)" -#: app/menubar.c:416 +#: app/menubar.c:423 msgid "/_Module" msgstr "/╔Б╔╦╔Е║╪╔К" -#: app/menubar.c:417 +#: app/menubar.c:424 msgid "/Module/Clear _All" msgstr "/╔Б╔╦╔Е║╪╔К/а╢╓ф╬ц╣Н(_A)" -#: app/menubar.c:418 +#: app/menubar.c:425 msgid "/Module/Clear _Patterns Only" msgstr "/╔Б╔╦╔Е║╪╔К/╔я╔©║╪╔С╓н╓ъ╬ц╣Н(_P)" -#: app/menubar.c:419 +#: app/menubar.c:426 msgid "/Module/_Optimize Module" msgstr "/╔Б╔╦╔Е║╪╔К/╔Б╔╦╔Е║╪╔К╨ге╛╡╫(_O)" -#: app/menubar.c:420 +#: app/menubar.c:427 msgid "/_Edit" msgstr "/йт╫╦" -#: app/menubar.c:421 +#: app/menubar.c:428 msgid "/Edit/_Jazz Edit Mode" msgstr "/йт╫╦/Jazzйт╫╦╔Б║╪╔и(_J)" -#: app/menubar.c:422 app/menubar.c:424 +#: app/menubar.c:429 app/menubar.c:431 msgid "/Edit/-" msgstr "/йт╫╦/-" -#: app/menubar.c:423 +#: app/menubar.c:430 msgid "/Edit/_Transposition..." msgstr "/йт╫╦/╟эд╢(_T)..." -#: app/menubar.c:425 +#: app/menubar.c:432 msgid "/Edit/_Pattern" msgstr "/йт╫╦/╔я╔©║╪╔С" -#: app/menubar.c:426 +#: app/menubar.c:433 msgid "/Edit/Pattern/C_ut" msgstr "/йт╫╦/╔я╔©║╪╔С/юз╪Х(_u)" -#: app/menubar.c:427 +#: app/menubar.c:434 msgid "/Edit/Pattern/_Copy" msgstr "/йт╫╦/╔я╔©║╪╔С/╔Ё╔т║╪(_C)" -#: app/menubar.c:428 +#: app/menubar.c:435 msgid "/Edit/Pattern/_Paste" msgstr "/йт╫╦/╔я╔©║╪╔С/е╫иу(_P)" -#: app/menubar.c:429 +#: app/menubar.c:436 msgid "/Edit/_Track" msgstr "/йт╫╦/╔х╔И╔ц╔╞" -#: app/menubar.c:430 +#: app/menubar.c:437 msgid "/Edit/Track/C_ut" msgstr "/йт╫╦/╔х╔И╔ц╔╞/юз╪Х(_u)" -#: app/menubar.c:431 +#: app/menubar.c:438 msgid "/Edit/Track/_Copy" msgstr "/йт╫╦/╔х╔И╔ц╔╞/╔Ё╔т║╪(_C)" -#: app/menubar.c:432 +#: app/menubar.c:439 msgid "/Edit/Track/_Paste" msgstr "/йт╫╦/╔х╔И╔ц╔╞/е╫иу(_P)" -#: app/menubar.c:433 +#: app/menubar.c:440 msgid "/Edit/Track/_Insert" msgstr "/йт╫╦/╔х╔И╔ц╔╞/ачфЧ(_I)" -#: app/menubar.c:434 +#: app/menubar.c:441 msgid "/Edit/Track/_Delete" msgstr "/йт╫╦/╔х╔И╔ц╔╞/╨О╫Э(_D)" -#: app/menubar.c:435 +#: app/menubar.c:442 msgid "/Edit/_Selection" msgstr "/йт╫╦/а╙бР" -#: app/menubar.c:436 +#: app/menubar.c:443 msgid "/Edit/Selection/_Mark" msgstr "/йт╫╦/а╙бР/╔ч║╪╔╞(_M)" -#: app/menubar.c:437 +#: app/menubar.c:444 msgid "/Edit/Selection/C_ut" msgstr "/йт╫╦/а╙бР/юз╪Х(_u)" -#: app/menubar.c:438 +#: app/menubar.c:445 msgid "/Edit/Selection/_Copy" msgstr "/йт╫╦/а╙бР/╔Ё╔т║╪(_C)" -#: app/menubar.c:439 +#: app/menubar.c:446 msgid "/Edit/Selection/_Paste" msgstr "/йт╫╦/а╙бР/е╫иу(_P)" -#: app/menubar.c:440 +#: app/menubar.c:447 msgid "/_Pattern" msgstr "/╔я╔©║╪╔С" -#: app/menubar.c:441 +#: app/menubar.c:448 msgid "/Pattern/_Find Unused Pattern" msgstr "/╔я╔©║╪╔С/л╓╩хмя╔я╔©║╪╔С╦║╨В(_F)" -#: app/menubar.c:442 +#: app/menubar.c:449 msgid "/Pattern/_Copy Current to Unused Pattern" msgstr "/╔я╔©║╪╔С/л╓╩хмя╔я╔©║╪╔С╓к╔╚╔Л╔С╔х╓Р╔Ё╔т║╪(_C)" -#: app/menubar.c:443 +#: app/menubar.c:450 msgid "/Pattern/C_lear Unused Patterns" msgstr "/╔я╔©║╪╔С/л╓╩хмя╔я╔©║╪╔С╬ц╣Н(_l)" -#: app/menubar.c:444 +#: app/menubar.c:451 msgid "/Pattern/_Pack Patterns" msgstr "/╔я╔©║╪╔С/╔я╔©║╪╔С║╕╔я╔ц╔╞(_P)" -#: app/menubar.c:445 +#: app/menubar.c:452 msgid "/_Instrument" msgstr "/Ёз╢О" -#: app/menubar.c:446 +#: app/menubar.c:453 msgid "/Instrument/_Load XI..." msgstr "/Ёз╢О/XI╔М║╪╔и(_L)..." -#: app/menubar.c:447 +#: app/menubar.c:454 msgid "/Instrument/-" msgstr "/Ёз╢О/-" -#: app/menubar.c:448 +#: app/menubar.c:455 msgid "/Instrument/_Delete Unused Instruments" msgstr "/Ёз╢О/л╓╩хмяЁз╢О╨О╫Э(_D)" -#: app/menubar.c:449 +#: app/menubar.c:456 msgid "/_Settings" msgstr "/юъдЙ" -#: app/menubar.c:450 +#: app/menubar.c:457 msgid "/Settings/Display _Oscilloscopes" msgstr "/юъдЙ/╔╙╔╥╔М╔╧╔Ё║╪╔ви╫╪╗(_O)" -#: app/menubar.c:451 +#: app/menubar.c:458 msgid "/Settings/Use _Backing Store" msgstr "/юъдЙ/╔п╔ц╔╜╔С╔╟║╕╔╧╔х╔╒╩хмя(_B)" -#: app/menubar.c:452 app/menubar.c:457 +#: app/menubar.c:459 app/menubar.c:464 msgid "/Settings/-" msgstr "/юъдЙ/-" -#: app/menubar.c:453 +#: app/menubar.c:460 msgid "/Settings/_Keyboard Configuration..." msgstr "/юъдЙ/╔╜║╪╔э║╪╔июъдЙ(_K)..." -#: app/menubar.c:454 +#: app/menubar.c:461 msgid "/Settings/_Audio Configuration..." msgstr "/юъдЙ/╔╙║╪╔г╔ё╔╙юъдЙ(_A)..." -#: app/menubar.c:455 +#: app/menubar.c:462 msgid "/Settings/_Playback Effects..." msgstr "/юъдЙ/╨фю╦╦З╡л(_P)..." -#: app/menubar.c:456 +#: app/menubar.c:463 msgid "/Settings/_GUI Configuration..." msgstr "/юъдЙ/GUIюъдЙ(_G)..." -#: app/menubar.c:458 +#: app/menubar.c:465 msgid "/Settings/_Save Settings now" msgstr "/юъдЙ/юъдЙ╓Р╨ёйщб╦(_S)" -#: app/menubar.c:459 +#: app/menubar.c:466 msgid "/Settings/Save Settings on _Exit" msgstr "/юъдЙ/╫╙н╩╩Ч╓кюъдЙ╓Рйщб╦(_E)" -#: app/menubar.c:460 +#: app/menubar.c:467 msgid "/_Help" msgstr "/╔ь╔К╔в" -#: app/menubar.c:461 +#: app/menubar.c:468 msgid "/Help/_About..." msgstr "/╔ь╔К╔в/╬ПйС(_A)..." -#: app/menubar.c:462 +#: app/menubar.c:469 msgid "/Help/-" msgstr "/╔ь╔К╔в/-" -#: app/menubar.c:463 +#: app/menubar.c:470 msgid "/Help/Show _Tips..." msgstr "/╔ь╔К╔в/╣╩╓ни╫╪╗(_T)..." -#: app/menubar.c:464 +#: app/menubar.c:471 msgid "/Help/_XM Effects..." msgstr "/╔ь╔К╔в/XM╦З╡л(_X)..." -#: app/menubar.c:478 +#: app/menubar.c:485 msgid "/Settings/Display Oscilloscopes" msgstr "/юъдЙ/╔╙╔╥╔М╔╧╔Ё║╪╔ви╫╪╗(O)" -#: app/menubar.c:480 +#: app/menubar.c:487 msgid "/Settings/Use Backing Store" msgstr "/юъдЙ/╔п╔ц╔╜╔С╔╟║╕╔╧╔х╔╒╩хмя(B)" -#: app/menubar.c:482 +#: app/menubar.c:489 msgid "/Settings/Save Settings on Exit" msgstr "/юъдЙ/╫╙н╩╩Ч╓кюъдЙ╓Рйщб╦(E)" @@ -1098,10 +1135,6 @@ msgid "Read error." msgstr "фи╓ъ╧Ч╓ъ╔╗╔И║╪║ё" -#: app/sample-editor.c:1120 -msgid "Can't open file for writing." -msgstr "╫Я╓╜╧Ч╓ъ╓н╓©╓А╓к╔у╔║╔╓╔К╓╛Ё╚╓╠╓ч╓╩╓С║ё" - #: app/sample-editor.c:1157 msgid "OK" msgstr "н╩╡Р" @@ -1219,79 +1252,79 @@ msgid "Jazz Edit:" msgstr "Jazzйт╫╦:" -#: app/transposition.c:165 +#: app/transposition.c:166 msgid "Whole Song" msgstr "╤йа╢бн" -#: app/transposition.c:166 +#: app/transposition.c:167 msgid "All Patterns" msgstr "а╢╔я╔©║╪╔С" -#: app/transposition.c:167 +#: app/transposition.c:168 msgid "Current Pattern" msgstr "╦╫╨ъ╓н╔я╔©║╪╔С" -#: app/transposition.c:168 +#: app/transposition.c:169 msgid "Current Track" msgstr "╦╫╨ъ╓н╔х╔И╔ц╔╞" -#: app/transposition.c:172 +#: app/transposition.c:173 msgid "Current Instrument" msgstr "╦╫╨ъ╓нЁз╢О" -#: app/transposition.c:173 +#: app/transposition.c:174 msgid "All Instruments" msgstr "а╢Ёз╢О" -#: app/transposition.c:177 +#: app/transposition.c:178 msgid "Half note up" msgstr "х╬╡╩╬Е╓╡╓К" -#: app/transposition.c:178 +#: app/transposition.c:179 msgid "Half note down" msgstr "х╬╡╩╡╪╓╡╓К" -#: app/transposition.c:179 +#: app/transposition.c:180 msgid "Octave up" msgstr "╔╙╔╞╔©║╪╔ж╬Е╓╡╓К" -#: app/transposition.c:180 +#: app/transposition.c:181 msgid "Octave down" msgstr "╔╙╔╞╔©║╪╔ж╡╪╓╡╓К" -#: app/transposition.c:183 +#: app/transposition.c:184 msgid "Exchange 1 <-> 2" msgstr "╦Р╢╧ 1 <-> 2" -#: app/transposition.c:184 +#: app/transposition.c:185 msgid "Change 1 -> 2" msgstr "╦Р╢╧ 1 -> 2" -#: app/transposition.c:193 app/transposition.c:196 +#: app/transposition.c:194 app/transposition.c:197 msgid "Transposition Tools" msgstr "╟эд╢╔д║╪╔К" -#: app/transposition.c:216 +#: app/transposition.c:217 msgid "Scope of the operation:" msgstr "аЮ╨Н╔╧╔Ё║╪╔в:" -#: app/transposition.c:223 +#: app/transposition.c:224 msgid "Note Transposition" msgstr "╟эд╢╓нд╢" -#: app/transposition.c:253 +#: app/transposition.c:254 msgid "Instrument Changing" msgstr "Ёз╢О╦Р╢╧" -#: app/transposition.c:268 +#: app/transposition.c:269 msgid "Instrument 1:" msgstr "Ёз╢О 1:" -#: app/transposition.c:270 app/transposition.c:280 +#: app/transposition.c:271 app/transposition.c:281 msgid "Current instrument" msgstr "╦╫╨ъ╓нЁз╢О" -#: app/transposition.c:278 +#: app/transposition.c:279 msgid "Instrument 2:" msgstr "Ёз╢О 2:" @@ -1345,4 +1378,3 @@ msgstr "" "╔Б╔╦╔Е║╪╔К╓╛╦╫╨ъ╓н╔ъ╔╜╔╣║╕╔Б╔╦╔Е║╪╔К╓к╓од╧╡А╓╝╓К╔╣╔С╔в╔К╓Р╢ч╓С╓г╓╓╓ч╓╧║ё\n" "╔╣╔С╔в╔К╓н╨гбГд╧╓о%d╓г╓╧║ё" - Binary files soundtracker-0.3.6/po/ru.gmo and soundtracker-0.3.7/po/ru.gmo differ diff -urN soundtracker-0.3.6/po/ru.po soundtracker-0.3.7/po/ru.po --- soundtracker-0.3.6/po/ru.po Thu Jan 1 01:00:00 1970 +++ soundtracker-0.3.7/po/ru.po Wed Dec 22 12:32:19 1999 @@ -0,0 +1,1375 @@ +# Русская локализация для Sound Tracker +# Copyright (C) 1999 Free Software Foundation, Inc. +# Michael Shigorin , 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: soundtracker-0.3.6\n" +"POT-Creation-Date: 1999-10-08 20:25+0200\n" +"PO-Revision-Date: 1999-12-08 17:01+0200\n" +"Last-Translator: Michael Shigorin \n" +"Language-Team: Russian \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=koi8-r\n" +"Content-Transfer-Encoding: 8bit\n" + +#: app/audioconfig.c:55 +msgid "Playback Output" +msgstr "Выход воспроизведения" + +#: app/audioconfig.c:61 +msgid "Editing Output" +msgstr "Выход редактирования" + +#: app/audioconfig.c:67 +msgid "Sampling" +msgstr "Оцифровка" + +#: app/audioconfig.c:178 +msgid "Driver Module" +msgstr "Модуль драйвера" + +#: app/audioconfig.c:186 app/audioconfig.c:189 +msgid "Audio Configuration" +msgstr "Конфигурация аудио" + +#: app/drivers/alsa-input.c:125 app/drivers/alsa-output.c:135 +#, c-format +msgid "(%d bytes)" +msgstr "(%d байт)" + +#: app/drivers/alsa-input.c:128 app/drivers/alsa-output.c:138 +#: app/drivers/oss-output.c:139 +#, c-format +msgid "Estimated audio delay: %f microseconds" +msgstr "Ожидаемая задержка звука: %f микросекунд" + +#: app/drivers/alsa-input.c:193 app/drivers/alsa-output.c:200 +#: app/drivers/oss-output.c:188 +msgid "These changes won't take effect until you restart playing." +msgstr "Эти изменения вступят в силу при следующем воспроизведении" + +#: app/drivers/alsa-input.c:205 app/drivers/alsa-output.c:212 +#: app/drivers/oss-output.c:200 +msgid "Resolution:" +msgstr "Разрешение:" + +#: app/drivers/alsa-input.c:215 app/drivers/alsa-output.c:222 +#: app/drivers/oss-output.c:210 +msgid "Channels:" +msgstr "Каналы:" + +#: app/drivers/alsa-input.c:225 app/drivers/alsa-output.c:232 +#: app/drivers/oss-output.c:220 +msgid "Frequency [Hz]:" +msgstr "Частота [Гц]:" + +#: app/drivers/alsa-input.c:235 app/drivers/alsa-output.c:242 +#: app/drivers/oss-output.c:230 +msgid "Buffer Size:" +msgstr "Размер буфера:" + +#: app/drivers/alsa-input.c:268 app/drivers/alsa-output.c:275 +msgid "ALSA card number:" +msgstr "Номер карты (ALSA):" + +#: app/drivers/alsa-input.c:283 app/drivers/alsa-output.c:290 +msgid "ALSA device number:" +msgstr "Номер устройства (ALSA):" + +#: app/drivers/alsa-input.c:374 +#, c-format +msgid "" +"Couldn't open ALSA device for sound input (card:%d, device:%d):\n" +"%s" +msgstr "" +"Невозможно открыть устройство ALSA для записи звука\n" +"(карта %d, устройство %d):\n" +"%s" + +#: app/drivers/alsa-input.c:426 app/drivers/alsa-output.c:427 +#: app/drivers/oss-input.c:221 app/drivers/oss-output.c:390 +msgid "Required sound output format not supported.\n" +msgstr "Требуемый формат вывода звука не поддерживается.\n" + +#: app/drivers/alsa-input.c:439 app/drivers/alsa-output.c:442 +msgid "Required sound output parameters not supported.\n" +msgstr "Требуемые параметры вывода звука не поддерживаются.\n" + +#: app/drivers/alsa-output.c:378 +#, c-format +msgid "" +"Couldn't open ALSA device for sound output (card:%d, device:%d):\n" +"%s" +msgstr "" +"Невозможно открыть устройство ALSA для вывода звука\n" +"(карта %d, устройство %d):\n" +"%s" + +#: app/drivers/esd-output.c:94 +msgid "" +"Note that the ESD output is unusable in\n" +"interactive mode because of the latency added\n" +"by ESD. Use the OSS or ALSA output plug-ins\n" +"for serious work." +msgstr "" +"Заметьте, что вывод через ESD малопригоден для\n" +"интерактивного режима из-за задержек, вводимых\n" +"ESD. Для серьезной работы используйте OSS или ALSA." + +#: app/drivers/esd-output.c:159 +#, c-format +msgid "" +"Couldn't connect to ESD for sound output:\n" +"%s" +msgstr "" +"Невозможно соединиться с ESD для вывода звука:\n" +"%s" + +#: app/drivers/file-output.c:86 app/drivers/oss-input.c:90 +msgid "no settings (yet), sorry!" +msgstr "(пока) нет настроек, сорри!" + +#: app/drivers/file-output.c:161 app/sample-editor.c:1120 +msgid "Can't open file for writing." +msgstr "Невозможно открыть файл для записи." + +#: app/drivers/oss-input.c:188 +#, c-format +msgid "" +"Couldn't open /dev/dsp for sampling:\n" +"%s" +msgstr "Невозможно открыть /dev/dsp для оцифровки:\n" +"%s" + +#: app/drivers/oss-output.c:173 +#, c-format +msgid "(%d samples)" +msgstr "(%d сэмплов)" + +#: app/drivers/oss-output.c:357 +#, c-format +msgid "" +"Couldn't open /dev/dsp for sound output:\n" +"%s" +msgstr "" +"Невозможно открыть /dev/dsp для вывода звука:\n" +"%s" + +#: app/effectsconfig.c:56 +msgid "Master Reverb" +msgstr "Общая реверберация" + +#: app/effectsconfig.c:153 app/effectsconfig.c:156 +msgid "Playback Effects Configuration" +msgstr "Конфигурация эффектов воспроизведения" + +#: app/envelope-box.c:740 +msgid "Length" +msgstr "Длина" + +#: app/envelope-box.c:741 +msgid "Current" +msgstr "Текущий" + +#: app/envelope-box.c:742 +msgid "Offset" +msgstr "Смещение" + +#: app/envelope-box.c:743 +msgid "Value" +msgstr "Значение" + +#: app/envelope-box.c:749 app/gui.c:1115 +msgid "Insert" +msgstr "Вставка" + +#: app/envelope-box.c:755 app/gui.c:1122 +msgid "Delete" +msgstr "Удаление" + +#: app/envelope-box.c:843 +msgid "" +"Graphical\n" +"Envelope\n" +"Editor\n" +"only in\n" +"GNOME Version" +msgstr "" +"Графический\n" +"редактор\n" +"envelope\n" +"только в\n" +"GNOME-версии" + +#: app/envelope-box.c:858 +msgid "Sustain" +msgstr "Затухание" + +#: app/envelope-box.c:866 +msgid "Point" +msgstr "Точка" + +#: app/envelope-box.c:868 +msgid "Loop" +msgstr "Цикл" + +#: app/envelope-box.c:876 app/sample-editor.c:207 +msgid "Start" +msgstr "Начало" + +#: app/envelope-box.c:877 app/sample-editor.c:208 +msgid "End" +msgstr "Конец" + +#: app/gui-settings.c:75 +msgid "Scopes Frequency" +msgstr "Частота осциллографа" + +#: app/gui-settings.c:78 +msgid "Tracker Frequency" +msgstr "Частота трекера" + +#: app/gui-settings.c:161 app/gui-settings.c:164 +msgid "GUI Configuration" +msgstr "Конфигурация GUI" + +#: app/gui-settings.c:189 +msgid "Use Hexadecimal Numbers" +msgstr "Использовать Hex-числа" + +#: app/gui-settings.c:196 +msgid "Advance Cursor in FX Columns" +msgstr "Продвигать курсор в колонках FX" + +#: app/gui-settings.c:203 +msgid "Use anti-aliased envelope editor" +msgstr "Антиалиасинг в envelope-редакторе" + +#: app/gui-settings.c:209 +msgid "You need to restart SoundTracker for this change to come into effect." +msgstr "Перезапустите SoundTracker для учета этих изменений." + +#: app/gui-settings.c:218 +msgid "Scopes buffer size [MB]" +msgstr "Размер буфера осциллографов [Мб]" + +#: app/gui-settings.c:237 +msgid "Highlight rows:" +msgstr "Подсвечивать строки:" + +#: app/gui-settings.c:255 +msgid "`Save XM' saves all non-empty patterns" +msgstr "`Сохранить XM' сохраняет все непустые паттерны" + +#: app/gui-subs.c:386 +msgid "Question" +msgstr "Вопрос" + +#: app/gui-subs.c:403 app/sample-editor.c:1172 +msgid "Cancel" +msgstr "Отмена" + +#: app/gui-subs.c:421 +msgid "Warning" +msgstr "Предупреждение" + +#: app/gui-subs.c:447 +msgid "Error!" +msgstr "Ошибка!" + +#: app/gui.c:82 +msgid "Tempo" +msgstr "Темп" + +#: app/gui.c:220 +msgid "" +"Are you sure you want to free the current project?\n" +"All changes will be lost!" +msgstr "" +"Вы уверены, что хотите очистить текущий проект?\n" +"Все изменения будут потеряны!" + +#: app/gui.c:234 app/gui.c:246 +msgid "Are you sure you want to overwrite the file?" +msgstr "Вы уверены, что хотите перезаписать файл?" + +#: app/gui.c:1106 +msgid "Song length" +msgstr "Длина песни" + +#: app/gui.c:1107 +msgid "Current pos" +msgstr "Позиция" + +#: app/gui.c:1108 app/gui.c:1266 +msgid "Pattern" +msgstr "Паттерн" + +#: app/gui.c:1109 +msgid "Restart pos" +msgstr "Рестарт с" + +#: app/gui.c:1177 +msgid "Load XM..." +msgstr "Загрузить XM..." + +#: app/gui.c:1179 +msgid "Save XM..." +msgstr "Сохранить XM..." + +#: app/gui.c:1181 +msgid "Render module as WAV..." +msgstr "Записать модуль как WAV..." + +#: app/gui.c:1219 +msgid "Play Song" +msgstr "Играть песню" + +#: app/gui.c:1225 +msgid "Play Pattern" +msgstr "Играть паттерн" + +#: app/gui.c:1231 +msgid "Stop" +msgstr "Стоп" + +#: app/gui.c:1250 +msgid "Number of Channels:" +msgstr "Количество каналов:" + +#: app/gui.c:1282 +msgid "PatLength" +msgstr "Длина паттерна:" + +#: app/gui.c:1374 +msgid "Octave" +msgstr "Октава" + +#: app/gui.c:1382 +msgid "Jump" +msgstr "Прыжок" + +#: app/gui.c:1390 +msgid "Instr" +msgstr "Инструмент" + +#: app/gui.c:1405 +msgid "Sample" +msgstr "Сэмпл" + +#: app/instrument-editor.c:75 +msgid "VolFade" +msgstr "Спад" + +#: app/instrument-editor.c:76 +msgid "VibSpeed" +msgstr "Вибрато: Скорость" + +#: app/instrument-editor.c:77 +msgid "VibDepth" +msgstr "Глубина" + +#: app/instrument-editor.c:78 +msgid "VibSweep" +msgstr "Размах" + +#: app/instrument-editor.c:154 +msgid "Can't open file." +msgstr "Невозможно открыть файл." + +#: app/instrument-editor.c:174 +msgid "Saving Instruments not yet supported." +msgstr "Сохранение инструментов еще не поддерживается." + +#: app/instrument-editor.c:182 +msgid "Sine" +msgstr "Синусоида" + +#: app/instrument-editor.c:182 +msgid "Square" +msgstr "Прямоугольник" + +#: app/instrument-editor.c:182 +msgid "Saw Down" +msgstr "Пила (вниз)" + +#: app/instrument-editor.c:182 +msgid "Saw Up" +msgstr "Пила (вверх)" + +#: app/instrument-editor.c:186 +msgid "Instrument Editor" +msgstr "Редактор инструментов" + +#: app/instrument-editor.c:195 +msgid "Volume envelope" +msgstr "Envelope громкости" + +#: app/instrument-editor.c:203 +msgid "Panning envelope" +msgstr "Envelope панорамирования" + +#: app/instrument-editor.c:220 +msgid "Load Instrument.." +msgstr "Загрузить инструмент" + +#: app/instrument-editor.c:222 +msgid "Save Instrument.." +msgstr "Сохранить инструмент" + +#: app/instrument-editor.c:224 +msgid "Load XI" +msgstr "Загрузить XI" + +#: app/instrument-editor.c:230 +msgid "Save XI" +msgstr "Сохранить XI" + +#: app/instrument-editor.c:250 +msgid "Vibrato Type:" +msgstr "Тип вибрато:" + +#: app/instrument-editor.c:322 +msgid "Note:" +msgstr "Нота:" + +#: app/instrument-editor.c:340 +msgid "Initialize" +msgstr "Инициализовать" + +#: app/keys.c:123 +msgid "The key that inserts the special keyoff note for FastTracker modules." +msgstr "Клавиша, вставляющая keyoff-ноту в FastTracker-модули" + +#: app/keys.c:135 +msgid "Upper Octave Keys.." +msgstr "Клавиши верхней октавы" + +#: app/keys.c:136 +msgid "" +"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." +msgstr "" +"Это клавиши верхней половины клавиатуры. Клавиша 'до' обычно справа от Tab. " +"Остальные клавиши расположены подобно клавиатуре пианино, включая клавиши " +"с цифрами в верхнем ряду." + +#: app/keys.c:142 +msgid "Lower Octave Keys.." +msgstr "Клавиши нижней октавы" + +#: app/keys.c:143 +msgid "" +"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." +msgstr "" +"Это клавиши нижней половины клавиатуры. Клавиша 'до' обычно справа от Shift. " +"Остальные клавиши расположены подобно клавиатуре пианино, включая клавиши " +"среднего буквенного ряда." + +#: app/keys.c:149 +msgid "Other Keys.." +msgstr "Другие клавиши" + +#: app/keys.c:150 +msgid "Various other keys" +msgstr "Разнообразные клавиши" + +#: app/keys.c:433 +msgid "Function" +msgstr "Функция" + +#: app/keys.c:434 +msgid "Assignment" +msgstr "Назначенная клавиша" + +#: app/keys.c:443 app/keys.c:446 +msgid "Keyboard Configuration" +msgstr "Конфигурация клавиатуры" + +#: app/keys.c:491 +msgid "Key Group Explanation" +msgstr "Пояснение групп клавиатуры" + +#: app/keys.c:508 +msgid "Key Explanation" +msgstr "Пояснение клавиш" + +#: app/keys.c:539 +msgid "Modifiers:" +msgstr "Модификаторы:" + +#: app/keys.c:565 +msgid "Learn selected key" +msgstr "Запомнить выбранную клавишу" + +#: app/keys.c:571 +msgid "Learn all keys" +msgstr "Запомнить все клавиши" + +#: app/keys.c:577 +msgid "" +"Please press the desired key combination!\n" +"Click into left list to cancel" +msgstr "" +"Пожалуйста, нажмите желаемую комбинацию клавиш!\n" +"Щелкните по списку слева для отмены" + +#: app/keys.c:635 +msgid "" +"The keyboard configuration file is defective.\n" +"Please use the Keyboard Configuration dialog." +msgstr "" +"Файл конфигурации клавиатуры поврежден.\n" +"Пожалуйста, используйте Диалог конфигурации клавиатуры." + +#: app/keys.c:845 +msgid "" +"Automatic key configuration unsuccessful.\n" +"Please use the Keyboard Configuration dialog\n" +"in the Settings menu." +msgstr "" +"Автоконфигурирование клавиш не удалось.\n" +"Пожалуйста, используйте Диалог конфигурации клавиатуры" +"в меню Настроек." + +#: app/menubar.c:98 +msgid "Ok" +msgstr "ОК" + +#: app/menubar.c:134 +msgid "" +"Are you sure you want to do this?\n" +"All changes will be lost!" +msgstr "" +"Вы уверены в том, что делаете?\n" +"Все изменения будут утеряны!" + +#: app/menubar.c:156 +msgid "" +"Are you sure you want to quit?\n" +"All changes will be lost!" +msgstr "" +"Вы уверены, что хотите выйти?" +"Все изменения будут утеряны!" + +#: app/menubar.c:227 +msgid "_Open..." +msgstr "_Открыть..." + +#: app/menubar.c:229 +msgid "Save _as..." +msgstr "_Сохранить как..." + +#: app/menubar.c:234 +msgid "Save Module as _WAV..." +msgstr "Сохранить _модуль как WAV..." + +#: app/menubar.c:239 +msgid "_Quit" +msgstr "_Выход" + +#: app/menubar.c:246 +msgid "Clear _All" +msgstr "Очистить _все" + +#: app/menubar.c:248 +msgid "Clear _Patterns Only" +msgstr "Очистить только _паттерны" + +#: app/menubar.c:250 +msgid "_Optimize Module" +msgstr "_Оптимизировать модуль" + +#: app/menubar.c:257 app/menubar.c:268 app/menubar.c:286 +msgid "C_ut" +msgstr "Выр_езать" + +#: app/menubar.c:259 app/menubar.c:270 app/menubar.c:288 +msgid "_Copy" +msgstr "_Копировать" + +#: app/menubar.c:261 app/menubar.c:272 app/menubar.c:290 +msgid "_Paste" +msgstr "_Вставить" + +#: app/menubar.c:274 +msgid "_Insert" +msgstr "_Добавить" + +#: app/menubar.c:276 +msgid "_Delete" +msgstr "_Удалить" + +#: app/menubar.c:284 +msgid "_Mark" +msgstr "_Отметить" + +#: app/menubar.c:297 +msgid "_Jazz Edit Mode" +msgstr "Режим редактирования _Jazz" + +#: app/menubar.c:302 +msgid "Transp_osition..." +msgstr "_Транспозиция" + +#: app/menubar.c:307 app/menubar.c:385 +msgid "_Pattern" +msgstr "П_аттерн" + +#: app/menubar.c:308 +msgid "_Track" +msgstr "_Трек" + +#: app/menubar.c:309 +msgid "_Selection" +msgstr "_Выделение" + +#: app/menubar.c:315 +msgid "_Find Unused Pattern" +msgstr "_Найти свободный паттерн" + +#: app/menubar.c:317 +msgid "_Copy Current to Unused Pattern" +msgstr "_Копировать текущий паттерн в свободный" + +#: app/menubar.c:319 +msgid "C_lear Unused Patterns" +msgstr "_Очистить свободные паттерны" + +#: app/menubar.c:321 +msgid "_Pack Patterns" +msgstr "_Упаковать паттерны" + +#: app/menubar.c:328 +msgid "_Load XI..." +msgstr "_Загрузить XI..." + +#: app/menubar.c:333 +msgid "_Delete Unused Instruments" +msgstr "_Удалить неиспользуемые инструменты" + +#: app/menubar.c:341 +msgid "Display _Oscilloscopes" +msgstr "_Осциллографы" + +#: app/menubar.c:343 +msgid "Use _Backing Store" +msgstr "Использовать _склад" + +#: app/menubar.c:348 +msgid "_Keyboard Configuration..." +msgstr "_Конфигурация клавиатуры..." + +#: app/menubar.c:350 +msgid "_Audio Configuration..." +msgstr "Конфигурация _аудио..." + +#: app/menubar.c:352 +msgid "_Playback Effects..." +msgstr "_Эффекты воспроизведения..." + +#: app/menubar.c:354 +msgid "_GUI Configuration..." +msgstr "Кон_фигурация GUI..." + +#: app/menubar.c:359 +msgid "_Save Settings now" +msgstr "_Сохранить настройки" + +#: app/menubar.c:361 +msgid "Save Settings on _Exit" +msgstr "Сохранять настройки при _выходе" + +#: app/menubar.c:368 +msgid "_About..." +msgstr "_О программе..." + +#: app/menubar.c:373 +msgid "Show _Tips..." +msgstr "_Подсказки..." + +#: app/menubar.c:375 +msgid "_XM Effects..." +msgstr "_Эффекты XM..." + +#: app/menubar.c:382 +msgid "_File" +msgstr "_Файл" + +#: app/menubar.c:383 +msgid "_Module" +msgstr "_Модуль" + +#: app/menubar.c:384 +msgid "_Edit" +msgstr "_Правка" + +#: app/menubar.c:386 +msgid "_Instrument" +msgstr "_Инструмент" + +#: app/menubar.c:387 +msgid "_Settings" +msgstr "_Настройки" + +#: app/menubar.c:388 +msgid "_Help" +msgstr "_Справка" + +#: app/menubar.c:416 +msgid "/_File" +msgstr "/_Файл" + +#: app/menubar.c:417 +msgid "/File/_Open..." +msgstr "/Файл/_Открыть..." + +#: app/menubar.c:418 +msgid "/File/Save _as..." +msgstr "/Файл/Сохранить _как..." + +#: app/menubar.c:419 app/menubar.c:421 +msgid "/File/-" +msgstr "/Файл/-" + +#: app/menubar.c:420 +msgid "/File/Save Module as _WAV..." +msgstr "/Файл/Сохранить _модуль как WAV..." + +#: app/menubar.c:422 +msgid "/File/_Quit" +msgstr "/Файл/_Выход" + +#: app/menubar.c:423 +msgid "/_Module" +msgstr "/_Модуль" + +#: app/menubar.c:424 +msgid "/Module/Clear _All" +msgstr "/Модуль/Очистить _все" + +#: app/menubar.c:425 +msgid "/Module/Clear _Patterns Only" +msgstr "/Модуль/Очистить только _паттерны" + +#: app/menubar.c:426 +msgid "/Module/_Optimize Module" +msgstr "/Модуль/_Оптимизировать модуль" + +#: app/menubar.c:427 +msgid "/_Edit" +msgstr "/_Правка" + +#: app/menubar.c:428 +msgid "/Edit/_Jazz Edit Mode" +msgstr "/Правка/Режим редактирования _Jazz" + +#: app/menubar.c:429 app/menubar.c:431 +msgid "/Edit/-" +msgstr "/Правка/-" + +#: app/menubar.c:430 +msgid "/Edit/_Transposition..." +msgstr "/Правка/_Транспозиция" + +#: app/menubar.c:432 +msgid "/Edit/_Pattern" +msgstr "/Правка/_Паттерн" + +#: app/menubar.c:433 +msgid "/Edit/Pattern/C_ut" +msgstr "/Правка/Паттерн/Выр_езать" + +#: app/menubar.c:434 +msgid "/Edit/Pattern/_Copy" +msgstr "/Правка/Паттерн/_Копировать" + +#: app/menubar.c:435 +msgid "/Edit/Pattern/_Paste" +msgstr "/Правка/Паттерн/_Вставить" + +#: app/menubar.c:436 +msgid "/Edit/_Track" +msgstr "/Правка/_Трек" + +#: app/menubar.c:437 +msgid "/Edit/Track/C_ut" +msgstr "/Правка/_Трек/Выр_езать" + +#: app/menubar.c:438 +msgid "/Edit/Track/_Copy" +msgstr "/Правка/_Трек/_Копировать" + +#: app/menubar.c:439 +msgid "/Edit/Track/_Paste" +msgstr "/Правка/_Трек/_Вставить" + +#: app/menubar.c:440 +msgid "/Edit/Track/_Insert" +msgstr "/Правка/_Трек/_Добавить" + +#: app/menubar.c:441 +msgid "/Edit/Track/_Delete" +msgstr "/Правка/_Трек/_Удалить" + +#: app/menubar.c:442 +msgid "/Edit/_Selection" +msgstr "/Правка/_Выделение" + +#: app/menubar.c:443 +msgid "/Edit/Selection/_Mark" +msgstr "/Правка/_Выделение/_Отметить" + +#: app/menubar.c:444 +msgid "/Edit/Selection/C_ut" +msgstr "/Правка/_Выделение/Выр_езать" + +#: app/menubar.c:445 +msgid "/Edit/Selection/_Copy" +msgstr "/Правка/_Выделение/_Копировать" + +#: app/menubar.c:446 +msgid "/Edit/Selection/_Paste" +msgstr "/Правка/_Выделение/_Вставить" + +#: app/menubar.c:447 +msgid "/_Pattern" +msgstr "/П_аттерн" + +#: app/menubar.c:448 +msgid "/Pattern/_Find Unused Pattern" +msgstr "/П_аттерн/_Найти свободный паттерн" + +#: app/menubar.c:449 +msgid "/Pattern/_Copy Current to Unused Pattern" +msgstr "/П_аттерн/_Копировать текущий паттерн в свободный" + +#: app/menubar.c:450 +msgid "/Pattern/C_lear Unused Patterns" +msgstr "/П_аттерн/_Очистить свободные паттерны" + +#: app/menubar.c:451 +msgid "/Pattern/_Pack Patterns" +msgstr "/П_аттерн/_Упаковать паттерны" + +#: app/menubar.c:452 +msgid "/_Instrument" +msgstr "/_Инструмент" + +#: app/menubar.c:453 +msgid "/Instrument/_Load XI..." +msgstr "/Инструмент/_Загрузить XI..." + +#: app/menubar.c:454 +msgid "/Instrument/-" +msgstr "/Инструмент/-" + +#: app/menubar.c:455 +msgid "/Instrument/_Delete Unused Instruments" +msgstr "/Инструмент/_Удалить неиспользуемые инструменты" + +#: app/menubar.c:456 +msgid "/_Settings" +msgstr "/Св_ойства" + +#: app/menubar.c:457 +msgid "/Settings/Display _Oscilloscopes" +msgstr "/Свойства/_Осциллографы" + +#: app/menubar.c:458 +msgid "/Settings/Use _Backing Store" +msgstr "/Свойства/Использовать _склад" + +#: app/menubar.c:459 app/menubar.c:464 +msgid "/Settings/-" +msgstr "/Свойства/-" + +#: app/menubar.c:460 +msgid "/Settings/_Keyboard Configuration..." +msgstr "/Свойства/_Конфигурация клавиатуры..." + +#: app/menubar.c:461 +msgid "/Settings/_Audio Configuration..." +msgstr "/Свойства/Конфигурация _аудио..." + +#: app/menubar.c:462 +msgid "/Settings/_Playback Effects..." +msgstr "/Свойства/_Эффекты воспроизведения..." + +#: app/menubar.c:463 +msgid "/Settings/_GUI Configuration..." +msgstr "/Свойства/Кон_фигурация GUI..." + +#: app/menubar.c:465 +msgid "/Settings/_Save Settings now" +msgstr "/Свойства/_Сохранить свойства" + +#: app/menubar.c:466 +msgid "/Settings/Save Settings on _Exit" +msgstr "/Свойства/Сохранять свойства при _выходе" + +#: app/menubar.c:467 +msgid "/_Help" +msgstr "/_Справка" + +#: app/menubar.c:468 +msgid "/Help/_About..." +msgstr "/Справка/_О программе..." + +#: app/menubar.c:469 +msgid "/Help/-" +msgstr "/Справка/-" + +#: app/menubar.c:470 +msgid "/Help/Show _Tips..." +msgstr "/Справка/_Подсказки..." + +#: app/menubar.c:471 +msgid "/Help/_XM Effects..." +msgstr "/Справка/_Эффекты XM..." + +#: app/menubar.c:485 +msgid "/Settings/Display Oscilloscopes" +msgstr "/Свойства/_Осциллографы" + +#: app/menubar.c:487 +msgid "/Settings/Use Backing Store" +msgstr "/Свойства/Использовать _склад" + +#: app/menubar.c:489 +msgid "/Settings/Save Settings on Exit" +msgstr "/Свойства/Сохранять свойства при _выходе" + +#: app/module-info.c:116 +msgid "Instrument Name" +msgstr "Название инструмента" + +#: app/module-info.c:116 +msgid "#smpl" +msgstr "сэмплов" + +#: app/module-info.c:117 +msgid "Sample Name" +msgstr "Название сэмпла" + +#: app/module-info.c:118 +msgid "Linear" +msgstr "Линейно" + +#: app/module-info.c:118 app/sample-editor.c:167 +msgid "Amiga" +msgstr "Amiga" + +#: app/module-info.c:125 +msgid "Module Info" +msgstr "Информация о модуле" + +#: app/module-info.c:165 +msgid "Songname:" +msgstr "Название песни:" + +#: app/module-info.c:180 +msgid "Frequencies:" +msgstr "Частоты:" + +#: app/module-info.c:185 +msgid "ProTracker Mode" +msgstr "Режим ProTracker" + +#: app/preferences.c:58 +msgid "" +"A directory called '.soundtracker' has been created in your\n" +"home directory to store configuration files.\n" +msgstr "" +"Каталог под названием '~/.soundtracker' создан, чтобы\n" +"хранить в нем файлы конфигурации.\n" + +#: app/sample-editor.c:166 +msgid "No loop" +msgstr "Нет цикла" + +#: app/sample-editor.c:168 +msgid "PingPong" +msgstr "Пинг-понг" + +#: app/sample-editor.c:172 +msgid "8 bits" +msgstr "8 бит" + +#: app/sample-editor.c:173 +msgid "16 bits" +msgstr "16 бит" + +#: app/sample-editor.c:179 +msgid "Sample Editor" +msgstr "Редактор сэмплов" + +#: app/sample-editor.c:219 +msgid "Volume" +msgstr "Громкость" + +#: app/sample-editor.c:220 +msgid "Panning" +msgstr "Панорамирование" + +#: app/sample-editor.c:221 +msgid "Finetune" +msgstr "Подстройка" + +#: app/sample-editor.c:232 +msgid "SelStart" +msgstr "Нач. выделения" + +#: app/sample-editor.c:233 +msgid "SelEnd" +msgstr "Кон. выделения" + +#: app/sample-editor.c:236 +msgid "Reset Sel" +msgstr "Сброс выделения" + +#: app/sample-editor.c:241 +msgid "RelNote" +msgstr "Отн. нота" + +#: app/sample-editor.c:242 +msgid "Length: 0" +msgstr "Длина: 0" + +#: app/sample-editor.c:255 +msgid "Load Sample.." +msgstr "Загрузить сэмпл..." + +#: app/sample-editor.c:256 +msgid "Save WAV.." +msgstr "Сохранить WAV..." + +#: app/sample-editor.c:259 +msgid "Load Sample" +msgstr "Загрузить сэмпл" + +#: app/sample-editor.c:268 +msgid "Save WAV" +msgstr "Сохранить WAV" + +#: app/sample-editor.c:278 +msgid "Clear" +msgstr "Очистить" + +#: app/sample-editor.c:284 +msgid "Monitor" +msgstr "Следить" + +#: app/sample-editor.c:290 +msgid "Volume Ramp" +msgstr "Спад громкости" + +#: app/sample-editor.c:300 +msgid "Zoom to selection" +msgstr "Увеличить выделение" + +#: app/sample-editor.c:306 +msgid "Show all" +msgstr "Показать все" + +#: app/sample-editor.c:312 +msgid "Zoom in (+50%)" +msgstr "Увеличить (+50%)" + +#: app/sample-editor.c:318 +msgid "Zoom out (-50%)" +msgstr "Уменьшить (-50%)" + +#: app/sample-editor.c:324 +msgid "Resample" +msgstr "Перецифровать" + +#: app/sample-editor.c:335 +msgid "Cut" +msgstr "Вырезать" + +#: app/sample-editor.c:341 +msgid "Remove" +msgstr "Удалить" + +#: app/sample-editor.c:347 +msgid "Copy" +msgstr "Копировать" + +#: app/sample-editor.c:353 +msgid "Paste" +msgstr "Вставить" + +#: app/sample-editor.c:359 +msgid "Filter" +msgstr "Фильтр" + +#: app/sample-editor.c:459 +#, c-format +msgid "Length: %d" +msgstr "Длина: %d" + +#: app/sample-editor.c:957 +msgid "" +msgstr "<только вставлено>" + +#: app/sample-editor.c:1034 +msgid "Can't read sample" +msgstr "Невозможно прочитать сэмпл" + +#: app/sample-editor.c:1040 +msgid "Sample is too long for current mixer module. Loading anyway." +msgstr "Сэмпл слишком длинный для текущего миксер-модуля. Но грузим." + +#: app/sample-editor.c:1054 +msgid "Can only handle mono 8 and 16 bit samples" +msgstr "Поддерживаются только моно-сэмплы 8/16 бит" + +#: app/sample-editor.c:1065 +msgid "Read error." +msgstr "Ошибка чтения." + +#: app/sample-editor.c:1157 +msgid "OK" +msgstr "ОК" + +#: app/sample-editor.c:1165 +msgid "Start sampling" +msgstr "Начать оцифровку" + +#: app/sample-editor.c:1200 app/sample-editor.c:1203 +msgid "Sampling Window" +msgstr "Окно оцифровки" + +#: app/sample-editor.c:1303 +msgid "" +msgstr "<только оцифровано>" + +#: app/sample-editor.c:1333 +msgid "Recorded sample is too long for current mixer module. Using it anyway." +msgstr "Записанный сэмпл слишком длинный для текущего миксер-модуля. Но грузим." + +#: app/sample-editor.c:1365 +msgid "Normalize" +msgstr "Нормализовать" + +#: app/sample-editor.c:1366 +msgid "Execute" +msgstr "Выполнить" + +#: app/sample-editor.c:1367 app/tips-dialog.c:165 +msgid "Close" +msgstr "Закрыть" + +#: app/sample-editor.c:1376 app/sample-editor.c:1379 +msgid "Volume Ramping" +msgstr "Спад громкости" + +#: app/sample-editor.c:1396 +msgid "Perform linear volume fade on Selection" +msgstr "Произвести линейное спадание громкости на выбранном участке" + +#: app/sample-editor.c:1408 +msgid "Left [%]:" +msgstr "Левый [%]:" + +#: app/sample-editor.c:1413 +msgid "Right [%]:" +msgstr "Правый [%]:" + +#: app/tips-dialog.c:87 +msgid "SoundTracker Tip of the day" +msgstr "Подсказка дня от SoundTracker" + +#: app/tips-dialog.c:149 +msgid "Previous Tip" +msgstr "Предыдущая подсказка" + +#: app/tips-dialog.c:157 +msgid "Next Tip" +msgstr "Следующая подсказка" + +#: app/tips-dialog.c:177 +msgid "Show tip next time" +msgstr "Показывать в дальнейшем" + +#: app/tips-dialog.c:251 +msgid "" +"Welcome to SoundTracker!\n" +"\n" +"If you are new to this type of program, you will want to get hold of\n" +"some XM or MOD files first and play with them." +msgstr "" +"Добро пожаловать в SoundTracker!\n" +"\n" +"Если вы новичок в подобных программах, вам, вероятно, захочется\n" +"собрать несколько готовых файлов XM/MOD и посмотреть для начала них." + +#: app/tips-dialog.c:256 +msgid "" +"You can make SoundTracker's edit mode more responsive to keyboard\n" +"input by decreasing the mixing buffer size of the \"Editing\" object in\n" +"the Audio Configuration." +msgstr "" +"Вы можете сделать режим редактирования SoundTracker более чувствительным\n" +"к клавиатуре, если уменьшите размер буфера объекта \"Редактирование\" в\n" +"диалоге конфигурации аудио." + +#: app/tips-dialog.c:260 +msgid "" +"You can adjust the loop points in the sample editor by holding Shift\n" +"and using the left and right mousebuttons.\n" +msgstr "" +"Вы можете уточнить позиции точек зацикливания в редакторе сэмплов\n" +"при помощи левой и правой кнопок мыши, нажав Shift.\n" + +#: app/tips-dialog.c:263 +msgid "" +"If you want to know more about tracking, and how the various commands\n" +"work, have a look at http://www.united-trackers.org/" +msgstr "" +"Усли вы хотите узнать больше о трекерах,\n" +"загляните на http://www.united-trackers.org/" + +#: app/tips-dialog.c:266 +msgid "" +"You can assign samples of an instrument to the individual keys by\n" +"activating its sample and then clicking on the keyboard in the\n" +"instrument editor page." +msgstr "" +"Вы можете привязать сэмплы инструмента к определенным клавишам,\n" +"активировав нужный сэмпл и клацнув по клавиатуре на страничке\n" +"редактора инструментов." + +#: app/track-editor.c:82 +msgid "Jazz Edit:" +msgstr "Редактирование Jazz:" + +#: app/transposition.c:166 +msgid "Whole Song" +msgstr "Вся песня" + +#: app/transposition.c:167 +msgid "All Patterns" +msgstr "Все паттерны" + +#: app/transposition.c:168 +msgid "Current Pattern" +msgstr "Текущий паттерн" + +#: app/transposition.c:169 +msgid "Current Track" +msgstr "Текущий трек" + +#: app/transposition.c:173 +msgid "Current Instrument" +msgstr "Текущий инструмент" + +#: app/transposition.c:174 +msgid "All Instruments" +msgstr "Все инструменты" + +#: app/transposition.c:178 +msgid "Half note up" +msgstr "Полтона выше" + +#: app/transposition.c:179 +msgid "Half note down" +msgstr "Полтона ниже" + +#: app/transposition.c:180 +msgid "Octave up" +msgstr "Октава выше" + +#: app/transposition.c:181 +msgid "Octave down" +msgstr "Октава ниже" + +#: app/transposition.c:184 +msgid "Exchange 1 <-> 2" +msgstr "Обменять 1 <-> 2" + +#: app/transposition.c:185 +msgid "Change 1 -> 2" +msgstr "Сменить 1 -> 2" + +#: app/transposition.c:194 app/transposition.c:197 +msgid "Transposition Tools" +msgstr "Транспозиторий" + +#: app/transposition.c:217 +msgid "Scope of the operation:" +msgstr "Область действия:" + +#: app/transposition.c:224 +msgid "Note Transposition" +msgstr "Транспозиция нот" + +#: app/transposition.c:254 +msgid "Instrument Changing" +msgstr "Смена инструмента" + +#: app/transposition.c:269 +msgid "Instrument 1:" +msgstr "Инструмент 1:" + +#: app/transposition.c:271 app/transposition.c:281 +msgid "Current instrument" +msgstr "Текущий инструмент" + +#: app/transposition.c:279 +msgid "Instrument 2:" +msgstr "Инструмент 2:" + +#: app/xm.c:161 +#, c-format +msgid "Pattern length out of range: %d.\n" +msgstr "Длина паттерна вне диапазона: %d.\n" + +#: app/xm.c:441 app/xm.c:510 +#, c-format +msgid "Invalid vibtype %d, using Sine.\n" +msgstr "Неверный тип вибрато %d, использую синусоиду.\n" + +#: app/xm.c:472 +msgid "File is no XI instrument." +msgstr "Файл не содержит инструмент XI." + +#: app/xm.c:482 +#, c-format +msgid "Unknown XI version 0x%x\n" +msgstr "Неверная версия XI 0x%x\n" + +#: app/xm.c:702 +msgid "No FastTracker XM and no supported MOD format!" +msgstr "Неподдерживаемый формат MOD или не FastTracker-XM!" + +#: app/xm.c:716 app/xm.c:816 +msgid "Error while loading patterns." +msgstr "Ошибка при загрузке паттернов." + +#: app/xm.c:774 +msgid "Can't open file" +msgstr "Невозможно открыть файл" + +#: app/xm.c:788 +msgid "XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n" +msgstr "Длина заголовка XM != 276. Может, это от SoundTracker <0.0.12? :-)\n" + +#: app/xm.c:822 +msgid "Error while loading instruments." +msgstr "Ошибка при загрузке инструментов." + +#: app/xm.c:833 +#, c-format +msgid "" +"Module contains sample(s) that are too long for the current mixer.\n" +"Maximum sample length is %d." +msgstr "" +"Модуль содержит сэмпл(ы) со слишком большой для текущего миксера длиной.\n" +"Максимальная длина сэмпла -- %d." + diff -urN soundtracker-0.3.6/po/soundtracker.pot soundtracker-0.3.7/po/soundtracker.pot --- soundtracker-0.3.6/po/soundtracker.pot Sun Nov 14 15:19:14 1999 +++ soundtracker-0.3.7/po/soundtracker.pot Wed Dec 22 12:28:51 1999 @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1999-11-14 15:19+0100\n" +"POT-Creation-Date: 1999-12-22 12:28+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -120,7 +120,7 @@ msgid "no settings (yet), sorry!" msgstr "" -#: app/drivers/file-output.c:161 app/sample-editor.c:1120 +#: app/drivers/file-output.c:161 app/sample-editor.c:1116 msgid "Can't open file for writing." msgstr "" @@ -167,11 +167,11 @@ msgid "Value" msgstr "" -#: app/envelope-box.c:749 app/gui.c:1115 +#: app/envelope-box.c:749 msgid "Insert" msgstr "" -#: app/envelope-box.c:755 app/gui.c:1122 +#: app/envelope-box.c:755 msgid "Delete" msgstr "" @@ -196,145 +196,169 @@ msgid "Loop" msgstr "" -#: app/envelope-box.c:876 app/sample-editor.c:207 +#: app/envelope-box.c:876 app/sample-editor.c:201 msgid "Start" msgstr "" -#: app/envelope-box.c:877 app/sample-editor.c:208 +#: app/envelope-box.c:877 app/sample-editor.c:202 msgid "End" msgstr "" -#: app/gui-settings.c:75 +#: app/file-operations.c:144 +msgid "Load Module" +msgstr "" + +#: app/file-operations.c:145 +msgid "Save Module" +msgstr "" + +#: app/file-operations.c:146 +msgid "Render WAV" +msgstr "" + +#: app/file-operations.c:147 app/sample-editor.c:253 +msgid "Load Sample" +msgstr "" + +#: app/file-operations.c:148 +msgid "Save Sample" +msgstr "" + +#: app/file-operations.c:149 +msgid "Load Instrument" +msgstr "" + +#: app/file-operations.c:150 +msgid "Save Instrument" +msgstr "" + +#: app/file-operations.c:156 +msgid "File" +msgstr "" + +#: app/gui-settings.c:77 msgid "Scopes Frequency" msgstr "" -#: app/gui-settings.c:78 +#: app/gui-settings.c:80 msgid "Tracker Frequency" msgstr "" -#: app/gui-settings.c:161 app/gui-settings.c:164 +#: app/gui-settings.c:172 app/gui-settings.c:175 msgid "GUI Configuration" msgstr "" -#: app/gui-settings.c:189 +#: app/gui-settings.c:200 msgid "Use Hexadecimal Numbers" msgstr "" -#: app/gui-settings.c:196 +#: app/gui-settings.c:207 +msgid "Use upper case letters for hex numbers" +msgstr "" + +#: app/gui-settings.c:214 msgid "Advance Cursor in FX Columns" msgstr "" -#: app/gui-settings.c:203 +#: app/gui-settings.c:221 msgid "Use anti-aliased envelope editor" msgstr "" -#: app/gui-settings.c:209 +#: app/gui-settings.c:227 msgid "You need to restart SoundTracker for this change to come into effect." msgstr "" -#: app/gui-settings.c:218 +#: app/gui-settings.c:236 msgid "Scopes buffer size [MB]" msgstr "" -#: app/gui-settings.c:237 +#: app/gui-settings.c:255 msgid "Highlight rows:" msgstr "" -#: app/gui-settings.c:255 +#: app/gui-settings.c:273 msgid "`Save XM' saves all non-empty patterns" msgstr "" -#: app/gui-subs.c:386 +#: app/gui-subs.c:425 msgid "Question" msgstr "" -#: app/gui-subs.c:403 app/sample-editor.c:1172 +#: app/gui-subs.c:442 app/sample-editor.c:1168 msgid "Cancel" msgstr "" -#: app/gui-subs.c:421 +#: app/gui-subs.c:460 msgid "Warning" msgstr "" -#: app/gui-subs.c:447 +#: app/gui-subs.c:486 msgid "Error!" msgstr "" -#: app/gui.c:82 +#: app/gui.c:83 msgid "Tempo" msgstr "" -#: app/gui.c:220 +#: app/gui.c:214 msgid "" "Are you sure you want to free the current project?\n" "All changes will be lost!" msgstr "" -#: app/gui.c:234 app/gui.c:246 +#: app/gui.c:228 app/gui.c:240 msgid "Are you sure you want to overwrite the file?" msgstr "" -#: app/gui.c:1106 -msgid "Song length" -msgstr "" - -#: app/gui.c:1107 -msgid "Current pos" -msgstr "" - -#: app/gui.c:1108 app/gui.c:1266 -msgid "Pattern" -msgstr "" - -#: app/gui.c:1109 -msgid "Restart pos" -msgstr "" - -#: app/gui.c:1177 +#: app/gui.c:1114 msgid "Load XM..." msgstr "" -#: app/gui.c:1179 +#: app/gui.c:1116 msgid "Save XM..." msgstr "" -#: app/gui.c:1181 +#: app/gui.c:1118 msgid "Render module as WAV..." msgstr "" -#: app/gui.c:1219 +#: app/gui.c:1168 msgid "Play Song" msgstr "" -#: app/gui.c:1225 +#: app/gui.c:1174 msgid "Play Pattern" msgstr "" -#: app/gui.c:1231 +#: app/gui.c:1180 msgid "Stop" msgstr "" -#: app/gui.c:1250 +#: app/gui.c:1199 msgid "Number of Channels:" msgstr "" -#: app/gui.c:1282 +#: app/gui.c:1215 +msgid "Pattern" +msgstr "" + +#: app/gui.c:1231 msgid "PatLength" msgstr "" -#: app/gui.c:1374 +#: app/gui.c:1323 msgid "Octave" msgstr "" -#: app/gui.c:1382 +#: app/gui.c:1331 msgid "Jump" msgstr "" -#: app/gui.c:1390 +#: app/gui.c:1339 msgid "Instr" msgstr "" -#: app/gui.c:1405 +#: app/gui.c:1354 msgid "Sample" msgstr "" @@ -354,67 +378,63 @@ msgid "VibSweep" msgstr "" -#: app/instrument-editor.c:154 +#: app/instrument-editor.c:154 app/instrument-editor.c:175 msgid "Can't open file." msgstr "" -#: app/instrument-editor.c:174 -msgid "Saving Instruments not yet supported." -msgstr "" - -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Sine" msgstr "" -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Square" msgstr "" -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Saw Down" msgstr "" -#: app/instrument-editor.c:182 +#: app/instrument-editor.c:212 msgid "Saw Up" msgstr "" -#: app/instrument-editor.c:186 +#: app/instrument-editor.c:216 msgid "Instrument Editor" msgstr "" -#: app/instrument-editor.c:195 +#: app/instrument-editor.c:225 msgid "Volume envelope" msgstr "" -#: app/instrument-editor.c:203 +#: app/instrument-editor.c:233 msgid "Panning envelope" msgstr "" -#: app/instrument-editor.c:220 +#: app/instrument-editor.c:250 msgid "Load Instrument.." msgstr "" -#: app/instrument-editor.c:222 +#: app/instrument-editor.c:252 msgid "Save Instrument.." msgstr "" -#: app/instrument-editor.c:224 +#: app/instrument-editor.c:254 msgid "Load XI" msgstr "" -#: app/instrument-editor.c:230 +#: app/instrument-editor.c:260 msgid "Save XI" msgstr "" -#: app/instrument-editor.c:250 +#: app/instrument-editor.c:279 msgid "Vibrato Type:" msgstr "" -#: app/instrument-editor.c:322 +#: app/instrument-editor.c:351 msgid "Note:" msgstr "" -#: app/instrument-editor.c:340 +#: app/instrument-editor.c:369 msgid "Initialize" msgstr "" @@ -490,196 +510,204 @@ "Click into left list to cancel" msgstr "" -#: app/keys.c:635 +#: app/keys.c:641 msgid "" "The keyboard configuration file is defective.\n" "Please use the Keyboard Configuration dialog." msgstr "" -#: app/keys.c:845 +#: app/keys.c:851 msgid "" "Automatic key configuration unsuccessful.\n" "Please use the Keyboard Configuration dialog\n" "in the Settings menu." msgstr "" -#: app/menubar.c:98 +#: app/menubar.c:92 msgid "Ok" msgstr "" -#: app/menubar.c:134 +#: app/menubar.c:128 msgid "" "Are you sure you want to do this?\n" "All changes will be lost!" msgstr "" -#: app/menubar.c:156 +#: app/menubar.c:150 msgid "" "Are you sure you want to quit?\n" "All changes will be lost!" msgstr "" -#: app/menubar.c:227 +#: app/menubar.c:221 msgid "_Open..." msgstr "" -#: app/menubar.c:229 +#: app/menubar.c:223 msgid "Save _as..." msgstr "" -#: app/menubar.c:234 +#: app/menubar.c:228 msgid "Save Module as _WAV..." msgstr "" -#: app/menubar.c:239 +#: app/menubar.c:233 msgid "_Quit" msgstr "" -#: app/menubar.c:246 +#: app/menubar.c:240 msgid "Clear _All" msgstr "" -#: app/menubar.c:248 +#: app/menubar.c:242 msgid "Clear _Patterns Only" msgstr "" -#: app/menubar.c:250 +#: app/menubar.c:244 msgid "_Optimize Module" msgstr "" -#: app/menubar.c:257 app/menubar.c:268 app/menubar.c:286 +#: app/menubar.c:251 app/menubar.c:262 app/menubar.c:280 msgid "C_ut" msgstr "" -#: app/menubar.c:259 app/menubar.c:270 app/menubar.c:288 +#: app/menubar.c:253 app/menubar.c:264 app/menubar.c:282 msgid "_Copy" msgstr "" -#: app/menubar.c:261 app/menubar.c:272 app/menubar.c:290 +#: app/menubar.c:255 app/menubar.c:266 app/menubar.c:284 msgid "_Paste" msgstr "" -#: app/menubar.c:274 +#: app/menubar.c:268 msgid "_Insert" msgstr "" -#: app/menubar.c:276 +#: app/menubar.c:270 msgid "_Delete" msgstr "" -#: app/menubar.c:284 +#: app/menubar.c:278 msgid "_Mark" msgstr "" -#: app/menubar.c:297 +#: app/menubar.c:291 msgid "_Jazz Edit Mode" msgstr "" -#: app/menubar.c:302 +#: app/menubar.c:296 msgid "Transp_osition..." msgstr "" -#: app/menubar.c:307 app/menubar.c:385 +#: app/menubar.c:301 app/menubar.c:386 msgid "_Pattern" msgstr "" -#: app/menubar.c:308 +#: app/menubar.c:302 msgid "_Track" msgstr "" -#: app/menubar.c:309 +#: app/menubar.c:303 msgid "_Selection" msgstr "" -#: app/menubar.c:315 +#: app/menubar.c:309 msgid "_Find Unused Pattern" msgstr "" -#: app/menubar.c:317 +#: app/menubar.c:311 msgid "_Copy Current to Unused Pattern" msgstr "" -#: app/menubar.c:319 +#: app/menubar.c:313 msgid "C_lear Unused Patterns" msgstr "" -#: app/menubar.c:321 +#: app/menubar.c:315 msgid "_Pack Patterns" msgstr "" -#: app/menubar.c:328 +#: app/menubar.c:322 msgid "_Load XI..." msgstr "" -#: app/menubar.c:333 +#: app/menubar.c:324 +msgid "_Save XI..." +msgstr "" + +#: app/menubar.c:329 +msgid "_Clear Current" +msgstr "" + +#: app/menubar.c:334 msgid "_Delete Unused Instruments" msgstr "" -#: app/menubar.c:341 +#: app/menubar.c:342 msgid "Display _Oscilloscopes" msgstr "" -#: app/menubar.c:343 +#: app/menubar.c:344 msgid "Use _Backing Store" msgstr "" -#: app/menubar.c:348 +#: app/menubar.c:349 msgid "_Keyboard Configuration..." msgstr "" -#: app/menubar.c:350 +#: app/menubar.c:351 msgid "_Audio Configuration..." msgstr "" -#: app/menubar.c:352 +#: app/menubar.c:353 msgid "_Playback Effects..." msgstr "" -#: app/menubar.c:354 +#: app/menubar.c:355 msgid "_GUI Configuration..." msgstr "" -#: app/menubar.c:359 +#: app/menubar.c:360 msgid "_Save Settings now" msgstr "" -#: app/menubar.c:361 +#: app/menubar.c:362 msgid "Save Settings on _Exit" msgstr "" -#: app/menubar.c:368 +#: app/menubar.c:369 msgid "_About..." msgstr "" -#: app/menubar.c:373 +#: app/menubar.c:374 msgid "Show _Tips..." msgstr "" -#: app/menubar.c:375 +#: app/menubar.c:376 msgid "_XM Effects..." msgstr "" -#: app/menubar.c:382 +#: app/menubar.c:383 msgid "_File" msgstr "" -#: app/menubar.c:383 +#: app/menubar.c:384 msgid "_Module" msgstr "" -#: app/menubar.c:384 +#: app/menubar.c:385 msgid "_Edit" msgstr "" -#: app/menubar.c:386 +#: app/menubar.c:387 msgid "_Instrument" msgstr "" -#: app/menubar.c:387 +#: app/menubar.c:388 msgid "_Settings" msgstr "" -#: app/menubar.c:388 +#: app/menubar.c:389 msgid "_Help" msgstr "" @@ -828,82 +856,90 @@ msgstr "" #: app/menubar.c:454 +msgid "/Instrument/_Save XI..." +msgstr "" + +#: app/menubar.c:455 app/menubar.c:457 msgid "/Instrument/-" msgstr "" -#: app/menubar.c:455 +#: app/menubar.c:456 +msgid "/Instrument/_Clear Current" +msgstr "" + +#: app/menubar.c:458 msgid "/Instrument/_Delete Unused Instruments" msgstr "" -#: app/menubar.c:456 +#: app/menubar.c:459 msgid "/_Settings" msgstr "" -#: app/menubar.c:457 +#: app/menubar.c:460 msgid "/Settings/Display _Oscilloscopes" msgstr "" -#: app/menubar.c:458 +#: app/menubar.c:461 msgid "/Settings/Use _Backing Store" msgstr "" -#: app/menubar.c:459 app/menubar.c:464 +#: app/menubar.c:462 app/menubar.c:467 msgid "/Settings/-" msgstr "" -#: app/menubar.c:460 +#: app/menubar.c:463 msgid "/Settings/_Keyboard Configuration..." msgstr "" -#: app/menubar.c:461 +#: app/menubar.c:464 msgid "/Settings/_Audio Configuration..." msgstr "" -#: app/menubar.c:462 +#: app/menubar.c:465 msgid "/Settings/_Playback Effects..." msgstr "" -#: app/menubar.c:463 +#: app/menubar.c:466 msgid "/Settings/_GUI Configuration..." msgstr "" -#: app/menubar.c:465 +#: app/menubar.c:468 msgid "/Settings/_Save Settings now" msgstr "" -#: app/menubar.c:466 +#: app/menubar.c:469 msgid "/Settings/Save Settings on _Exit" msgstr "" -#: app/menubar.c:467 +#: app/menubar.c:470 msgid "/_Help" msgstr "" -#: app/menubar.c:468 +#: app/menubar.c:471 msgid "/Help/_About..." msgstr "" -#: app/menubar.c:469 +#: app/menubar.c:472 msgid "/Help/-" msgstr "" -#: app/menubar.c:470 +#: app/menubar.c:473 msgid "/Help/Show _Tips..." msgstr "" -#: app/menubar.c:471 +#: app/menubar.c:474 msgid "/Help/_XM Effects..." msgstr "" -#: app/menubar.c:485 +#: app/menubar.c:488 msgid "/Settings/Display Oscilloscopes" msgstr "" -#: app/menubar.c:487 +#: app/menubar.c:490 msgid "/Settings/Use Backing Store" msgstr "" -#: app/menubar.c:489 +#: app/menubar.c:492 msgid "/Settings/Save Settings on Exit" msgstr "" @@ -923,7 +959,7 @@ msgid "Linear" msgstr "" -#: app/module-info.c:118 app/sample-editor.c:167 +#: app/module-info.c:118 app/sample-editor.c:161 msgid "Amiga" msgstr "" @@ -949,196 +985,192 @@ "home directory to store configuration files.\n" msgstr "" -#: app/sample-editor.c:166 +#: app/sample-editor.c:160 msgid "No loop" msgstr "" -#: app/sample-editor.c:168 +#: app/sample-editor.c:162 msgid "PingPong" msgstr "" -#: app/sample-editor.c:172 +#: app/sample-editor.c:166 msgid "8 bits" msgstr "" -#: app/sample-editor.c:173 +#: app/sample-editor.c:167 msgid "16 bits" msgstr "" -#: app/sample-editor.c:179 +#: app/sample-editor.c:173 msgid "Sample Editor" msgstr "" -#: app/sample-editor.c:219 +#: app/sample-editor.c:213 msgid "Volume" msgstr "" -#: app/sample-editor.c:220 +#: app/sample-editor.c:214 msgid "Panning" msgstr "" -#: app/sample-editor.c:221 +#: app/sample-editor.c:215 msgid "Finetune" msgstr "" -#: app/sample-editor.c:232 +#: app/sample-editor.c:226 msgid "SelStart" msgstr "" -#: app/sample-editor.c:233 +#: app/sample-editor.c:227 msgid "SelEnd" msgstr "" -#: app/sample-editor.c:236 +#: app/sample-editor.c:230 msgid "Reset Sel" msgstr "" -#: app/sample-editor.c:241 +#: app/sample-editor.c:235 msgid "RelNote" msgstr "" -#: app/sample-editor.c:242 +#: app/sample-editor.c:236 msgid "Length: 0" msgstr "" -#: app/sample-editor.c:255 +#: app/sample-editor.c:249 msgid "Load Sample.." msgstr "" -#: app/sample-editor.c:256 +#: app/sample-editor.c:250 msgid "Save WAV.." msgstr "" -#: app/sample-editor.c:259 -msgid "Load Sample" -msgstr "" - -#: app/sample-editor.c:268 +#: app/sample-editor.c:262 msgid "Save WAV" msgstr "" -#: app/sample-editor.c:278 +#: app/sample-editor.c:272 msgid "Clear" msgstr "" -#: app/sample-editor.c:284 +#: app/sample-editor.c:278 msgid "Monitor" msgstr "" -#: app/sample-editor.c:290 +#: app/sample-editor.c:284 msgid "Volume Ramp" msgstr "" -#: app/sample-editor.c:300 +#: app/sample-editor.c:294 msgid "Zoom to selection" msgstr "" -#: app/sample-editor.c:306 +#: app/sample-editor.c:300 msgid "Show all" msgstr "" -#: app/sample-editor.c:312 +#: app/sample-editor.c:306 msgid "Zoom in (+50%)" msgstr "" -#: app/sample-editor.c:318 +#: app/sample-editor.c:312 msgid "Zoom out (-50%)" msgstr "" -#: app/sample-editor.c:324 +#: app/sample-editor.c:318 msgid "Resample" msgstr "" -#: app/sample-editor.c:335 +#: app/sample-editor.c:329 msgid "Cut" msgstr "" -#: app/sample-editor.c:341 +#: app/sample-editor.c:335 msgid "Remove" msgstr "" -#: app/sample-editor.c:347 +#: app/sample-editor.c:341 msgid "Copy" msgstr "" -#: app/sample-editor.c:353 +#: app/sample-editor.c:347 msgid "Paste" msgstr "" -#: app/sample-editor.c:359 +#: app/sample-editor.c:353 msgid "Filter" msgstr "" -#: app/sample-editor.c:459 +#: app/sample-editor.c:453 #, c-format msgid "Length: %d" msgstr "" -#: app/sample-editor.c:957 +#: app/sample-editor.c:953 msgid "" msgstr "" -#: app/sample-editor.c:1034 +#: app/sample-editor.c:1030 msgid "Can't read sample" msgstr "" -#: app/sample-editor.c:1040 +#: app/sample-editor.c:1036 msgid "Sample is too long for current mixer module. Loading anyway." msgstr "" -#: app/sample-editor.c:1054 +#: app/sample-editor.c:1050 msgid "Can only handle mono 8 and 16 bit samples" msgstr "" -#: app/sample-editor.c:1065 +#: app/sample-editor.c:1061 msgid "Read error." msgstr "" -#: app/sample-editor.c:1157 +#: app/sample-editor.c:1153 msgid "OK" msgstr "" -#: app/sample-editor.c:1165 +#: app/sample-editor.c:1161 msgid "Start sampling" msgstr "" -#: app/sample-editor.c:1200 app/sample-editor.c:1203 +#: app/sample-editor.c:1196 app/sample-editor.c:1199 msgid "Sampling Window" msgstr "" -#: app/sample-editor.c:1303 +#: app/sample-editor.c:1299 msgid "" msgstr "" -#: app/sample-editor.c:1333 +#: app/sample-editor.c:1329 msgid "Recorded sample is too long for current mixer module. Using it anyway." msgstr "" -#: app/sample-editor.c:1365 +#: app/sample-editor.c:1361 msgid "Normalize" msgstr "" -#: app/sample-editor.c:1366 +#: app/sample-editor.c:1362 msgid "Execute" msgstr "" -#: app/sample-editor.c:1367 app/tips-dialog.c:165 +#: app/sample-editor.c:1363 app/tips-dialog.c:165 msgid "Close" msgstr "" -#: app/sample-editor.c:1376 app/sample-editor.c:1379 +#: app/sample-editor.c:1372 app/sample-editor.c:1375 msgid "Volume Ramping" msgstr "" -#: app/sample-editor.c:1396 +#: app/sample-editor.c:1392 msgid "Perform linear volume fade on Selection" msgstr "" -#: app/sample-editor.c:1408 +#: app/sample-editor.c:1404 msgid "Left [%]:" msgstr "" -#: app/sample-editor.c:1413 +#: app/sample-editor.c:1409 msgid "Right [%]:" msgstr "" @@ -1196,6 +1228,10 @@ msgid "Jazz Edit:" msgstr "" +#: app/track-editor.c:126 +msgid "Tracker" +msgstr "" + #: app/transposition.c:166 msgid "Whole Song" msgstr "" @@ -1277,7 +1313,7 @@ msgid "Pattern length out of range: %d.\n" msgstr "" -#: app/xm.c:441 app/xm.c:510 +#: app/xm.c:441 app/xm.c:512 #, c-format msgid "Invalid vibtype %d, using Sine.\n" msgstr "" @@ -1291,27 +1327,27 @@ msgid "Unknown XI version 0x%x\n" msgstr "" -#: app/xm.c:702 +#: app/xm.c:757 msgid "No FastTracker XM and no supported MOD format!" msgstr "" -#: app/xm.c:716 app/xm.c:816 +#: app/xm.c:771 app/xm.c:871 msgid "Error while loading patterns." msgstr "" -#: app/xm.c:774 +#: app/xm.c:829 msgid "Can't open file" msgstr "" -#: app/xm.c:788 +#: app/xm.c:843 msgid "XM header length != 276. Maybe a pre-0.0.12 SoundTracker module? :-)\n" msgstr "" -#: app/xm.c:822 +#: app/xm.c:877 msgid "Error while loading instruments." msgstr "" -#: app/xm.c:833 +#: app/xm.c:888 #, c-format msgid "" "Module contains sample(s) that are too long for the current mixer.\n" diff -urN soundtracker-0.3.6/soundtracker.spec soundtracker-0.3.7/soundtracker.spec --- soundtracker-0.3.6/soundtracker.spec Sun Nov 14 15:28:59 1999 +++ soundtracker-0.3.7/soundtracker.spec Wed Dec 22 12:26:54 1999 @@ -1,6 +1,6 @@ %define name soundtracker -%define version 0.3.6 -%define release 7 +%define version 0.3.7 +%define release 8 %define prefix /usr Summary: Sound modules editor/player @@ -26,7 +26,7 @@ %setup %build -LINGUAS="de es it pl ja" CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} +LINGUAS="de es it pl ja ru" CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%{prefix} gmake %install