11999-08-09 Michael Krause <m.krause@tu-harburg.de> 2 3 * Released v0.1.11 4 5 * app/gui.c (gui_init): Menubar in non-GNOME version doesn't have 6 a 4 pixel gap around it any longer. 7 8 * app/envelope-box.c (envelope_box_set_envelope): Install dummy 9 envelope if env pointer is NULL. 10 11 * app/instrument-editor.c (instrument_editor_update): Initialize 12 empty envelope if instrument is null. 13 141999-08-08 Michael Krause <m.krause@tu-harburg.de> 15 16 * app/xm-player.c: Replace 1+!linearfreq by 17 1+(!linearfreq&&!ismod) in some commands to fix excessive vibrato 18 depth for ProTracker modules. 19 20 * app/audio.c (audio_prepare_for_playing): Allocating scopebufs[] 21 according to that new GUI option. 22 23 * app/gui-settings.c: Added "Scopes Buffer Size" option. 24 251999-08-07 Michael Krause <m.krause@tu-harburg.de> 26 27 * app/sample-editor.c (sample_editor_save_wav): Fix "bytes per 28 second" field in saved WAV header (Stefan Hager). 29 30 * app/gui-settings.c: Load / save all settings, move "hexmode" and 31 "advance cursor" options from menubar into this window. 32 331999-08-06 Michael Krause <m.krause@tu-harburg.de> 34 35 * app/gui-settings.[ch]: New dialog which contains GUI parameters. 36 37 * app/preferences.c: Removed "Preferences" notebook page. 38 39 * app/instrument-editor.c (instrument_editor_set_instrument): 40 Doing most work in _update() instead of here; fixes bug where 41 loading sample into fresh instrument wouldn't initialize the 42 instrument editor page. 43 (instrument_editor_load_instrument): Initialize sample editor. 44 45 * app/scope-group.c (scope_group_timeout): rewritten to use the 46 new scope buffer layout. 47 48 * app/audio.c (audio_prepare_for_playing): renamed from 49 mixer_prepare(). 50 (mixer_mix_and_handle_scopes): rewritten to use a different scope 51 buffer layout. 52 53 * app/drivers/oss-output.c (oss_open): Find out number of 54 fragments used by sound driver and make corresponding corrections 55 to get_play_time(). Now the GUI is really synchronized to audio, 56 even with large fragment sizes. 57 581999-08-05 Michael Krause <m.krause@tu-harburg.de> 59 60 * app/gui.c (gui_init): Set minimum possible "Jump" value to 0. 61 62 * app/keys.c (keys_dialog): Initialize cw_combostrings (multiple 63 window openings could leave the combo box empty) 64 65 * app/xm.c (xm_load_xi): Bug fix: missing string termination 66 (erikyyy again). 67 68 * app/instrument-editor.c (instrument_editor_load_instrument): 69 Close file after reading (thanks to erikyyy). 70 711999-08-02 Michael Krause <m.krause@tu-harburg.de> 72 73 * Released v0.1.10 74 75 * configure.in, acconfig.h, app/sample-editor.c: ST can now build 76 without libaudiofile. In that case, you will not be able to load 77 samples in the sample editor. 78 79 * app/menubar.c: Added "Load XI" menu item to "Instrument" menu. 80 81 * app/xm.c (xm_load_xm_instrument): Fix volfade loading. 82 83 * app/instrument-editor.c: Add "Load Instrument" function. 84 85 * app/xm.c (xm_load_xi): New function that loads an instrument in 86 XI format (funny that it isn't the same instrument format as found 87 in XM modules...) 88 891999-07-27 Michael Krause <m.krause@tu-harburg.de> 90 91 * app/keys.c (keys_init): Removed unnecessary "symspercode > 4" 92 check. 93 941999-07-26 Michael Krause <m.krause@tu-harburg.de> 95 96 * app/tips-dialog.c (read_tips_file): Correct "can't find tips 97 file" message. 98 991999-07-25 Michael Krause <m.krause@tu-harburg.de> 100 101 * app/drivers/oss-output.c (oss_make_config_widgets): Some layout 102 beautification. Added delay estimation. 103 1041999-07-21 Michael Krause <m.krause@tu-harburg.de> 105 106 * Released v0.1.9 107 108 * app/Makefile.am (soundtracker_SOURCES): Oh I hate it when that 109 happens. I left out a source file from the 110 distribution. Reinserted driver.h ... who said "brown paper bag"? 111 112 * Released v0.1.8 113 114 * app/tracker.c (tracker_expose): Fixed a long-standing bug that 115 an X expose wouldn't redraw the cursor line correctly. 116 117 * soundtracker_tips.txt: Added some useful tips. 118 119 * app/tips-dialog.c: I hope this helps reducing stupid questions. 120 People don't read the README or the FAQ anyway :( This was grabbed 121 from the GIMP source code. 122 123 * app/drivers/oss-output.c: Added configuration widget / loader / 124 saver. Basically the same as the preferences.c code in previous 125 versions. This will need beautification! 126 127 * app/audioconfig.[ch]: Audio configuration dialog. 128 129 * app/preferences.c: Removed all audio-related preferences. These 130 are handled by the drivers themselves now. 131 1321999-07-20 Michael Krause <m.krause@tu-harburg.de> 133 134 * app/sample-editor.c: Rewritten for the new sampling driver 135 interface. Cool feature: SoundTracker can sample while it's 136 playing a module, if your sound card supports full duplex. 137 138 * app/driver.h: Split into driver-out.h and driver-in.h; Sampling 139 drivers are controlled by the main thread now instead of going 140 through the audio thread and a sampling buffer. The "base class" 141 of the driver classes is still in driver.h. 142 143 * app/sample-editor.c (sample_editor_load_wav): Fixed 8 bit sample 144 loading. 145 1461999-07-18 Michael Krause <m.krause@tu-harburg.de> 147 148 * app/scope-group.c (scope_group_timeout), app/track-editor.c 149 (tracker_timeout): Changed to use driver->get_play_time(). 150 151 * app/time-buffer.c (time_buffer_get): Return NULL if list is 152 empty. 153 154 * app/drivers/oss-output.c (oss_poll_ready_playing): An OSS 155 playing driver for the new driver concept. 156 157 * app/audio.c (mixer_mix_and_handle_scopes): 158 (mixer_mix): return pointer to end of mixed data. 159 (audio_mix): This routine contains the "main loop", as seen from 160 the driver's view, now. It calls the player and mixer modules. 161 162 * Again some changes to the driver subsystem; this time not as 163 deep as in the 0.0.11 changes, and the resulting code is a bit 164 easier. The driver objects handle configuration on their own now, 165 including own GTK+ widgets. Besides, the driver has a 166 get_play_time(), which handles what audio_time() did before. 167 1681999-07-15 Michael Krause <m.krause@tu-harburg.de> 169 170 * README, INSTALL, FAQ: Updated 171 1721999-07-04 Michael Krause <m.krause@tu-harburg.de> 173 174 * Released v0.1.7 175 176 * app/sample-editor.c (sample_editor_update_mixer_position): 177 Update sample display accordingly. 178 179 * app/audio.c (mixer_mix_and_handle_scopes): Added mixer position 180 time buffer. 181 182 * app/scope-group.c (scope_group_scope_event): Right mouse button 183 inverts global channel status. 184 185 * app/xm.c (xm_load_mod): Call xm_init_locks(). 186 187 * app/gui.c: Finally added clipping indicator LED again 188 189 * app/audio.c (mixer_mix_and_handle_scopes): Added clipping 190 indicator time buffer. 191 192 * app/track-editor.c (tracker_timeout): Use time_buffer 193 194 * app/audio.c (audio_play): Use time_buffer 195 196 * app/time-buffer.c: New API to handle some audio->gui 197 synchronization (pattern play position, mixer position, clipping 198 indicator etc.) in a more generalized way. 199 200 * Use gthread functions instead of pthread functions everywhere. 201 2021999-06-29 Michael Krause <m.krause@tu-harburg.de> 203 204 * configure.in: Remove pthread check, add gthread module to gtk 205 check instead. Install some stupid workaround to get the gthread 206 stuff into the command line. 207 2081999-06-28 Michael Krause <m.krause@tu-harburg.de> 209 210 * app/sample-display.c: Added "zero 211 line". (sample_display_do_marker_line): Make marker lines more 212 visible. Fix small bug that would cause the line at the rightmost 213 position not to be displayed. 214 215 * app/gui.c: Added pitchbend reset button. 216 2171999-06-22 Michael Krause <m.krause@tu-harburg.de> 218 219 * app/preferences.c, app/menubar.c, app/track-editor.c: Added 220 "Advance Cursor in FX Columns" toggle. 221 222 * app/track-editor.c, app/gui.c: Some global variables clean-up. 223 224 * app/tracker.c: Removed tracker_note_typed_advance(), added 225 tracker_redraw_row(), tracker_redraw_current_row(), 226 tracker_step_cursor_row() instead. 227 228 * app/gui.c: Add a "Jump" spin button. Reduce default width of 229 Instrument / Sample entries. 230 2311999-06-13 Michael Krause <m.krause@tu-harburg.de> 232 233 * Released v0.1.6 234 235 * app/xm.c (xm_load_mod): Call st_clean_instrument() for each 236 instrument to initialize it. 237 (xm_check_envelope): Check envelope settings here.. 238 239 * app/st-subs.c (st_clean_instrument): Set panning envelope to 240 constant 32 (middle panning). 241 242 * app/envelope-box.c: More work on the envelope editor. Not much 243 code is left from the old version. 244 2451999-06-12 Michael Krause <m.krause@tu-harburg.de> 246 247 * app/envelope-box.c: Using the GNOME canvas widget for the 248 graphical envelope editor. Really easy to use. This is fun. Now, 249 the very first real reason for a GNOME-only SoundTracker :) 250 251 * app/sample-editor.c (sample_editor_load_wav): Checking for 252 maximum sample length. 253 (sample_editor_ok_clicked): Dito 254 255 * app/xm.c (XM_Load): Add check for correct sample lengths (don't 256 need to add a similar check for MOD's, cause MOD samples are 257 generally limited to 1 << 17 bytes). 258 259 * app/mixers/lqmono.c (lqmono_startnote): Check for maximum sample 260 length. 261 262 * app/mixer.h, app/mixers/lqmono.c: New mixer structure field 263 "max_sample_length". 264 265 * configure.in (gnome): Remove zvt from linker flags. 266 2671999-06-08 Michael Krause <m.krause@tu-harburg.de> 268 269 * Released v0.1.5 270 271 * Makefile.am (bindist): Added rules for automatic generation of 272 my binary distributions. This really saves me some work :) 273 274 * app/xm-player.c: Some fixes from the current OpenCP CVS version: 275 (xm_player_playnote_fasttracker): Set procins to 0 if procnot == 276 97. (xmpPlayTick): Set procins to 0 if procnot == 97. Vibrato 277 depth is twice as deep in non-linear frequencies mode (replace 1 278 by 1+!linearfreq in some commands). Retrigger command fixes. 279 280 * app/menubar.c: Synchronized non-GNOME menu with the new version. 281 Optimized mymenu structure a bit. 282 2831999-06-06 Michael Krause <m.krause@tu-harburg.de> 284 285 * app/sample-editor.c (sample_editor_load_wav): Display error if 286 file is unreadable (don't crash). 287 288 * app/drivers/oss.c, app/xm.c, app/preferences.c, 289 app/sample-editor.c: Make use of new error handling functions. 290 291 * app/gui.c (read_mixer_pipe): Handle new backpipe id for errors 292 and warnings 293 (display simple gnome requesters for now). 294 295 * app/errors.[ch] (error_error_common): 296 (error_error): 297 (error_warning): New file, new functions to handle errors and 298 warnings more conveniently for the user. 299 300 * app/gui-subs.c (gui_update_spin_adjustment): Moved here from 301 gui.c 302 (gnome_error_dialog): New function 303 304 * app/drivers/oss.c (oss_open): Added workaround for Linux bug 305 (some sound drivers, when in use by another program, block when 306 opened instead of returning EBUSY). Wrote a mail to Thomas Sailer. 307 3081999-06-04 Michael Krause <m.krause@tu-harburg.de> 309 310 * app/menubar.c (menubar_save_settings_on_exit_toggled): 311 (menubar_save_settings_now): Add "Save Settings now" and "Save 312 Settings on Exit" (default: on) menu items. 313 314 * app/gui.c (gui_init): Remove initialization of scopes display 315 and backing store options. This is handled in 316 menubar.c:menubar_init_prefs() automatically. 317 318 * app/menubar.c: Move "Display Scopes" and "Use Backing Store" 319 toggles from preferences page to the Settings menu. Add these 320 settings to the preferences structure. "Use Backing Store" is off 321 by default now, so that the tracker doesn't use too much CPU time 322 for first-time users. 323 324 * app/track-editor.c (track_editor_handle_column_input): 325 (track_editor_handle_hex_column_input): 326 (track_editor_handle_semidec_column_input): Handling decimal 327 instrument column correctly. 328 329 * app/tracker.c (init_display): 330 (print_notes_line): Line numbers dec/hex display. 331 332 * app/menubar.c (menubar_hexmode_toggled): 333 (menubar_init_prefs): Added hex/dec switch to menu bar. 334 335 * app/preferences.c (prefs_get_line): 336 (prefs_get_int): 337 (prefs_put_int): 338 (prefs_load_config): 339 (prefs_save_config): Loading and saving preferences on startup and 340 exit now. 341 342 * app/tracker.c (note2string): Instrument numbers can be displayed 343 in decimal or hexadecimal. 344 3451999-05-28 Michael Krause <m.krause@tu-harburg.de> 346 347 * Released v0.1.4 348 349 * app/keys.c (keys_init): Clear unused entries in xkeymap[] (Jon 350 Forsberg <zzed@cyberdude.com>). 351 3521999-05-26 Michael Krause <m.krause@tu-harburg.de> 353 354 * Released v0.1.3 355 356 * app/menubar.c (mymenu): Adjusted menus for non-GNOME version. 357 3581999-05-16 Michael Krause <m.krause@tu-harburg.de> 359 360 * Installed glibc-2.1.1pre2 today, and... well, I had to recompile 361 some parts of my system, but the sound pause bug is gone now! 362 Seems like this was really a glibc-2.0.7pre3 bug. Life is fun 363 again, now that I've fixed one of the most disturbing bugs in my 364 system :-) 365 366 * FAQ: Mentioning the problem here as well... 367 3681999-05-11 Michael Krause <m.krause@tu-harburg.de> 369 370 * Got a new machine today, a 400MHz K6-2. The sound pause bug 371 introduced with kernel 2.2.3 is still present. I really start 372 believing this is not a soundtracker bug. Besides that, the new 373 computer rocks... 374 3751999-05-02 Michael Krause <m.krause@tu-harburg.de> 376 377 * app/instrument-editor.c (instrument_page_create): Add the 378 clavier widget and necessary callback functions. 379 (instrument_editor_clavierkey_press_event): Modify samplemap 380 appropriately. 381 382 * app/clavier.c (clavier_draw_label, clavier_set_key_labels): 383 Added these functions. 384 (clavier_expose): Clear before drawing. 385 (clavier_realize): Initializing color GC's. 386 (clavier_init): Initializing font. 387 388 * app/clavier.[ch]: This is Simon K�gedal's Clavier widget, taken 389 from clavier-0.1.3. 390 391 * app/st-subs.c (st_clear_pattern): Clear all the allocated track 392 space, not just the visible part. 393 (st_clear_track): optimized 394 395 * app/menubar.c: Added "Delete unused instruments", "Find unused 396 pattern", "Copy current to unused pattern", "Clear unused 397 patterns", "Pack patterns" and "Optimize module" functions to the 398 menu. Menu structure changed. Some key shortcuts added. 399 (menubar_handle_keys): Handling key shortcuts here. 400 401 * app/gui.c (change_current_pattern): Renamed to 402 gui_change_current_pattern() and made public. 403 404 * app/st-subs.c (st_copy_pattern, st_is_empty_track, 405 st_is_empty_pattern, st_find_first_unused_and_empty_pattern, 406 st_is_pattern_used_in_song): New functions. 407 (st_dup_pattern): Using st_copy_pattern(). Initializing 408 alloc_length field. 409 410 * app/module-info.c: Removed "Delete unused instruments" button. 411 (modinfo_copy_to_empty_pattern, modinfo_find_empty_pattern, 412 modinfo_clear_unused_patterns, modinfo_reorder_patterns, 413 modinfo_pack_patterns, modinfo_optimize_module): New functions. 414 415 * Released v0.1.2 416 4171999-05-01 Michael Krause <m.krause@tu-harburg.de> 418 419 * app/gui-subs.c (gnome_warning_dialog): Pure GTK+ implementation. 420 421 * app/gui.c (gui_enable_sampler_mode): Fixes for the new GUI 422 layout in 0.1.1. 423 424 * app/menubar.c: Added menubar_enable() and menubar_disable() 425 426 * app/gui-subs.c (gnome_app_ok_cancel_modal): Moved from menubar.c 427 to this file. 428 429 * app/gtkspinbutton.[ch]: Removed. 430 431 * app/gui-subs.c (gui_subs_create_slider): 432 (gui_put_labelled_spin_button): Use extspinbutton_new() instead of 433 gtk_spin_button_new() 434 435 * app/extspinbutton.[ch]: New widget which inherits from 436 GtkSpinButton. The old gtkspinbutton size adjustment hack has been 437 implemented in a clean object-oriented fashion now. 438 439 * app/track-editor.c (tracker_page_handle_keys): Added support for 440 keyoff note. 441 442 * app/keys.c: Added keyoff note key. 443 4441999-04-30 Michael Krause <m.krause@tu-harburg.de> 445 446 * app/xm.c (XM_Load): Trap xm_load_xm_instruments errors 447 (xm_load_xm_instrument): Return error codes instead of doing 448 exit(1). 449 450 * app/instrument-editor.c (instrument_page_handle_keys), 451 app/module-info.c (modinfo_page_handle_keys), app/sample-editor.c 452 (sampler_page_handle_keys): Adjusted for new keys handling 453 454 * app/gui.c (gui_play_note): Signature changed; takes note number 455 instead of KeySym now. 456 457 * app/track-editor.c (tracker_page_handle_keys): Adjusted for new 458 keys handling. 459 (track_editor_handle_column_input): Renamed from insert_note(); 460 the note column is handled at the beginning of 461 tracker_page_handle_keys() directly. 462 463 * app/keys.[ch]: New file name of notekeys.[ch]. Some fixes to 464 handle more key combinations. 465 4661999-04-28 Michael Krause <m.krause@tu-harburg.de> 467 468 * app/st-subs.c (st_clean_song): Initialize xm->flags to zero. 469 4701999-04-27 Michael Krause <m.krause@tu-harburg.de> 471 472 * app/notekeys.c: Nearly rewritten for the configuration 473 dialog. Still a little bit buggy, and it can't save the settings, 474 but better than nothing for now. 475 476 * app/gui-subs.c (build_option_menu): Taken from testgtk.c 477 (get_clist_in_scrolled_window): Moved from module-info.c 478 4791999-04-23 Michael Krause <m.krause@tu-harburg.de> 480 481 * app/notekeys.c: Start designing notekeys configuration dialog. 482 483 * app/menubar.c: Added "Settings" / "Keyboard Configuration". 484 4851999-04-22 Michael Krause <m.krause@tu-harburg.de> 486 487 * app/audio.c: Added #include <string.h> for glibc 2.1.1 488 4891999-04-19 Michael Krause <m.krause@tu-harburg.de> 490 491 * app/track-editor.c (insert_note): 492 (tracker_page_handle_keys): accept capital letters as key 493 accelerators as well. Don't worry about additional modifiers. 494 495 * app/sample-editor.c: Use mixer_sample_word_length instead of 496 accessing type field directly. 497 (sample_editor_copy_cut_common): remove_clicked() extended to 498 handle the copy'n'paste buffer. Cut, Remove and Copy call this 499 one. 500 (sample_editor_convert_sample): added 501 (sample_editor_resolution_changed): use convert_sample() 502 (sample_editor_paste_clicked): implemented 503 (sample_editor_page_create): enable cut, copy and paste buttons. 504 (sample_editor_resolution_changed), 505 (sample_editor_copy_cut_common), 506 (sample_editor_paste_clicked): remove set_sample(NULL) calls; fixes 507 crashes while unlock()ing (oops :D). 508 (sample_editor_init_sample): added 509 510 * app/mixer.h (mixer_sample_word_length): New helper function. 511 5121999-04-18 Michael Krause <m.krause@tu-harburg.de> 513 514 * app/gui.c (programlist_initialize): This function could destroy 515 the restart position value. Fixed. 516 5171999-04-13 Michael Krause <m.krause@tu-harburg.de> 518 519 * app/audio.c (audio_raise_priority): Replace nice() call by 520 sched_setscheduler() call to get realtime priority. Now 521 soundtracker crashes the whole machine randomly while playing :( 522 Using nice() only for now. You can remove the "&& 0" condition to 523 test the realtime scheduler if you want. 524 525 * app/audio.c: Added #include <errno.h> 526 5271999-03-22 Michael Krause <m.krause@tu-harburg.de> 528 529 * configure.in, INSTALL: audiofile 0.1.5 is sufficient. 530 5311999-03-21 Michael Krause <m.krause@tu-harburg.de> 532 533 * Released v0.1.1 534 535 * INSTALL: Updated requirements. 536 537 * app/module-info.c (get_clist_in_scrolled_window), 538 app/gtkspinbutton.c: Remove gtk+-1.0 special-casing. 539 540 * configure.in: Require gtk+-1.2.0. I really need some new 541 functions like gtk_table_resize() and gtk_window_set_modal(). 542 5431999-03-20 Michael Krause <m.krause@tu-harburg.de> 544 545 * app/envelope-box.c (envelope_box_new): Removed 546 put_labelled_spin_button in favour of 547 gui-subs.c/gui_put_labelled_spin_button() 548 549 * app/gui-subs.c (gui_put_labelled_spin_button): Additional 550 argument 'callbackdata' 551 552 * app/menubar.c: Added non-GNOME implementations of the menu bar 553 and the dialog functions; this is based on Peter Zelezny's 554 xchat-0.9.2/menu.c. 555 556 * app/scope-group.c: ScopeGroup is now a GTK+ widget and uses a 557 table to layout the scopes in two rows. Hmm, yes. Much better :-) 558 559 * app/sample-display.c (sample_display_size_request): Reduced 560 minimum height to 32 pixels. 561 562 * app/gui.c (gui_init): Reworked layout of the upper part of the 563 main window. Hmm, yes. Much better :-) 564 565 * app/gui-subs.c (gui_subs_create_slider): Returns GtkWidget 566 instead of adding it to a destbox. 567 568 * app/gui-subs.h: Added type field to gui_subs_slider through 569 which you can disable the hscale in addition to the spinbutton. 570 571 * app/preferences.c (prefs_page_create), app/instrument-editor.c 572 (instrument_editor_update): Use gui_subs_set_slider(). 573 574 * app/gui-subs.c (gui_subs_set_slider_value): 575 (gui_subs_get_slider_value): Added new functions for opaque 576 handling of "gui_subs_slider"s. 577 578 * app/preferences.c: Moved Doublebuffer and Scopes toggles to the 579 preferences page. 580 5811999-03-19 Michael Krause <m.krause@tu-harburg.de> 582 583 * app/sample-editor.c (sample_editor_loopradio_changed): Only 584 update sample.looptype if it has really changed. 585 586 * app/track-editor.c, app/sample-editor.c, 587 app/instrument-editor.c, app/envelope-box.c, app/gui.c, 588 app/module-info.c: Update xm->modified at all relevant places. 589 590 * app/xm.h (xm_get_modified, xm_set_modified): Helper functions to 591 access the modified flag. 592 593 * app/gui.c (file_selected), app/menubar.c 594 (menubar_clear_clicked): Implemented confirmation dialogs. 595 596 * app/menubar.c: Added menu bar containing functions which don't 597 have to be available as buttons. Moved some stuff from gui.c here. 598 (menubar_quit_requested): This was gui_quit_requested(), and now 599 it asks the user before actually quitting (in case the module has 600 been modified). 601 602 * app/gui.c (gui_init): Added GNOME code (some the above GNOME 603 stuff is also inspired by Greg S. Hayes' work). 604 605 * configure.in: Added GNOME check; copied from xchat-0.9.2 because 606 it includes a --disable-gnome option which is essential for me. 607 608 * app/xm.c (xm_load_mod): Add some more sanity checks to the loop 609 point initialization. 610 6111999-03-16 Michael Krause <m.krause@tu-harburg.de> 612 613 * app/sample-editor.c (sample_editor_load_wav): Sample loader uses 614 the audiofile library now. Kinda works, but I didn't really 615 understand the audiofile API. 616 617 * configure.in: Added check for audiofile library. 618 6191999-03-07 Michael Krause <m.krause@tu-harburg.de> 620 621 * app/audio.c (mixer_mix_and_handle_scopes): Call mixer->mix with 622 scopebufs == NULL when scopes are disabled in the GUI. 623 624 * app/mixers/lqmono.c (lqmono_mix): Only write scope data if 625 scopebufs != NULL. 626 627 * app/scope-group.c: Made scopes_on variable global. 628 6291999-03-02 Michael Krause <m.krause@tu-harburg.de> 630 631 * app/audio.c (audio_thread): Don't die if poll() returns EINTR. 632 633 * app/Makefile.am: Added install-exec-local rule which sets the 634 setuid bit on the soundtracker executable. 635 636 * app/main.c (main): Handle user ID's correctly. SoundTracker can 637 now safely run setuid root; the mixer thread will run at a high 638 priority then. 639 640 * The audio subsystem is now automatically informed of loop 641 setting changes; you don't have to play the song to initialize the 642 sample settings any longer. You can also load, edit and save 643 samples without having to stop playing. 644 645 * app/xm-player.c (xmplayer_play_note): Don't modify 646 channel->nextsamp (fixes segfault). 647 648 * app/sample-editor.c: Lock the sample before changing it in any 649 way and tell the mixer about it. 650 651 * app/mixers/lqmono.c (lqmono_mix): Lock the sample we are 652 currently mixing. 653 654 * app/xm-player.c (channel): Removed nextsampid and cursampid 655 656 * app/xm.c, app/sample-editor.c, app/xm-player.c: Update for new 657 sample structure 658 659 * app/lqmono.c: Updated; removed the big sample info array. 660 661 * app/audio.c (driver_startnote): Changed signature to use pointer 662 to st_mixer_sample_info 663 664 * app/xm-player.c (xmplayer_init_playing): Removed sample 665 initialization, it's not needed any longer 666 667 * app/audio.c: Removed driver_setsample 668 669 * app/mixer.h, app/xm.h et al: Sample structure updated; 670 encapsulated mixer relevant data. Added synchronization mutex. 671 672 * app/audio.c (mixer_mix): Removed some stupid debugging code. 673 674 * app/driver.h, app/drivers/oss.c: Removed some superfluous code 675 that I've prepared to handle self-mixing soundcards. I'm not going 676 to implement this feature in the near future, and it needs more 677 code changes anyway, so I'm removing it completely. 678 679 * app/xm.c (xm_load_mod): Load more module formats (patch by Maik 680 Naeher) 681 6821999-02-17 Michael Krause <m.krause@tu-harburg.de> 683 684 * Released v0.1.0 685 686 * app/preferences.c: Added sliders adjusting the update frequency 687 of the scopes and the pattern scrolling. 688 * app/scope-group.c (scope_group_set_update_freq): 689 * app/track-editor.c (tracker_set_update_freq): New functions 690 691 * app/xm-player.c: * app/audio.c: * app/scope-group.c: Channels 692 can be muted again by toggling its scope button. 693 694 * app/module-info.c (modinfo_page_handle_keys): Added Linear/Amiga 695 frequency choices, and ProTracker mode toggle. Besides that, you 696 can play notes on the keyboard in the module info page now. 697 698 * app/gui.c: Added Tempo and BPM sliders. 699 700 * app/gui-subs.c (gui_subs_create_slider): Generic 701 slider/spinbutton combination. 702 703 * app/gui.c: Moved general GUI helper functions to gui-subs.c 704 705 * app/xm-player.c (xmplayer_init_play_song): When starting playing 706 at song position 0, reinitialize tempo and bpm. 707 708 * app/audio.c (audio_play): 709 (audio_ctlpipe_set_songpos): * app/gui.c (gui_update_player_pos): 710 (read_mixer_pipe): Proper "set song position" synchronization. 711 (read_mixer_pipe): gui_enable(1) when playing has stopped. 712 (gui_enable): Handling some more widgets here. 713 7141999-02-11 Michael Krause <m.krause@tu-harburg.de> 715 716 * app/gui.c (init_xm): Call tracker_set_num_channels(). 717 718 * app/tracker.c (tracker_set_num_channels): New 719 function. tracker.c is independent of the global xm pointer now. 720 7211999-02-06 Michael Krause <m.krause@tu-harburg.de> 722 723 * app/xm-player.c (xmplayer_final_channel_ops): Don't handle 724 envelopes, vibrato and volfade in ProTracker mode. 725 (PlayNote): Split function into two, one for PT and one for FT, to 726 avoid excessive ismod checks. 727 (xm_player_playnote_protracker): Remove unnecessary statements, 728 dealing with keyoff, sustain and so on.. 729 7301999-02-05 Michael Krause <m.krause@tu-harburg.de> 731 732 * app/xm-player.c (PlayNote): Moved note initialization to 733 xm_player_start_note(). 734 (xmpPlayTick): Moved glissando handling to 735 xm_player_handle_glissando(). 736 (PlayNote): Moved frq initialization to xm_player_get_note_freq(). 737 (channel): Renamed ArpNotes to ArpOffsets. 738 (xmpPlayTick): Arpeggios for ProTracker modules use curtick % 3 as 739 arpeggio index. 740 (xm_player_get_note_frq): For ProTracker modules we fetch the 741 correct period value from the new table 'protracker_periods', 742 which was taken from the original ProTracker replayer. 743 (xmplayer_final_channel_ops): For ProTracker modules we calculate 744 the frequency out of the period according to the Amiga 745 Manuals. All these changes result in a perfect mod replay: long 746 samples no longer get out of sync as they do in most 747 (all?) other PC module players. 748 (xmpPlayTick): E10 and E20 are no-ops in ProTracker (they don't 749 take the last-used value and slide around). 750 (freqrange): Fixed frequency range check for ProTracker modules. 751 7521999-01-30 Michael Krause <m.krause@tu-harburg.de> 753 754 * app/envelope-box.c: Removed frame 755 7561999-01-28 Michael Krause <m.krause@tu-harburg.de> 757 758 * app/instrument-editor.c: Added volfade and vibrato widgets 759 760 * app/xm.c (xm_load_xm_instrument): vibtype sanity check 761 762 * app/gui.c: Moved some GUI helper functions from preferences.c 763 7641999-01-21 Michael Krause <m.krause@tu-harburg.de> 765 766 * Released v0.0.13 767 7681999-01-20 Michael Krause <m.krause@tu-harburg.de> 769 770 * app/gui.c (gui_update_player_pos): Moved gdk_flush() call from 771 the beginning of read_mixer_pipe() to the end of this function. 772 7731999-01-16 Michael Krause <m.krause@tu-harburg.de> 774 775 * app/gui.c: Disabled clipping LED. 776 7771999-01-15 Michael Krause <m.krause@tu-harburg.de> 778 779 * app/preferences.c: Preferences page for main window 780 notebook. Playing parameters can be set independently for editing 781 and playing mode. Added necessary extensions to the audio 782 subsystem (driver->setprefs() function). We don't load & save the 783 preferences yet. 784 785 * app/scope-group.c, app/track-editor.c, app/audio.c (audio_time), 786 app/gui.c (gui_audio_tick): Don't let audio subsystem issue ticks 787 into the backpipe; use time stamps in public variables 788 (audio_playerpos_*) instead. 789 790 * app/gui.c (gui_update_player_pos): Return if set_songpos_count 791 != 0. 792 793 * app/audio.c (audio_play): Using last_synctime_driver instead of 794 player time as time stamp. 795 7961999-01-14 Michael Krause <m.krause@tu-harburg.de> 797 798 * app/drivers/oss.c (oss_open): fragsize is returned as a byte 799 count by OSS, but was used as a sample count in the code (this 800 resulted in oss_poll_ready_playing() blocking at the write() 801 call). Fixed. Playback should be smoother now. 802 8031999-01-11 Michael Krause <m.krause@tu-harburg.de> 804 805 * app/track-editor.c (tracker_timeout): 806 (tracker_start_updating): 807 (tracker_stop_updating): 808 (tracker_set_time): New functions, mostly c'n'p from 809 scope-group.c. Pattern and song position are updated independent 810 of audio player ticks now; this should give smoother and more 811 exact display updates when using large fragment sizes. 812 813 * app/gui.c (gui_update_player_pos): This is not done from 814 track-editor.c since some of the variables should belong to gui.c 815 only. 816 817 * app/audio.c (audio_play): Added ring buffer for player position. 818 8191998-12-29 Michael Krause <m.krause@tu-harburg.de> 820 821 * app/xm-player.c (xmpPlayTick): Did the same change to the Fine 822 VolSlide effects. 823 8241998-12-26 Michael Krause <m.krause@tu-harburg.de> 825 826 * app/xm-player.c (xmpPlayTick): Bug fix: The A00 effect (VolSlide 827 with argument 0) in ProTracker modules does nothing, in 828 FastTracker modules it uses the previously used argument 829 (mod.Stardust Memories by Jester). 830 8311998-12-19 Michael Krause <m.krause@tu-harburg.de> 832 833 * app/xm.c (XM_Load): A failed header length checking doesn't 834 prevent loading the rest of the module. SoundTracker versions 835 earlier than 0.0.12 could save the wrong value in here and 0.0.12 836 couldn't load those modules. 837 838 * app/xm-player.c: Ported KB's OpenCP fixes from 981126. This 839 mostly affects PlayNote(), vibrato and some strange envelope 840 sustain handling fix. 841 8421998-12-13 Michael Krause <m.krause@tu-harburg.de> 843 844 * Released v0.0.12 845 846 * app/sample-display.c (sample_display_draw_main): Removed 847 assertion check against s->width, which was frequently triggered 848 when changing the number of channels. We're just returning 849 immediately now. 850 851 * app/gui.c (read_mixer_pipe): PLAYING_STOPPED case: enabling GUI 852 and setting pattern position only if GUI was disabled. 853 8541998-12-12 Michael Krause <m.krause@tu-harburg.de> 855 856 * app/module-info.c (modinfo_delete_unused_instruments): This 857 function is triggered by the new button "Delete unused 858 instruments" and deletes all unused instrument in the current XM. 859 860 * app/st-subs.c (st_instrument_used_in_song): New function, finds 861 out if an instrument is used in an XM. 862 863 * app/gui.c (programlist_songpos_changed): Don't change editing 864 pattern when browsing in the playlist. 865 866 * app/gtkspinbutton.c (gtk_spin_button_insert_text), 867 app/module-info.c: gtk+-1.1.7 compatibility fixes. 868 869 * app/xm-player.c (xmplayer_play_note): Clear channel data before 870 initializing new note. 871 872 * app/sample-editor.c (sample_editor_update): Check current_sample 873 against NULL and disable the editor if there's no sample. 874 875 * app/xm.c (XM_Save): Saving amiga frequencies flag if set. 876 877 * app/sample-editor.c: Sampling is working again. Enabled 878 'Monitor' button. 879 8801998-12-11 Michael Krause <m.krause@tu-harburg.de> 881 882 * app/drivers/oss.c (oss_open): Added sampling support. 883 884 * app/audio.c (audio_lock, audio_unlock): Added locking 885 primitives. (audio_sampled): Added basic support for sampling; 886 limited to 16bit 44.1kHz mono sampling currently. 887 8881998-12-10 Michael Krause <m.krause@tu-harburg.de> 889 890 * app/xm-player.c (xmplayer_final_channel_ops): If ismod is set, 891 pan channels 0 and 3 to the left and channels 1 and 2 to the right 892 (Amiga stereo support is very digital: left or right :D) 893 894 * app/mixers/lqmono.c: Support stereo mixing. 895 896 * app/audio.c (mixer_mix): Fixed stereo-to-mono conversion. 897 898 * app/xm-player.c (xmplayer_final_channel_ops): ch->chFinalPitch 899 == 0 is only wrong for Amiga frequencies. 900 901 * app/gui.c (play_song, play_pattern): Moved GUI disabling calls 902 to read_mixer_pipe(). (gui_enable): renamed from 903 gui_enable_widgets_for_play_mode(). 904 905 * app/gui.h: New convenience macros (GUI_ENABLED, GUI_EDITING). 906 Renamed playing to gui_playing_mode and exported enum's. 907 908 * app/gui.c (read_mixer_pipe), app/track-editor.c, app/audio.c: 909 Note playing and editing fixed. 910 9111998-12-09 Michael Krause <m.krause@tu-harburg.de> 912 913 * app/scope-group.c (scope_group_create): Setting group spacing to 914 0. Making buttons insensitive. 915 916 * app/xm-player.c (xmplayer_final_channel_ops): Test 917 ch->chFinalPitch against 0 before setting sample frequency. Fixes 918 crashes on a lot of modules. 919 920 * app/xm.c (xm_save_xm_pattern): Empty patterns are saved with 921 data length 0. 922 9231998-12-08 Michael Krause <m.krause@tu-harburg.de> 924 925 * app/xm.c: Various bug fixes and note saving compression: 926 (xm_save_xm_instrument): Always use 40 as sample header size. 927 (xm_put_xm_note): xm_save_xm_note() renamed, renders into a buffer 928 now instead of into a file. Added note compression. 929 (xm_save_xm_pattern): Rewritten for xm_put_xm_note(). 930 (XM_Save): put_le_32(xh + 60, ...) instead of put_le_16(). XM's 931 saved by ST can be loaded into MikIT and FastTracker now :) 932 (XM_Load): get_le_32(xh + 60, ...) instead of get_le_16(). 933 9341998-12-03 Michael Krause <m.krause@tu-harburg.de> 935 936 * Released v0.0.11-fixes patch 937 938 * app/audio.c: #include <sys/time.h> needed for glibc2. 939 940 * app/module-info.c: Replaced GTK_HAVE_FEATURES_1_1_5 check by 941 explicit check of gtk version. 942 9431998-12-01 Michael Krause <m.krause@tu-harburg.de> 944 945 * Released v0.0.11 946 947 * app/audio.c, app/gui.c: Clipping indicator working again. 948 949 * app/audio.c (driver_sync): Pitchbend can now be changed while 950 playing without crashing. 951 952 * app/gui.c (gui_init): Added pitchbend slider. 953 954 * app/gui.c (gui_adj_amplification_changed): Updated for the new 955 audio.c. 956 957 * app/audio.c, app/xm-player.c: Added keyboard note playing. 958 Entered notes are played on the channel the cursor is positioned 959 in, not in a hidden internal 33rd one as v0.0.10 and earlier did 960 it. 961 9621998-11-30 Michael Krause <m.krause@tu-harburg.de> 963 964 * app/scope-group.c (scope_group_timeout): Fixed the remaining 965 bugs (rewritten). 966 967 * app/sample-display.c (sample_display_set_data): These functions 968 can copy the provided sample into their own buffer now. 969 9701998-11-29 Michael Krause <m.krause@tu-harburg.de> 971 972 * app/scope-group.c, app/audio.c, app/mixer.h: I finally have 973 working scopes again. The new code updates the scopes 974 independently of the audio thread, so the scopes are updated 975 frequently even if the audio fragment size is large. There are 976 still some bugs in here, and the code needs cleanup, but that 977 doesn't matter at the moment. 978 979 * app/sample-display.c (sample_display_new): Widget can be created 980 without the loop and selection editing properties; it is basically 981 the scope widget in that case. 982 983 * Removed scope.c and scope.h; sample-display.c offers the same 984 functionality. 985 9861998-11-28 Michael Krause <m.krause@tu-harburg.de> 987 988 * app/xm-player.c, app/audio.c, app/drivers/oss.c: Updated to use 989 the new polling scheme. 990 991 * app/driver.h: Added general fd poll() functions for the driver 992 modules. 993 9941998-11-25 Michael Krause <m.krause@tu-harburg.de> 995 996 * Whoo. I see that my just recently updated Emacs has a new date 997 style. And I always wondered who's interested in the exact day 998 time in a ChangeLog :) 999 1000 * app/module-info.c (get_clist_in_scrolled_window): New function 1001 to accomodate to the new clist handling in gtk+-1.1.5 1002 1003Mon Nov 23 16:59:20 1998 Michael Krause <m.krause@tu-harburg.de> 1004 1005 * app/drivers/oss.c (oss_open): Rewrote to use the new mixer 1006 interface. Tries more playback formats now (unsigned and signed 1007 16 bits little endian / big endian as well as unsigned / signed 8 1008 bit formats) and can also play stereo (there's just the mixer 1009 which has to make use of this :D) 1010 1011 * app/sample-display.c (sample_display_realize): 1012 * app/scope.c (scope_realize): 1013 * app/tracker.c (tracker_realize): Removed gtk_style_detach() 1014 calls. They caused a crash on some people's machines and were 1015 useless anyway. 1016 1017 * app/audio.c: Added sound format conversion layer between driver 1018 and mixer. Also added extra layer between XM player and the driver 1019 so we can handle things like pitchbending and balancing 1020 transparently. Pitchbending variable works perfectly. 1021 1022Thu Nov 19 19:48:28 1998 Michael Krause <m.krause@tu-harburg.de> 1023 1024 * app/xm-player.c (xmpPlayTick): Added some last changes to make 1025 amiga frequencies work. 1026 1027 * app/xm.c (xm_load_mod): Set xm->flags to IS_MOD and AMIGA_FREQ. 1028 (XM_Load): Set xm->flags to AMIGA_FREQ if necessary. 1029 1030 * app/xm.h: Add flags field 1031 1032Wed Nov 18 17:44:23 1998 Michael Krause <m.krause@tu-harburg.de> 1033 1034 * app/poll.c: poll() emulation via select(). Cleans up the #ifdef 1035 mess in some of the other files. 1036 1037 * app/sample-editor.c: Sampling temporarily disabled until support 1038 for that is in the driver module layer. 1039 1040 * app/endian-conv.h: Using direct memory access on i386 machines. 1041 1042 * app/xm.c (xm_save_xm_instrument): Save vibrato and volfade 1043 settings 1044 1045Sat Nov 14 17:33:15 1998 Michael Krause <m.krause@tu-harburg.de> 1046 1047 * app/xm.c (xm_load_xm_instrument): Loading vibrato and volfade 1048 settings. 1049 1050 * app/xm.h: New fields for vibrato settings and volume fadeout. 1051 1052 * I've just finished a first working version of the new player 1053 system. Also I've decided to replace my own XM player by the one 1054 from OpenCP. The following is a rough description of the changes: 1055 1056 * app/audio.c: This file contains the audio handler thread (it 1057 will also handle sampling). It controls the driver and player 1058 (Note that the player is not (yet) modularized) and the mechanism 1059 for communicating with the main thread. 1060 1061 * app/driver.h: Contains driver module definitions. The driver is 1062 the primary interface which audio.c deals with. I've written it 1063 with auto-sequencer devices like GUS and AWE in mind, but this 1064 might still need some tuning, as I don't own such a card. 1065 1066 * app/drivers/: Contains available driver modules. A driver module 1067 supplies functions for playing and sampling data. 1068 1069 * app/mixer.h: Mixer module definitions. Mixer functions are 1070 usually only called by the driver module which needs the 1071 mixer. The rest of SoundTracker doesn't care whether a mixer is 1072 needed or not. 1073 1074 * app/mixers/: The available mixer modules. lqmono.c contains the 1075 mixer routines as found in 0.0.10. 1076 1077 * app/xm-player.c: XM player routines. xmplayer_play() calls the 1078 driver functions directly and returns when driver->sync() 1079 blocks. Alright, this is the new OpenCP player. It's supposed to 1080 be the most FastTracker compatible player out there, despite of 1081 the chaotic source code :) Had to rewrite all the envelope 1082 handling and note / effect retrieval. 1083 1084 * app/main.c (main): The former mixer communication pipe is 1085 allocated here; also we currently initialize the audio thread with 1086 the OSS driver and the lqmono mixer. 1087 1088 * app/mixer.c: Is now obsolete. 1089 1090Sat Nov 7 14:19:40 1998 Michael Krause <m.krause@tu-harburg.de> 1091 1092 * Starting to think about a modular audio driver and mixer system. 1093 1094Sun Nov 1 12:37:39 1998 Michael Krause <m.krause@tu-harburg.de> 1095 1096 * Released v0.0.10 1097 1098 * app/xm.c: Doing charset conversion in the XM loader and saver. 1099 1100 * app/recode.c: New file; converts characters between IBM PC and 1101 ISO Latin1 encodings (derived from the recode source code). 1102 1103 * app/mixer.c (mixer_fill_buffer): Changed some loop calculations. 1104 I'm not yet completely happy with this piece of code. 1105 1106 * app/gui.c: Added amplification slider and clipping indicator. 1107 1108 * app/xm.c (xm_load_mod): Initialize sample only if length > 0. 1109 Check for correct loop parameters. 1110 1111 * app/track-editor.c (vscrollbar_changed): Block patpos signal 1112 handler before tracker_set_patpos(). 1113 1114Fri Oct 30 20:13:58 1998 Michael Krause <m.krause@tu-harburg.de> 1115 1116 * app/sample-editor.c: WAV loader and saver do endianness 1117 conversion and handle 8 and 16 bit samples. Added relnote spin 1118 button, resolution display and sample length display. Telling the 1119 mixer to stop playing before doing destructive sample operations. 1120 (sample_editor_ok_clicked): Initialize sample type. 1121 1122Thu Oct 29 18:30:29 1998 Michael Krause <m.krause@tu-harburg.de> 1123 1124 * app/mixer.c (mixer_fill_buffer): Added amplification and signal 1125 clipping. 1126 1127 * app/xm.c (xm_load_mod): Initialize s->panning to 128. 1128 1129 * app/mixer.c (mixer_fill_buffer): Added support for 8 bit 1130 samples. 1131 1132 * app/xm.c: Added support for 8 bit samples in XM loader/saver and 1133 MOD loader. 1134 1135 * app/sample-display.c (sample_display_draw_data): Added support 1136 for 8 bit sample data. 1137 1138 * app/xm.h (struct STSample): renamed 'type' to 'loop' and added 1139 new field 'type' which indicates 16 or 8 bit sample. 1140 1141 * app/sample-display.c (handle_motion): Bug fixed: end points 1142 could be equal to the starting points. 1143 1144Wed Oct 28 15:11:43 1998 Michael Krause <m.krause@tu-harburg.de> 1145 1146 * app/sample-editor.c: Added some assertions to make sure that the 1147 loop and selection ends are always to the right of the start 1148 points. 1149 1150 * app/sample-display.c: Made the whole source a lot more readable 1151 and fixed a good number of bugs. Thanks to Darin Ohashi for 1152 finding one of them. 1153 1154 * configure.in: Check for select() only if poll() is not found. 1155 1156 * app/gtkspinbutton.c (gtk_spin_button_configure): Fixed some 1157 compatibility #ifdef's and compiler warnings. 1158 1159 * app/mixer.c: Use poll() instead of select() when available. 1160 1161 * gui.c, sample-editor.c, configure.in: Doesn't fail when poll() 1162 is not available -- falling back to select(). 1163 1164Mon Oct 26 11:51:14 1998 Michael Krause <m.krause@tu-harburg.de> 1165 1166 * app/xm.c: Cleaned up and made all routines endianness- and 1167 typesize-safe. 1168 1169 * app/st-subs.c: New file; moved some of the more general 1170 functions from xm.c to this place. 1171 1172 * configure.in (CFLAGS): Added -Wall. And I always wondered why I 1173 got so few compiler warnings in the last few days :) 1174 1175 * app/xm.h: Got rid of the num_patterns and num_instruments 1176 fields. These were only relevant to xm.c anyway. 1177 1178Sun Oct 25 18:18:05 1998 Michael Krause <m.krause@tu-harburg.de> 1179 1180 * app/mixer.c (player_tick): Instrument without note retriggers 1181 volume and envelope now. 1182 1183 * Released v0.0.9 1184 1185 * TODO: Added a lot of things. 1186 1187 * README: Added a list of keyboard mappings. 1188 1189 * app/mixer.c (player_tick): Added ea* and eb* effects. 1190 1191 * app/xm.c (MOD_Load): Hacked together a ProTracker module 1192 loader. The finetune conversion is not really okay I think. 1193 1194 * app/endian-conv.h (get_be_16): Added. 1195 1196 * app/tracker.c (tracker_draw): only draw when widget is visible. 1197 1198 * app/gui.c (read_mixer_pipe): case STOPPED: tracker_set_pos(). 1199 (play_song): change_current_pattern(). 1200 1201 * app/mixer.c (stop_playing): Set player_songpos and 1202 player_patpos. 1203 1204Wed Oct 21 20:02:24 1998 Michael Krause <m.krause@tu-harburg.de> 1205 1206 * app/gtkspinbutton.c: Hacked in some #if's to make it compile 1207 with gtk+ 1.0.x. 1208 1209Sun Oct 18 12:40:01 1998 Michael Krause <m.krause@tu-harburg.de> 1210 1211 * app/xm.c (XM_load_pattern): Do endianness conversion (whoops, 1212 forgot that yesterday :D) and clear allocated channels. 1213 (XM_load_note): optimized. 1214 1215Sat Oct 17 14:43:35 1998 Michael Krause <m.krause@tu-harburg.de> 1216 1217 * Released v0.0.8 1218 1219 * app/mixer.c (mixer_main): PLAY_NOTE: reset globalvolume and 1220 smplcount only if we aren't playing the module. 1221 1222 * app/sample-editor.c: Added "Clear", "Show All", "Zoom in" and 1223 "Zoom out" operations. 1224 (remove_clicked): fix loop positions after cutting. 1225 1226 * app/sample-display.c: Unified semantics of the loop, selection 1227 and window end: The loop, selection and window end offsets point 1228 to the first sample that is not to be played in the loop / that is 1229 not victim of a forthcoming sample operation / that is not to be 1230 displayed. 1231 1232 * app/xm.h: Replaced STSample.looplen by loopend and changed the 1233 rest of the source code accordingly. 1234 1235 * app/mixer.c (init_note_freq): Don't reset sample when 1236 initializing 3xx effect. 1237 1238 * app/sample-editor.c (load_wav, save_wav): Do endianness 1239 conversion. 1240 1241 * app/endian-conv.h: Moved the endianness routines from xm.c to 1242 this place. 1243 1244 * configure.in: Remove checks for 'const' and 'inline'. We only 1245 compile on gcc anyway. 1246 1247 * app/xm.c (byteswap_le_16_array): Actually implemented this 1248 routine. Untested. 1249 (XM_Load): Amiga frequencies are ignored but loading continues. 1250 Do endianness conversion. 1251 (XM_save_samples): Clear sh[] before working. 1252 (XM_load_instrument): Issueing a warning if vibrato or volume 1253 fadeout are used. Do endianness conversion. 1254 1255 * app/sample-editor.c: Displaying selection data; reset button 1256 added. 1257 1258Fri Oct 16 14:46:44 1998 Michael Krause <m.krause@tu-harburg.de> 1259 1260 * app/sample-display.c (handle_motion): Almost rewritten. Should 1261 be working as expected now. 1262 1263 * app/sample-editor.c (sample_editor_display_loop_changed): 1264 Handling the 'loop_change' signal. 1265 1266 * app/sample-display.c: The loop points can be set with 1267 SHIFT-button1/3. Added signals 'selection_changed' and 1268 'loop_changed'. 1269 1270 * app/sample-editor.c: Added loop type/start/end controls. 1271 1272 * app/gtkspinbutton.c: Modified version of the original GTK+ 1273 spinbutton widget which adjusts its width so that the number is 1274 always displayed completely. 1275 1276 * app/xm.c (XM_load_samples): Initialize loopstart/-end if the 1277 loop flag is off. 1278 (st_clean_sample): Initialize looplen to 1. 1279 1280 * app/gui.c (gui_put_labelled_spin_button, 1281 gui_update_spin_adjustment): made non-static. 1282 1283 * app/sample-editor.c (sample_editor_update): After sampling into 1284 an empty sample slot, all the editing widgets are enabled now. 1285 1286Wed Oct 13 12:00:00 1998 Michael Krause <m.krause@tu-harburg.de> 1287 1288 * app/sample-display.c: Started to restructure this thing so that 1289 the drawing speed is optimized. Still a bit buggy. 1290 1291Mon Oct 12 12:36:37 1998 Michael Krause <m.krause@tu-harburg.de> 1292 1293 * app/xm.c (XM_Save): Save real module name instead of 1294 "<untitled>". 1295 1296 * app/module-info.c: Added "Module Info" page to the main window 1297 notebook, containing a list of all the instruments and samples and 1298 the song name. 1299 1300 * app/xm.c (XM_new_pattern): Initialize p->alloc_length. Stupid 1301 bug. 1302 1303 * app/sample-editor.c (ok_clicked, load_wav): exchange calls to 1304 st_clean_sample() and st_clean_instrument(); add extra call to 1305 st_clean_sample() to set sample name. 1306 (sample_editor_update): Set sample name text entry to new value. 1307 1308 * app/gui.c (offset_current_sample, handle_standard_keys): Added 1309 ctrl-GDK_Up and ctrl-GDK_Down for sample switching. 1310 1311 * app/track-editor.c (tracker_page_handle_keys): Check modifier keys 1312 in GDK_Up and GDK_Down. 1313 1314 * app/gui.c (gui_init): Moved current_instrument_create() and 1315 editing_status_create() into this function. Added sample selector. 1316 (gui_get_text_entry): new function, automatically installs the 1317 keyboard capture handling on a newly created text entry. 1318 1319Sat Oct 10 11:22:25 1998 Michael Krause <m.krause@tu-harburg.de> 1320 1321 * app/gui.c (read_mixer_pipe): Checking startstop_fifo against 0 1322 before decrementing. Prevents a crash when the mixer stops playing 1323 via the F00 command. 1324 1325 * Released v0.0.7 1326 1327 * Using autoconf/automake for configuration now. Moved all the 1328 sources into the 'app' subdirectory. 1329 1330 * mixer.c: Using explicit gint32's instead of int's in some fields 1331 of struct channel. 1332 1333 * gui.c (play_song), (play_pattern): Call play_stop() first. 1334 1335 * mixer.c (player_tick): Don't handle more than xm->num_channels 1336 channels. 1337 1338 * gui.c, xm.c (st_set_num_channels): Number of channels is 1339 adjustable now. 1340 1341 * gui.c (init_xm): Call change_current_pattern() instead of 1342 tracker_set_pattern(). New parameter 'new_xm'. 1343 1344 * gui.c, xm.c (st_set_pattern_length): Pattern length can be 1345 changed now. 1346 1347 * mixer.c: Replaced all occurences of the word 'period' by 1348 'pitch'. A period is inversely proportional to the frequency; the 1349 value called period in the XM docs is not. 'Pitch' isn't exactly 1350 the right word either, but 'period' is worse because it has 1351 another meaning in the Amiga context. 1352 1353 * gui.c (handle_standard_keys): Added GDK_Multi_key as a synonym 1354 for GDK_Control_R. 1355 1356Fri Oct 9 00:15:22 1998 Michael Krause <m.krause@tu-harburg.de> 1357 1358 * mixer.c (period_to_speed): Checking for integer overflow. Very 1359 short periods (very high frequencies) can't be rendered 1360 currently. The mixer code should be using long longs I guess. Some 1361 crashes are prevented for now. 1362 1363Thu Oct 8 22:22:50 1998 Michael Krause <m.krause@tu-harburg.de> 1364 1365 * gui.c (wait_for_player): Using new startstop_fifo variable to 1366 synchronize with the mixer thread. Fixes crash when loading XM 1367 after playing notes with the keyboard. 1368 1369 * gui.c (free_xm): New routine which resets all subsystems of the 1370 tracker before calling XM_Free(). Fixes crash when loading XM 1371 while in sample editor with samples playing. 1372 1373 * mixer.c (mixer_fill_buffer): Fixed loop handling again; first 1374 sample is now loopstart << ACCURACY, last sample is loopend << 1375 ACCURACY - 1. 1376 1377 * gui.c (change_current_pattern): Call mixer_set_pattern even when 1378 we're not in playing_pattern mode. Can now change pattern while 1379 playing a mod, just like in PT. 1380 1381 * mixer.c (mixer_main), gui.c (read_mixer_pipe): 1382 (programlist_songpos_changed): Added set_songpos_fifo variable to 1383 avoid GUI feedbacks when fast-forwarding the song position. 1384 1385Wed Oct 7 20:03:35 1998 Michael Krause <m.krause@tu-harburg.de> 1386 1387 * gui.c (programlist_songpos_changed): change_current_pattern() 1388 called even if playing. (change_current_pattern): Change 1389 editing_pat first, then call the other routines. Call 1390 mixer_set_pattern() only if in playing pattern mode. 1391 1392Tue Oct 6 17:37:14 1998 Michael Krause <m.krause@tu-harburg.de> 1393 1394 * gui.c (spin_editpat_changed): Call change_current_pattern() even 1395 if playing. 1396 1397 * gui.c, xm.c: Added "Clear Song" and "Clear All" operations. 1398 1399 * gui.c: Added restart position widget to the program list. 1400 1401 * gui.c: Instrument name changes are stored. 1402 1403 * mixer.c, gui.c: Position updates are handled together with the 1404 scopes in MSG2MAIN_TICK. Visual updates are a bit smoother on my 1405 slow machine now. And the scope buffers are double-buffered, so 1406 the scope is more in time with the sound. 1407 1408 * mixer.c: Fixed period range checking to use OpenCP's values. 1409 1410 * Makefile: Moved $(LDFLAGS) to the end of the line; some people's 1411 compilers complain otherwise. 1412 1413Mon Oct 5 17:10:03 1998 Michael Krause <m.krause@tu-harburg.de> 1414 1415 * mixer.c (player_tick): Handling playlist restart position now, 1416 adding support for position jumps. Added dxx effect. 1417 1418 * xm.c: Added the framework for endianness conversion. Rewrote 1419 load_samples and save_samples to use the new "length" semantics. 1420 1421 * xm.h: STSample.length / loopstart / looplen are measured in 1422 samples now, not in bytes. This removes the necessity for a lot of 1423 ">> 1" in the rest of the code. 1424 1425Sun Oct 4 17:29:10 1998 Michael Krause <m.krause@tu-harburg.de> 1426 1427 * Released v0.0.6 1428 1429 * sample-editor.c (daemon_thread): renamed daemon() to 1430 daemon_thread() so that we can compile on glibc2 systems :) 1431 1432 * xm.c (XM_load_samples): if an XM has samples with loop length 0, 1433 disable the loop completely. 1434 1435 * mixer.c (mixer_fill_buffer): fixed loop handling so that it 1436 works on very short loops, too. New routine is not yet optimized. 1437 1438 * Released v0.0.5 today (first public release) 1439