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