2000-01-26 Michael Krause * Released v0.3.10 2000-01-22 Michael Krause * app/gui.c: "Escape" can be used to toggle editing on even if we're in playing mode (patch by Conrad Parker). * app/clavier.c, app/playlist.c: Also replace custom marshallers by gtk-provided ones. * app/sample-display.c: Replace my_2ints_marshal() by gtk_marshal_NONE__INT_INT (patch by Conrad Parker). 2000-01-21 Michael Krause * app/sample-editor.c (sample_editor_page_create): Rename "Clear" to "Clear Sample". * app/track-editor.c: "Insert" and "Backspace" key bindings (shift down / pull up track). (patch by Tomasz Maka) (track_editor_find_next_jazz_channel): Jazz edit logic extracted into a new function. Made more intelligent (takes care of channels that are still busy playing a sample). * app/sample-editor.c: Added "Save Region" button, which saves only the selected region as a WAV. (Tomasz Maka) 2000-01-19 Michael Krause * app/xm.c (XM_Load): setting restart position to song_length - 1 if out of range (FT2 does this). 2000-01-18 Michael Krause * app/track-editor.c (track_editor_set_num_channels): For the jazz edit mode, only display those buttons for channels that are actually available. * app/xm.c (XM_Load): Checking if restart_position is < song_length (setting rp to 0 otherwise). Encountered a funny XM from my favourite label "Rohformat" that has a bug here and subsequently crashed the tracker due to a failed assertion in the playlist widget. Which shows us that assertions are your friend. Shame on you, Ronny :-) * app/menubar.c: Even more menu bar translation hacking code. This really sucks. Thanks to Yuuki Ninomiya for discussing this with me. * po: Updated ja.po. 2000-01-15 Michael Krause * app/menubar.c (menubar_create): all_translated calculated correctly now (patch by Yuuki NINOMIYA). * app/sample-editor.c (sample_editor_copy_cut_common): Adjust loop data after cutting parts of the sample (patch by Conrad Parker). 2000-01-12 Michael Krause * Released v0.3.9 2000-01-12 Kai Vehmanen * Added ALSA pcm2 input and output plugins (ALSA 0.5.0 and newer) 2000-01-08 Michael Krause * po: Updated ja.po. * app/playlist.c (playlist_insert_clicked): (playlist_delete_clicked): Force emission of "song_length_changed" signal. Fixes crashes due to not updated XM structures (bug reported by globber). * app/sample-editor.c: Adds "Sel All" button, renames other buttons, clears up _update_sample() (patch by Conrad Parker). * app/keys.c (keys_fixup_xkeymap): Fix strange keymaps. Fixes problem a Polish user was having. 1999-12-26 Michael Krause * Released v0.3.8 * app/track-editor.c (track_editor_handle_keys): Delete key: delete note only if in note column. Otherwise delete corresponding effect column. * app/gui.c (current_instrument_changed): Don't set gui_cur*_name here at all. * app/sample-editor.c (sample_editor_update): Set gui_cursmpl_name correctly. * app/instrument-editor.c (instrument_editor_update): Set gui_curins_name correctly. * app/sample-editor.c: Can handle stereo samples now (extracts one channel or mixes left and right). Based on a patch sent in by Stefan Hager on 1999-08-22. Also remember last saved and loaded path. * app/gui-subs.c (file_selection_create): Add selection entry to list of text entry widgets to be captured. * app/menubar.c (menubar_create): (menubar_init_prefs): If not all menu bar strings could be translated, disable translation of the other menu bar strings completely and issue a warning (all this only for the non-GNOME version). * po: Updated ja.po. 1999-12-24 Michael Krause * app/file-operations.c (fileops_page_create): Disable certain dialogs in NO_AUDIOFILE case. * app/gui-settings.c: Save path for DIALOG_SAVE_MOD_AS_WAV. * app/playlist.c (playlist_restartpos_changed, playlist_songpat_changed): Only emit signal if value really changed. * app/playlist.[ch]: New functions _freeze_signals() and _thaw_signals(). * app/playlist.c (playlist_set_nth_pattern): If pos == current_position, set pattern spinbutton value as well. (playlist_set_restart_position): Set spinbutton value. (playlist_songlength_changed): Adjust limits of restart pos spin. * app/audioconfig.c (audioconfig_close_requested): Deinitialize cw_currentobject when closing window. (Conrad Parker striked back again) 1999-12-23 Michael Krause * app/sample-editor.c: "Reverse" function (patch by Conrad Parker). 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 * app/xm-player.c: Added "player_looped" variable which indicates to the audio renderer that the song has either looped, the "Bxx" command has been used to jump to another pattern or the "F00" command has been issued in order to stop the song. Should prevent endless saving loops. 1999-11-13 Michael Krause * app/audio.c (audio_ctlpipe_render_song_to_file): This is a special version of audio_ctlpipe_play_song(), which always uses the file driver, hacks in the desired filename and does the priority juggling (we don't want to run the rendering at nice -14). * app/drivers/file-output.c: This driver uses libaudiofile to render a WAV file. It's not directly accessible from the audio config, use the special menu item in the "File" menu instead. * app/scope-group.c (scope_group_timeout): Return immediately if current_driver is NULL. Fixes a crash. 1999-10-30 Michael Krause * app/audio.c: Begun work on code to render modules into a WAV file. * app/main.c: Initialize effective group ID as well. * configure.in: Moved poll()/select() check in front of the library checks. * po: Updated it.po and ja.po. * app/track-editor.c (track_editor_paste_pattern): Fix pasting of short patterns into long ones (reported by Martin Andersson); also update pattern length spinbutton in that case. * app/transposition.c (transposition_transpose_notes_sub): Don't transpose KEYOFF note (reported by Martin Andersson). 1999-10-16 Kai Vehmanen * app/drivers/alsa-output.c: Changed default soundcard id to 0. 1999-10-09 Michael Krause * app/drivers/esd-output.c: Quick and dirty implementation of an ESD driver. Note that this will not be supported because of its latency. * configure.in: Added ESD check, updated ALSA check to handle --disable-alsa correctly. 1999-10-08 Michael Krause * Released v0.3.5 * app/track-editor.c: Selection handling rewritten for multi-track selections. * app/st-subs.c: Several new functions for dealing with parts of a track (duplicating, clearing, pasting). * app/xm-player.c: Replaced sintab[] by sin(). * app/drivers/oss-output.c: Added code to make use of the high-accuracy SNDCTL_DSP_GETOPTR call when available. Gets rid of all the gettimeofday() calls. The old code is available as a fallback, though. 1999-10-07 Michael Krause * doc/hacking.texi: Old `HACKING' file extended to talk a little bit about ST's internals. 1999-10-06 Michael Krause * app/st-subs.c, app/menubar.c, app/track-editor.c: Insert track / Delete track. * app/track-editor.c: Saving jazz edit settings on exit. * app/gui-settings.c, app/gui.c, app/sample-editor.c, app/instrument-editor.c: Remember last used paths and store them in a configuration file. * configure.in: Continue if sys/poll.h is found, but poll() isn't. * po: Updated it.po and ja.po; added es.po from German Jose Gomez Garcia 1999-09-26 Michael Krause * app/mixers/integer32-asm.[sh]: i386 Assembly mixing routines for 16bit samples. These are only marginally faster than the original C code, though. * app/mixers/integer32.c: lqmono renamed; cleaned up reverb code to use arrays. 1999-09-25 Michael Krause * Released v0.3.4 * app/gui-settings.c, app/tracker.c: Added tracker row highlighting. 1999-09-24 Michael Krause * app/keys.c: Replace some empty strings by NULL pointers (fixes localization bugs in the keys dialog). 1999-09-23 Michael Krause * soundtracker.desktop: Added pl and de entries. * Added de.po from Colin Marquardt, updated ja.po. 1999-09-10 Michael Krause * Released v0.3.3 * app/audioconfig.c, app/audio.c: Editing and Playback drivers can be selected independently now. * app/gui.c (gui_handle_standard_keys): Removed "Shift+Space" special-casing. * app/track-editor.c (track_editor_handle_column_input): Returning flag if key was handled. * app/menubar.c: Added cut'n'paste functions to the Edit menu, with configurable shortcuts; this should be useful to those using a window manager that maps Alt-F4 to "exit" :-) * app/track-editor.c: Split block / pattern / track cut'n'paste handling into simple functions. 1999-09-09 Michael Krause * app/tracker.c (tracker_realize): Attach style, just to be sure. * app/sample-display.c (sample_display_realize): Attach style to widget, fixes a strange crash when playing with the #chans spinbutton. * app/keys.c, app/module-info.c (modinfo_page_create): Call gettext() on some the strings only marked with N_(). * app/time-buffer.c (time_buffer_get): After g_list_remove_link(), call g_list_free() on the freed node. Fixes the memory leak people were seeing. *sigh* 1999-09-08 Michael Krause * app/mixers/lqmono.c (lqmono_mix): Fix mixbufsize setting. Arghl. 1999-09-07 Michael Krause * app/mixers/lqmono.c (lqmono_mix): Update mixbufsize after allocating new mixbuf. Use g_new() and g_free(). 1999-09-07 Yuuki NINOMIYA * app/main.c: Use gtk_set_locale() instead of setlocale(). * app/menubar.c: The bug is fixed that i18n is invalid in the menu bar when build without GNOME. 1999-09-06 Kai Vehmanen * app/drivers/alsa-*.[ch]: Fixed some timing bugs and made a few improvements to the config widgets. 1999-09-06 Michael Krause * soundtracker.desktop: Added GNOME menu entry. * Updated ja.po, added it.po from Yuri Bongiorno, added pl.po from Zbigniew Chyla. 1999-09-04 Michael Krause * Released v0.3.2 * app/cheat-sheet.[ch]: Added an overview of all XM effects. * app/gui-settings.c: Added "Use anti-aliased envelope editor" option. * app/envelope-box.c (envelope_box_canvas_paint_grid): Reduced left X coordinate of long lines from 30000 to 16384 (non-aa canvas would bug here). * HACKING: Contains some `rules' for developers. * README: Added soundtracker.org homepage and information about the mailing lists. * app/tips-dialog.c: The tips are stored in an array inside this file now -- translation is easier this way. * app/preferences.c (prefs_get_line): Remove trailing newlines from returned strings. * app/audioconfig.c (audioconfig_clist_select): Fix driver selection. 1999-09-03 Michael Krause * FAQ: Removed ALSA-related question. * Added ALSA patch from Kai Vehmanen. 1999-09-02 Giles Constant * Playback effects menu added * "Master Reverb" added to playback effects (code ripped and regurgitated from libmikmod) 1999-08-31 Michael Krause * po/ja.po: updated by Atsushi Yamagata. 1999-08-29 Michael Krause * Released v0.3.1 * soundtracker.spec (%build): Initalize LINGUAS variable before building, so that all catalogs get installed. * INSTALL, FAQ: Some words about the gtk+ update. * app/sample-editor.c: Added horizontal scroll bar under the sample display. * app/sample-display.c: Added "window_changed" signal which is triggered whenever win_start / win_length are changed. * app/sample-editor.c (sample_editor_perform_ramp): change ABS(*p++) into q=*p++;q=ABS(q); macros suck :-) * app/sample-display.c: Middle mouse button pans the display window. * configure.in (CFLAGS): Require gtk+-1.2.2. Fixes the popular "GUI freezes if you click the menu bar" bug. 1999-08-25 Michael Krause * app/sample-editor.c (sample_editor_ok_clicked): Don't call sampler_page_enable_widgets() (the widgets have already been destroyed). * app/gui.c (gui_handle_standard_keys): Handle Shift+Space manually even though it's in the menu; works around a (so I think) gtk+ menu bug. 1999-08-23 Michael Krause * app/sample-editor.c: Added "Volume Ramp" dialog, including a normalizing function. 1999-08-22 Michael Krause * app/menubar.c: Rewrote non-GNOME menubar code to use GtkItemFactory, because we can handle user-defined accelerators this way. Added underscores to all the menu texts. Added "Edit" menu, with "Jazz Mode Edit" toggle and "Transpositions" dialog launcher. * app/gui.c (keyevent): All the key handlers return a flag indicating if the key has been handled or not. If it has not been handled, don't stop the signal, but let gtk+ continue to handle it. We need this to support the menubar correctly. * app/track-editor.c (track_editor_handle_keys): Binding "Home" and "End" keys to start and end of current pattern, respectively. * app/transposition.[ch]: Added new "Transposition Tools" dialog with a lot of transposition and instrument number related functions. 1999-08-21 Michael Krause * app/instrument-editor.c: Capturing clavierkey_enter and _leave signals to display the note the mouse is over in a framed label. Also added the "Initialize" button which fills the whole samplemap with the current sample value. * app/clavier.c: Added _enter and _leave signals which are called when the mouse is over a key or when it leaves one. 1999-08-19 Michael Krause * app/sample-editor.c (sample_editor_save_wav): Use libaudiofile to save WAVs. If compiling without libaudiofile, disable "Save WAV" widget. * po/ja.po: Added japanese translation from Atsushi Yamagata. 1999-08-13 Michael Krause * Released v0.3.0 * app/track-editor.c (track_editor_handle_keys): Shift + Tab goes one channel to the left. * app/keys.c (keys_is_key_pressed): New function which finds out if a key is actually physically pressed. We need this hack to deal with X's auto-repeat. * app/gui.c (handle_standard_keys): Toggle jazz edit mode with shift-space. * app/track-editor.c: Jazz edit stuff -- core handling is in track_editor_do_the_note_key. * app/track-editor.c (track_editor_handle_keys): Send keyoff note if a key is released. (track_editor_do_the_note_key): Encapsulated the relevant code for the other notebook pages. * app/gui.c (keyevent): Handle key-release events as well. Also, rename some handle_keys() functions all over the source and add the `pressed' argument. * app/gui-subs.c (gui_update_range_adjustment): Moved this from track-editor.c 1999-08-12 Michael Krause * app/st-subs.c (st_num_save_patterns): Return value based on the recently introduced save_all_patterns setting. * app/gui-settings.c: "Save XM saves all non-empty patterns" (as opposed to only the used patterns) option. * soundtracker_tips.ja.txt: Added japanese translation of soundtracker_tips.txt from Atsushi Yamagata . * app/mixers/lqmono.c (lqmono_updatesample): We don't stop the sample if only the loop has changed. In that case, we bend the current pointer to the loop start! * app/sample-editor.c (sampler_page_handle_keys): If a key is pressed, the currently displayed sample is played, not the one from the sample map (using gui_play_note_full / xmplayer_play_note_full). * app/gui.c (gui_play_note_full): The same for the GUI thread. * app/xm-player.c (xmplayer_play_note_full): Permits more control over what sample gets played and at which position it starts. Man, xm-player.c really is a mess... * INSTALL: some more explanations for the binary packages. * Bumped version number to v0.3.0 * soundtracker.spec: Added RPM specfile from Arthibus Gissehel, updated to distribute the NLS stuff as well. * Made the whole application NLS-aware.