File: ChangeLog

package info (click to toggle)
petri-foo 0.1.5-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,316 kB
  • sloc: ansic: 17,162; xml: 7; makefile: 5
file content (1547 lines) | stat: -rw-r--r-- 54,441 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
2012-06-28 James Morris <james@jwm-art.net>

	* Fixed dish-file load of a bank containing a patch
	  without a sample file specified.

	* Change status from error to warning for "Failed to
	  parse" message. 

	* Add check for sandbox directory for debug build.


2012-06-27 James Morris <james@jwm-art.net>

	* Fixed build for older Cairo versions which do
	  not support CAIRO_OPERATOR_HSL_LUMINOSITY.

	* Fixed build for older JACK versions without
	  session support.

	* Fixed a few uninitialized warnings.


2012-06-22 James Morris <james@jwm-art.net>

	* Restored sliders visual aspect to pre-cairo days.
	* Fixed bug in vertical slider mark drawing.


2012-06-21 James Morris <james@jwm-art.net>

	* not kept up with the ChangeLog as usual...


2012-06-15 James Morris <james@jwm-art.net>

	* gui/mod_section.c: prevent change of env mod source
	  in amp tab from causing gtk critical console messages.

	* gui/global_settings.c: free new sample_file_filter str.


2012-06-11 James Morris <james@jwm-art.net>

	Preparatory Work for 0.1.3 Release
	==================================

	* added dist target
	* removed obsolete source files
	* changed default build to release
	* fixed some warnings caused by not-#defined debug
	* fixed some warnings about unused variables/parameters
	  (grep why is this still here)

2012-06-09 James Morris <james@jwm-art.net>

	* libpetrifoo/patch_private/patch_data.c, patch_copy:
	  add call to lfo_update_params for GLFOs (VLFOs are
	  updated on voice trigger).

2012-06-08 James Morris <james@jwm-art.net>

	* libpetrifoo/patch_set_and_get.c: fix assertion
	  range check for envelope key tracking.

	* libpetriui/dish_file.c: fix saving of LFO sync
	  setting.

	* libpetrifoo/pf_error.c: add missing enum cases
	  to switch, modify handling of unacknowledged
	  errors to be more informative.

	* gui/lfotab.c: only sensitize relevant widgets when
	  changing LFO between tempo-synced frequency and
	  non-synced frequency.

	* gui/lfotab.c: finish dynamically sensitizing LFO
	  amount sliders (this time for when switching between
	  different LFOs).

	* gui/idselector.c: change debug statement to output
	  BEFORE signal emmission.

2012-06-07 James Morris <james@jwm-art.net>

	* gui/sampletab.c, fix for play mode assertion failure.
	  Fixed logic for handling play modes where the to-end
	  checkbox should sometimes be ignored.

	* fixed "program returns random data in a function".
	  (oops added an unneeded return statement).

	* dynamically set LFO amount sliders sensitivity to reflect
	  state of appropriate modulation source.

	* remove ***IS*** textview message


2012-06-06 James Morris <james@jwm-art.net>

        * sample-selector auto-preview fixes


2011-08-06 Brendan Jones <brendan.jones.it@gmail.com>

	* gui/global_settings.[ch]
	  Stores last-used sample and bank directories into
	  XDG_CONFIG_HOME/petri-foo/rc.xml


2011-08-06 James Morris <james@jwm-art.net>

	* New zoom-in, zoom-out, zoom-fit, and zoom-1:1 buttons
	  these buttons replace the cruddy oldspin button previously
	  used for zooming and which the values of were meaningless.

	* Mouse-wheel zooming.
	  Moving the mouse-wheel down will zoom in to wherever the
	  pointer is pointing in the waveform.

	* Probably stuff which I've forgotten and not added into
	  this Changelog.

	* PHIN fan sliders have fans disabled by default.
	  the fans of the fan sliders require desktop compositing
	  so are disabled by default.

	* PHIN fan slider setting stored via global_settings

	* sample.c: Fixed raw/headerless sample loading

	* float_section.c: Fixed portamento time setting.


2011-07-26 James Morris <james@jwm-art.net>

	* new build system using cmake. alter dir structures.

	* include subset of PHAT in build and call it phin.


2011-07-23 James Morris <james@jwm-art.net>

	* patch_util.c, new function: patch_get_samplerate(void)

	* dish_file.c: current samplerate is written into the
	  dish_file within the "Master" node. This means that if the
	  bank is loaded at a later date and JACK is running at a
	  different samplerate, the values for the play+loop points
	  can be adjusted accordingly for the resampled audio-data.

	* sample.[ch]: removed resample_ratio from struct _Sample.
	  the resample_ratio member was added in the previous commit
	  and removed again due to the dish_file being responsible
	  for calculating differences in play+loop points when
	  JACK samplerate changes (between instances, not during a
	  single instance).

	* sample.c, sample_default: scaled output of LFO.
	  scale output of LFO to prevent the default sample having
	  samples exceeding the range -1.0 to +1.0.


2011-07-20 James Morris <james@jwm-art.net>

	* dish_file.c: fix/restore read/write of Portamento/Legato

	* sample.[ch]: added sample_get_resampled_size
	  this function provides a means to get the size the
	  sample will use once loaded. this is required for when
	  soft-limits to the size of samples petri-foo will load
	  is implemented.

	* sample.[ch]: addition and usage of MAX_SAMPLE_FRAMES
	  enumeration MAX_SAMPLE_FRAMES = INT32_MAX; replaces
	  previous detection of overly-large samples by casting
	  sf_count_t variables to int and noticing difference.

	* patch_util.c, patch_sample_load: scale loop points.
	  loop points of the default sample are now scaled to
	  the global sample rate as they should.


2011-07-19 James Morris <james@jwm-art.net>

	* Minimum and maximum Velocity value specification
	  for patche to allow velocity layering of patches.
	  Thanks to Brendan Jones for submitting patch.

	* mod_section.c: fix bug in amplitude modulation amount
	  Finally fixed this bug by the removal of a dangerously
	  misplaced else.

	* --unconnected command line option to not auto-connect
	  JACK ports. This is required for JACK Session to work
	  properly.

	* patch.c, patch_set_and_get.c, mod_section.c:
					inverted velocity mapping
	  Allows negative setting of velocity sensitivity. Means
	  you can cause low velocity to have the effect of high
	  velocity and vice-versa.


2011-07-14 James Morris <james@jwm-art.net>

	* Auto preview toggle added to the sample selector
	  dialog so that samples automatically play without
	  loading.

	* Added keyboard shortcut for 'Loa_d' in sample selector.

Thanks to Brendan Jones for submitting these additions.


2011-06-30  James Morris <james@jwm-art.net>

	* added gpl header to all source files

	* PETRI-FOO_ORIGINAL_FILES
	  new file listing files i consider to be original
	  to petri-foo and my own work.

	* removed gui/amptab.[ch]
	* removed gui/pitchtab.[ch]
	  both pairs of files were not used and had been
	  obsoleted by gui/paramtab.[ch].


2011-06-28  James Morris <james@jwm-art.net>

	* sample.c: fix bug caused by neglecting to set correct
	  frame count after resampling.

2011-06-27  James Morris <james@jwm-art.net>

	* gui.c: menu item generalization function
	* gui.c, patchlist.c: add default patch menu item.
	* patch_util.c, patch_private/patch_data.c:
	  duplication of patches working, i claim with
	  93.76% certainty.
	* sample.[ch]: addition of sample_deep_copy function.
    ********
	probably still very much mostly likely:
		some testing required.


2011-06-26  James Morris <james@jwm-art.net>

	* patchlist.c: my beloved context menu is back.

	* gui.[ch]: made the patch list menu callbacks
	  non-static and declared them in the header so
	  patchlist.c's context menu can use them.

	* <<<< MOD3 branch merged yesterday >>>>


2011-06-22  James Morris <james@jwm-art.net>

	* envtab.c: cleaner GUI labels when EGs turned on/off.
	  title is packed into main box rather than the table
	  and the table is sensitized to take care of labels.

	* lfotab.c: cleaner GUI labels when LFOs turned on/off.
	  similar process to envtab.c, but required an additional
	  box for packing (lfotab has different orientation).

	* dishfile.c: add envelope key tracking.


2011-06-??  James Morris <james@jwm-art.net>

	* adsr.[ch]: added key tracking, added params init.

	* dish_file.c: load/save of LFO amplitude modulation

	* envtab.c: added key tracking

	* patch.c: handles MIDI CC again, but in the better way.

	* patch_set_and_get.[ch]: added envelope key tracking.


2011-06-10  James Morris <james@jwm-art.net>

	* lfotab.c: add statements to handle modification of
	  amplitude modulation amounts.

	* lfotab.c: reduce highest rate of LFO from 250 hrtz
	  down to 50.0 hrtz.

	* midi_control.h: add macro to define a static inline
	  function to be used by jackdriver.c and midi.c for
	  mapping MIDI CC values where balance and pan are mapped
	  between -1.0 and +1.0 while all else mapped between
	  0.0 and +1.0 (pitch wheel is handled separately).
	  

2011-06-09  James Morris <james@jwm-art.net>

	* lfo.[ch], gui/lfotab.c, patch_set_and_get.[ch], etc
	  Changes to add two amplitude modulation sources to
	  the LFOs. This was necessary for functionality such
	  as using the modwheel controller to adjust the amount
	  of modulation an lfo gives. See ML for notes.


2011-06-08  James Morris <james@jwm-art.net>

	* * * * * * * * * * * * * * * * * * * * * * * * * * * *
	* * * * * * * MIDI CC as Modulation Sources * * * * * *
	* * * * * * * * * * * * * * * * * * * * * * * * * * * *

	* MIDI CC numbers/names can now be chosen as modulation
	  sources within. lots of things have changed to accomplish
	  this.

	* Removal of hard-coded MIDI CC effects on pitch, amplitude,
	  filter cutoff, filter resonance, and panning.

	* "Default" sample is no longer a sine wave but a triangle wave.
	  Triangle chosen over sine as there's not much to filter out of
	  a sine wave.

	* "Default" sample now generated by an LFO and consequently
	  has better accuracy with regard to looping

2011-06-06  James Morris <james@jwm-art.net>

	* gui/mod_section.c: refresh
	  now calls mod_section_set_patch to blanket update entire
	  mod section widget (ie, parameter, sources, amounts, etc).

2011-06-05  James Morris <james@jwm-art.net>

	* control.h: addition of new enumerations for midi cc.

	* removal of LASH support.

	* patch_macros.h: INLINE_PATCH_TRIGGER_GLOBAL_LFO_DEF
	  fixed global lfo modulation settings by adding call to
	  lfo_rigger.

	* jackdriver.c: process
	  fixed handling of pitch bend wheel data so that resting
	  position is zero.

	* jackdriver.c: map_control
	  addition of new midi cc enumerations

	* gui/mod_section.c: mod_section_set_param
	  modified so a timeout to call refresh is added for every
	  parameter type.

	* gui/mod_section.c: refresh
	  modified so parameter changes via midi cc are reflected
	  in the gui.

2011-05-THIRTEEN James Morris <james@jwm-art.net>
	* simplified mono+legato voice operation
	  after removing half the logic which was ignored, it only left
	  logic which could be easily simplified. that's what i've done.
	* oh yes and i forgot to mention yesterday that i'd rejiggled
	  a load of the patch_private goings on, too. made that directory
	  build as a static lib. there was some rationale there at some
	  point for doing it. honest.

2011-05-12  James Morris <james@jwm-art.net>
	* This is a release of major code tweakery under the hood.
	* LFO is now an opaque data type
	* ADSR is now an opaque data type 
	* Patch and PatchVoice now allocated from heap.
	* scrapped passing around of lfo and envelope array indices
	  from public patch functions. 

	* naming and id, names.h/names.c +mod_src.h/mod_src.c
	*** previously, lfo and eg names were seperate entities, and their
	*** IDs were simply index numbers of an array.
	*** now however, modulation source names and modulation source IDs
	*** are used instead.
	*** this has required some changes into how modulation source IDs
	*** work. the IDS now have 4 categories, MISC, EG, VLFO, and GLFO
	*** which have ID values of 0x10, 0x20, 0x40, and 0x80 respectively.
	*** So if an EG is expected, just (expected_eg_id & MOD_SRC_EG) to
	*** discover if the ID is an EG ID.
	*** these ID values are now passed around where the old lfo/eg index
	*** values were.
	*** example IDs:
	***	name:"VLFO1" id:MOD_SRC_VLFO
	***	name:"VLFO3" id:MOD_SRC_VLFO + 2
	***	name:"Key"   id:MOD_SRC_KEY
	***	...see patch.h for more.
	*** it should be noted, that src/gui/mod_src.[ch] have been renamed
	*** as src/gui/mod_src_gui.[ch] so as not to conflict with the newly
	*** created mod_src.[ch]



2011-04-18  James Morris <james@jwm-art.net>
	* fixed seg-fault when sample-selector was opened on
	  an empty bank.
	* make repetitions of sample-editor play button turn off
	  previously triggered playing sample before playing again.
	* give voice lfos sensible starting frequency.

2011-04-17  James Morris <james@jwm-art.net>
	* really can't remember much at all, this is the best
	  i've got:
	* added ability to load raw/headerless samples
	* cleaned up sample-selector gtkfilechooser code
	* fixed loop/xfade bug/glitch/badcrash resulting
	  from setting xfade after setting loop points
	  derived from sample length and xfade length
	  when loading sample.
	* lots of meaningless-to-user modifications

2011-04-10  James Morris <james@jwm-art.net>
	* forgotten all sorts of much more important changes than:
	* added -DGSEAL_ENABLE for aid gtk3 transition at some
	  point in the future.
	* removed patch_set/get_range and range gboolean from
	  patch_data. basically range = (lower note == upper note).

2011-03-14  James Morris <james@jwm-art.net>
	* yeah like i remember ffs, b!
	* implemented sampler x-fades
	* implemented sampler fade-in/outs
	* tweaked mono+legato code
	* tweaked adsr attack for when using mono+legato

2011-03-04  James Morris <james@jwm-art.net>
	* another hopelessy out-of-date Changelog entry
	* removed specific patch_set/patch_get methods for
          play/loop start/stop points.
	* replaced above with patch_set_mark and patch_get_mark
	* replaced naming of sample_start sample_stop with
	  play_start and play_stop to reflect naming conventions
	  i'd already started.

2011-02-26  James Morris <james@jwm-art.net>
	* gui/voicetab.c - set portamento time slider range
          from 0.25 seconds to 1.0 seconds to reflect the range
          allowed for MIDI control changes (see midi.c map_control).

	* gui/*.[ch] changed almost all custom widgets (most of
	  which don't need to be widgets at all) so their
	  implementation data is private to the implementation.

	* gui/*.c replaced *_get_type(void) and other *_class_init
          declarations with G_DEFINE_TYPE.

	* gui/*.c removed ->destroy methods as a) they were misused
          and b) they were n't doing anything which wasn't done
	  anyway. see: http://mail.gnome.org/archives/gtk-app-devel-list/2011-February/msg00189.html

	* gui/waveform.c replace waveform_destroy with waveform_dispose
	  (see above link). This though, means using GObject instead
	  of GtkObject for the ->dispose method.


2011-02-23  James Morris <james@jwm-art.net>
	! sorry no real right and proper changelog entries

	* removed alsa driver
        * mixer no longer uses gettimeofday
	* removed support for JACK versions < 0.116.0
	* --enable-debug now enables the following options:
		-O0 -std=gnu99 -ggdb -Wextra
		-DGTK_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED
	* thanks to above options more deprecated GTK/GDK code
	  replaced.

	* moved GUI code from src/jackdriver.c src/audio_settings.c


2011-02-17  James Morris <james@jwm-art.net>
	* bisected the monolithic patch.[ch] to form patch_util.[ch].
	  within patch.[ch], all the setters and getters have gone,
	  along with a few functions necessary for them.
	  unfortunately, this means some variables are no longer static
	  to patch.c and are declared extern in private/patch_data.h.
	  such is the cost of bisecting 3000 lines of code of one file
          to form two files.

	* lots of other changes probably more exciting than this have
	  not of course been added to the changelog :-P

2011-02-13  James Morris <james@jwm-art.net>
	* house keeping: transferred patch_*_names functions into
	  mod_src_*_names functions.

2011-02-09  James Morris <james@jwm-art.net>
	* fixed bug caused by usage of wrong patch_* function for tuning
	  steps.

	* fixed GLFO output lists to only consist of global (ie non-voice)
          outputs (ie only GLFO outputs can modulate GLFOs, which is as it
	  should be).

2011-02-06  James Morris <james@jwm-art.net>
	* removed amptab.[ch] and pitchtab.[ch] replaced with paramtab.[ch]
          which can be used to generate the amplitude, pitch, and filter
          tabs via mod_section.[ch].

2011-02-05  James Morris <james@jwm-art.net>
	* changed all occurrences of volume with amplitude. Includes
	  capitalized variants. using sed.

	* Slowly working on GUI. Removing Pitch/Amplitude (formerly volume)
          from patchsection into dedicated pitch and amp tabs. Patchsection
	  will now only contain the tabbed pages.

2011-02-02  James Morris <james@jwm-art.net>
	* yeah right like I remember: forked and made independant LFOs and
	  ADSRs...

------------------------------------------------------------------------------

2007-09-06  Juuso Alasuutari <juuso.alasuutari@gmail.com>
	* src/gui/patchlist.c: Fixed regression introduced in rev 42 which
	  made the patch list unscrollable, forcing the window height to
	  grow as new patches were added.
	* src/specimen.c: Unified code formatting.
	* configure.ac: Removed -Werror from SPECIMEN_CFLAGS because it breaks
	  compile with GCC 4.2. The warning comes from the ALSA library and
	  is beyond our reach. Debian also implements the same fix in their
	  latest specimen package. (Note to self: Request the Debian devel to
	  also post any fixes upstream from now on.)
	* src/specimen.c: Modified help text and changed client_name var to
	  instance_name.
	* src/instance.c, src/instance.h, src/Makefile.am: Added to introduce
	  get_instance_name().
	* src/jackdriver.c, src/driver.c, src/driver.h,
	  src/gui/audio-settings.c, src/specimen.c, src/specimen.h: Changed
	  DEFAULT_INSTANCE_NAME references in audio driver code to
	  get_instance_name().
	* src/lashdriver.c, src/specimen.c: Changed lash_init() to register
	  client name from get_instance_name().
	* src/gui/gui.c, src/specimen.c: Add instance name to window title
	  if it's supplied.
	* src/midi.c: Get sequencer client name from get_instance_name().

2007-01-30  Eric Dantan Rzewnicki <eric@zhevny.com>
    * added specimen.desktop for gnome/kde users.
	* change to jackdriver.c for jack midi api update.
	* changed jackdriver.c to use jack_client_open() instead of
	jack_client_new(). This allows multiple specimen instances.
	* added command line options for bank to load and jack client name
	as submitted by Daniele Torelli <me@danieletorelli.net>.

2006-08-11  Eric Dantan Rzewnicki <eric@zhevny.com>

	* configure.ac, Makefile.am, src/Makefile.am, src/gui/Makefile.am,
	pixmaps/Makefile.am, bootstrap, autogen.sh (symlink to bootstrap),
	specimen.spec.in: changes merged from "0.5.1.1" branch
	representing paugh's reworking of the build system.

    * configure.ac: changed phat check to version 0.3.1. Need to check
	with paugh about why this was changed from -devel tarball.

	* src/jackdriver.c, src/mixer.h, src/mixer.c: applied jack-midi
	patch from Lars Luthman. NOTE: this should probably be made
	conditional on a check for a jack version with jack-midi support.

	* src/lfo.h, src/driver.h, src/lashdriver.c, src/specimen.c,
	src/gui/Makefile.in, src/gui/patchlist.h, src/gui/Makefile.am,
	src/gui/gui.h, src/patch.h, src/lashdriver.h, src/specimen.h,
	src/Makefile.am, configure.ac: applied specimen-lash.patch from
	drobilla (I think ... or was it Loki? need to clarify this). The
	pertinent changes are in lashdriver.[ch], specimen.c and the build
	system. The other changes are all cosmetic. There may be some
	slight confusion with the build system since this patch was made
	before paugh's build system rework.


2005-09-14  Pete Bessman  <ninjadroid@gazuga.net>

	* src/midi.c (open_seq): Renamed sequencer client to "specimen" to
	match up with the JACK client name.  Removed old LADCCA stuff that
	was lying around.

2005-08-06  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/gui.c (create_about): Fixed the author entry for me in
	the about box.  It was missing the trailing >.  Chris thinks this
	is a very big problem, and was quite concerned, and had a
	discussion with me at great length on the matter.  This lead into
	a speech about my direction in life, and his fear that my aimless
	maunderings will find me a whisky drenched hobo in orleans.  So I
	stabbed him.  That's OK.  He's fat, and fat people don't have the
	same rights as you and I.  In fact, I propose using fat people as
	an alternative fuel source.  Think about it.  We can have
	concentration camps to make the authoritarians happy, and we can
	burn the fat people to make the nanny staters happy, and we have a
	sustainable and relatively clean (or at least, amusing) source of
	energy to please the hippies.  Plus, we eliminate the need for any
	sort of relations with despotic middle eastern countries.  Which
	pretty much means that the next time johnny jihad bombs something,
	the leftists are going to implode because they simply will not be
	able to fashion any sort of apologia for our assailants that even
	an autistic monkey could be persuaded to accept as plausible.

	...

	I fucked your mom last night.

2005-08-02  Pete Bessman  <ninjadroid@gazuga.net>

	* src/mixer.c (preview_render): use DEFAULT_VOLUME

	* src/gui/sample-editor.c (cb_play): replace horribly broken velocity of 127 with 1.0

	* src/patch.c: fixed cuts (they got broken when I fixed envelope
	noteoffs for singleshots)

2005-07-31  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/gui.c: added an about dialog.

2005-07-27  Pete Bessman  <ninjadroid@gazuga.net>

	* src/patch.c: fixed so that singleshot patches will still release
	any envelopes they have turned on.

2005-07-23  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/gui.c (cb_menu_patch_add): new patches now have same
	channel as current one.

	* src/gui/midisection.c (midi_section_set_patch): added code to
	center keyboard around root note.

2005-07-18  Pete Bessman  <ninjadroid@gazuga.net>

	* src/beef.c (beef_write): added a missing cast for xmlChar (once
	again, thanks to Suva)

	* configure.ac: added libgnomecanvas-2.0 check for
	pkg-config (thanks to Suva for pointing out it's abscence!)

2005-07-12  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/patchsection.c: yanked out play and panic buttons.

	* src/gui/gui.c: added a help menu and put the panic button (STFU!) in there.

2005-07-09  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/channelsection.c, channelsection.h: split out from the
	midisection for GUI alignment.

	* README: updated to reflect new stuff.

	* src/patch.c (patch_dump): changed sorting to go by channels and then note.

	* src/gui/patchlist.c (patch_list_update): can now select either
	by index or patch id; updated invocations to reflect change.

2005-07-08  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/midisection.c: added code for setting root note and range through keyboard.

2005-07-06  Pete Bessman  <ninjadroid@gazuga.net>

	* src/patch.c (patch_trigger_with_id): verify note is in range before accepting.

	* src/gui/midisection.c, midisection.h, gui.c: added new section for setting midi params.

2005-07-03  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/patchsection.c: changed default title to the more appropriate "empty bank."

	* src/gui/gui.c (gui_refresh): added function.

	* src/specimen.c (main): added ability to load bank from cmdline.

2005-06-17  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/patchsection.c, voicetab.c, filtertab.c: use
	g_timeout_add() instead of g_idle_add() for refresh functions, and
	set to newly defined GUI_REFRESH_TIMEOUT interval created in gui.h

2005-06-04  Pete Bessman  <ninjadroid@gazuga.net>

	* src/patch.c (filter): convert freso to logreso via lin_to_log() and apply.
	(patch_create): use DEFAULT_VOLUME for new patch volumes.

	* src/specimen.h (DEFAULT_VOLUME): renamed DEFVOL to
	DEFAULT_VOLUME and modified source tree to reflect change.

	* src/mixer.c (mixer_mixdown): convert 'volume' to 'logvol' via lin_to_log()
	and apply that to samples.

	* src/patch.c (gain): convert 'vol' to 'logvol' via lin_to_log()
	and apply that to samples.

	* src/mixer.c (mixer_init): set volume to DEFAULT_VOLUME.
	(mixer_mixdown): renamed 'offset' to 'write' for clarity.
	(mixer_flush): added code to clear preview.

	* src/maths.c: added lin_to_log() and log_to_lin() to convert back
	and forth between linear and logarithmic volumes.

2004-11-30  Pete Bessman  <ninjadroid@gazuga.net>

	* src/patch.c (prepare_pitch): fixed a bug which prevented
	portamento from working properly when a sample had been tuned.

2004-11-22  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/patchsection.c (play_cb): fixed play button to use
	velocity of 1.0, not 127.

2004-10-09  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/mastersection.c (master_section_init): added a bit of
	vertical padding between the section and the contents beneath it.

2004-10-08  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/lfotab.c (lfo_tab_init): set lower value of sync
	sliderbutton to .25.

	* src/gui/*: updated to reflect
	adjustments to PhatSliderButton API change.

2004-10-06  Pete Bessman  <ninjadroid@gazuga.net>

	* applied c0ffs patches to move jitter correction code to mixer

2004-10-03  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/envelopetab.c: Fixed locking of amount fan for volume
	envelope.

	* src/gui/patchsection.c: Added patch title display and panic button.

	* src/gui/gui.c: Use PatchList to control our current patch now.

	* src/gui/patchlist.c: Created the PatchList widget, a better way
	to keep track of patches.

	* src/gui/patchsection.c: Replaced patch_section_update() with
	patch_section_set_patch().

	* src/beef.c: Account for monophonic and legato properties.

	* src/gui/voicetab.c: Implemented legato switch.

	* src/patch.c: Implemented legato

2004-10-02  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/voicetab.c: Implemented monophonic switch.

	* src/gui/waveform.c: Now use an orange color to draw loop points.

	* src/patch.c: Implemented manual declicking for patches without
	volume envelopes.  Modified to handle LFO and Envelope switching.
	Implemented monophonic patches.

	* src/gui/lfotab.c: Implemented switch.

	* src/gui/envelopetab.c: Implemented switch.

	* src/gui/envelopetab.c, envelopetab.h: Adopt same behavior as
	LfoTab when adjusting pitch modulation.  Enable the on/off check
	box.

	* src/beef.c: Added pitch_steps and monophonic properties.

2004-10-01  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/gui.c (gui_init): Added (...) to end of Add, Rename, and
	Settings menu entries.

	* src/gui/filtertab.c (filter_tab_destroy): remove refresh() from idle loop

	* src/gui/voicetab.c (voice_tab_destroy): remove refresh() from idle loop

	* src/gui/patchsection.c (play_cb): changed to handle [button|key]-press-event
	(stop_cb): changed to handle [button|key]-press-event
	(connect): changed to connect [play|stop]_cb to [button|key]-press-event
	(patch_section_destroy): remove refresh() from idle loop

2004-09-30  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/voicetab.c, patchsection.c, filtertab.c (refresh): added
	simple redisplay code so you can see the effects of MIDI CCs.

	* src/patch.c, patch.h, control.h (new), midi.c, mixer.c mixer.h:
	merged in c0ff's MIDI CC patch.

	* src/midi.c (calc_bpm): use errmsg() to print cop-out message

	* src/Makefile.am (specimen_SOURCES): added control.h

2004-09-29  Pete Bessman  <ninjadroid@gazuga.net>

	* src/patch.c (patch_duplicate): added code to store/restore lfo
	tables

	* src/gui/*: removed all old and unused files, finished up new interface.
	wootzor to the max0r!

2004-09-28  Pete Bessman  <ninjadroid@gazuga.net>

	* src/gui/*: added hooks to new gui elements to read parameters
	from the engine

2004-09-27  Pete Bessman  <ninjadroid@gazuga.net>

	* configure.ac: removed checks for ladcca and gtk-2.4, and removed
	their use throughout the code

	* gui.c: removed bank builder and piano, added calls for new GUI
	components.

	* bank-builder.*, piano.*, leash.*: DELETED!

	* *tab.*, *secion.*: created new GUI components.  Not hooked up
	yet.

2004-08-06 Pete Bessman <ninjadroid@gazuga.net>

	* beef.c: pitch is now saved/loaded, thanks to Rocco
	(linuxmedia4@netscape.com) for pointing out that it wasn't
	previously.

2004-07-22 Pete Bessman <ninjadroid@gazuga.net>

	* beef.c: committed changed version by Sacha Berger
	(sacha@woanders.de) which accounts for new patch parameters.
	
2004-07-01 Pete Bessman <ninjadroid@gazuga.net>

	* waveform.c: fixed the drawing to use the same concept behind
	Brensenham's algorithm for better accuracy, optimized and cleaned
	a bit.
	
2004-06-28 Pete Bessman <ninjadroid@gazuga.net>

	* ROADMAP: updated to reflect Thorsten's GUI contributions; 0.9.X
	is now an audit/pre-release phase.

2004-06-21 Pete Bessman <ninjadroid@gazuga.net>

	* lfo.c: restructured as a general class, share LFO tables now for
	more memory efficiency.  Added "positive" attribute, which
	constrains output from [0, 1] as opposed to [-1, 1] when set.
	
	* patch.c: added lfos at the voice level and global level on a
	per-parameter basis.  Added special handlers for LFO and ADSR
	amount setters for pitch, and added necessary code to advance(),
	so that the amount parameter for pitch modulators effectively sets
	the pitch that is reached.

	* lfo-settings.c, lfo-settings.h: removed from source tree

	* param-settings.c: added controls for LFO manipulation, adjusted
	amount widgets and code to work intuitively with the user
	(displaying amount in half-steps).

	* release: 0.4.0, "Smooth"
	...braaaaaaaiiinssss... gah...
	
2004-06-19 Pete Bessman <ninjadroid@gazuga.net>

	* patch.c: added pitch setters/getters, and pitch_steps setters
	getters.  Use pitch and pitch_steps to implement tuning.  Added
	setters/getters for delay and hold phases of envelopes, modified
	patch_create() to initialize those values.

	* gui.c: added controls for pitch and pitch_steps

	* adsr.c: added support for delay and hold phases
	
	* param-settings.c: increased precision of control for spinboxes,
	added controls for delay and hold

2004-06-17 Pete Bessman <ninjadroid@gazuga.net>

	* param-settings.c: added pitch option

	* patch.c: pitch is a parameter now, added pitchenv to PatchVoice
	and pitch to Patch, modified advance() to handle pitch modulation.
	Added properties necessary for portamento to work right to
	PatchVoice and Patch and created setters/getters.  Implemented
	portamento in patch_trigger_patch() and advance().

	* gui.c: changed starting master volume value to 80, added
	hooks for porta-params dialog

	* porta-params.c, porta-params.h: created the portamento settings dialog
	
2004-06-15 Pete Bessman <ninjadroid@gazuga.net>

	* gui.c: renamed "chokes" back to "cuts."  It would be appear that
	neither naming scheme is terribly intuitive.  That being the case,
	I'll go for the shorter one.

	* patch.c: revised the order of volume scaling operations in
	gain(); we now add the LFO value first, then apply the envelopes,
	then apply velocity.

2004-06-14 Pete Bessman <ninjadroid@gazuga.net>

	* sample.c: converted to a full-blown object

	* patch.c, mixer.c: adjustments to accomodate new sample.c

	* patch.c: reduced maximum number of patches to 32 and polyphony
	to 8.  This should tide us over until we have a global polyphony
	limit.  Added a temporary table to hold LFO values during mixdown
	process which render subroutines reference.  Added a hook int
	driver_set_buffersize() to resize these tables when/if the
	buffersize changes.

	* driver.h, driver.c:  added driver_set_buffersize()

	* mixer.c: removed lfo control and went back to "old" way of
	calling patch_render with full block of frames.

2004-06-13 Pete Bessman <ninjadroid@gazuga.net>

	* configure.ac, Makefile.am: total rewrite, cleaning up
	everything and removing redundancy between Makefiles.  Builds
	that don't specify --enable-debug are also built with -O3 and
	without -g.

	* pixmaps: created a new dir for the pixmaps and a makefile to
	manage them

	* play.png, stop.png: redid these; they're prettier and smaller
	now.  sodipodi > all

	* specimen.h: changed the debug() macro to expand to nothing if
	DEBUG isn't defined.  This should save us a handful of cycles
	during optimized builds for free.

	* patch.c: added patch_init/shutdown(), acting as a
	constructor/destructor pair.  Created patch_lock() functions and
	replaced explicit pthread_mutex_lock() calls with them.  Bugfixed
	patch_create() so that new patches start of with PATCH_MIN_RELEASE
	(lest the wrath of clicky samples be upon the unwitting user).

	* mixer.c: added mixer_init/shutdown(), acting as a
	constructor/destructor pair.  Added a mutex to the MixerPreview
	structure and replaced locks on the sample mutex with locks on
	this new mutex.

	* sample.h, sample.c: removed mutex from Sample structure.  Having
	it take care of locking for us was rather unhelpful.
	
2004-06-12 Pete Bessman <ninjadroid@gazuga.net>

	* alsadriver.c: removed G_MAXINT* and replaced with hexadecimal
	constants.  The G_MAXINT* features are only available in glib-2.4
	which isn't in wide enough use among LADers yet.

	* configure.ac: ripped out gthreads and added a check for pthreads
	(their usage is cleaner than with gthreads).

	* TODO, ROADMAP: updated these files at long last.
	
2004-06-11 Pete Bessman <ninjadroid@gazuga.net>

	* sync.h, sync.c: added sync_set_method()

	* alsadriver.c: calls sync_set_method() with SYNC_METHOD_MIDI
	whenever it's config frame is shown.  Added code to restore
	settings to their internal values if you close the audio-settings
	window or switch to the jackdriver and back without actually ever
	starting the alsa driver.  device is now stored with a GString.
	Status is now stored with an atomic variable instead of a mutex
	(we can get away with it... but why am I putting so much effort
	into a doomed module).

	* jackdriver.c: added a checkbox to use jack_transport syncing,
	processed on cofig_frame shows.  Improved the transport code to
	handle tempo changes (necessary in order to work with the
	jack_transport shell, possibly necessary in general, a good idea
	no matter what).

	* patch.c: fixed a bug in patch_set_samplerate() where changes
	wouldn't take effect until the next call.

	* Released version 0.3.0, "Leading the Strike;" can't deny the
	users LFOs any longer.
	
2004-06-10 Pete Bessman <ninjadroid@gazuga.net>

	* lfo.c: changed lfo_advace() to use cubic interpolation

	* mixer.c: changed FRAMES to 1 (these things should be run-time
	configurable)

	* patch.c: fixed a bug in patch_get_env_release() where the value
	returned would always be zero.

2004-06-09 Pete Bessman <ninjadroid@gazuga.net>

	* global: made (mostly) sure the rules laid down in STYLE are followed (tons of fun)

	* jackdriver.h, alsadriver.h: removed these files and replaced them with extern
	references in driver.c

	* jackdriver.c, alsadriver.h: removed custom *msg code, added
	driver type to initializing message

	* specimen.h: modified *msg macros to print __FUNCTION__

	* patch.c: fixed an *insidious* bug in patch_render_patch() that
	only manifests itself when switching samples.  If the new sample
	has fewer frames than the original sample, and there are one or
	more active voices with frame-positions greater than the new
	number of frames, we get a good-ol-fashioned segfault when we
	attempt to render those voices.  Took about an hour of focused
	ninja debugging, could have been worse I suppose.  The solution
	was to add a check in patch_render_patch() to make sure that
	voices which exhibit such pathological behavior are ditched.

	* patch.c: created functions patch_flush() and patch_flush_all()

2004-06-08 Pete Bessman <ninjadroid@gazuga.net>

	* driver.c, driver.h: created a new driver interface

	* mixer.c, patch.c, ticks.c: changes to accomodate new driver
	interface (the samplerate must be stored and cannot be explicitly
	retrieved)

	* jackdriver.c, patch.c: driver_set_samplerate() now called whenever
	driver is successfully started and if the samplerate changes

	* maths.c, maths.h: cerp() now demands an 8 bit fractional position value,
	rather than shifting a 32bit one
	
	* patch.c: replaced bit-twiddling for hex in expression for the maximum value
	of guint32 in patch_trigger_patch(), changed to accomodate new math.h

	* Makefile.am, gui/Makefile.am: added -Werror to CFLAGS
	
2004-06-06 Pete Bessman <ninjadroid@gazuga.net>

	* lfo.c: added a minor optimization to lfo_advance()

	* lfo-settings.c: increased the maximum allowable frequency to 20

	* patch.c: created a new function, patch_set_sample_rate(), removed patch_sample_reload_all()

	* audio-settings.c: adjusted to use patch_set_sample_rate()

	* globally: did some style cleanups to ensure consistency

	* STYLE: a new file to hold the style guidelines

	* PROFILE: a new file to hold the most recent gprof performance profile.
	We need a streamlined way to do a profiling build.

	* gprof-helper.c: ripped this file from the net to make gprof usable
	in multithreaded environments.
	
2004-06-06 Loki Davison <ltdav1@student.monash.edu.au>

	* lfo-settings.c: added ui for lfo sync.

2004-06-05 Pete Bessman <ninjadroid@gazuga.net>

	* patch.c: fixed a few bugs in the lfo handling code

	* lfo.c: changes to allow for tempo syncing

	* lfo-settings.c: tweaked Loki's lfo-sync code

	* midi.c: a few cleanups (ph33r).  ALSA midi syncing doesn't seem
	to work on 2.6.6 kernels, added a check for FPEs (should have been
	there anyway).

	* jackdriver.c: redid the jack syncing code (sorry Loki)
	
2004-06-04 Loki Davison <ltdav1@student.monash.edu.au>

        * sync.c, sync.h, jack-driver.c, midi.c: created midi/jack syncing code

2004-06-04 Pete Bessman <ninjadroid@gazuga.net>

	* lfo.c, lfo.h: initial creation of the LFO module

	* param-settings.c, param-settings.h: the files formerly known as
	adsr-settings.*, moved here to accomodate our kludgey UI.

	* gui.c:  removed the huge #ifdef commented block, and adjusted for
	adsr-settings.* renaming.

	* lfo-settings.c, lfo-settings.h: new gui interface to control LFOs.

	* patch.c: added hooks to store lfo settings, rendering functions
	now account for LFOs

	* mixer.c: added LFO needed code

	* audio-settings.c: added call to lfo_set_sample_rate() during
	sample rate changes

2004-05-28 Pete Bessman <ninjadroid@gazuga.net>

	* configure.ac: removed redundant AC_CHECK_LIB for libsndfile, and
	redundant gtk+-2.0 general pkg-config check

	* bootsrap: added autoheader call

	* Makefile.am: added GTK_FLAGS

	* sample-editor.c: added Loki's change to use a spinbutton for zoom level

	* adsr-settings.c: fixed amount spinbutton to be between -1.0 and 1.0

	* adsr.c: fixed erroneous conversion of sustain time to ticks in adsr_set_params()
	
	* gui.c: made the scrollbar policy for the piano's viewport completely automatic

	* patch.c: re-implemented envelopes for vol, pan, ffreq, and freso
	with new rendering system.  Set minimum release value to prevent
	clicks.

	* midi.c: changed to *actually* ignore redundant start/stop commands
	
	* BUGS: created this file to keep track of known bugs
	
2004-05-27 Pete Bessman <ninjadroid@gazuga.net>

	* Created a new set/get interface for patch envelopes

	* Created a new patch_param_t for parameters which also
	have envelope information

	* Modified mixdown system so that each patch tracks
	and renders its own voices (huge change)

	* Created a new interface for note activation and deactivation

	* Lots and lots of other little cleanups, tweaks, and optimizations
	that I doubt anyone will notice.  Comparing the old against the new,
	I'm amazed the old worked at all.

2004-05-25 Loki Davison <ltdav1@student.monash.edu.au>
	
	* piano.c, gui.c: Got rid of the externs Pete hated and added some
	helper functions instead. You can now drag and drop onto the file
	button as well, loading a new sample.
	
	* configure.ac: added check for libsoundfile, some how we missed it.

2004-05-24 Loki Davison <ltdav1@student.monash.edu.au>

	* piano.c, bank-builder.c: Add multifile drag and drop support.

	* piano.c: fixed horrible crash if you dragged of the end of the
        piano, spotted by AudioFranky.

2004-05-22 Loki Davison <ltdav1@student.monash.edu.au>

	* bank-builder.c, gui.c: Added the ifdefs to check for gtk 2.4.
	
	* configure.ac: added test for gtk2.4.

2004-05-20 Loki Davison <ltdav1@student.monash.edu.au>

	* bank-builder.c, bank-builder.h: Added the new bank builder, requires
	gtk 2.4 now.
	
	* piano.c: Added support for drag and drop creation of patches using
	the bankbuilder.
	
	* gui.c: Changed the layout into 2 columes to support the bank
	builder, added the bank builder and changed location of the piano.
	
	* README: added bit about drag and drop.

2004-05-18 Pete Bessman <ninjadroid@gazuga.net>

	* maths.c, maths.h: created these files and moved our
	interpolation routines here.  This is the future home of all
	future general purpose math routines.

	* ticks.c, ticks.h: moved getticks() and friends here.  All time
	related routines will go here in the future.
	
	* specimen.c, specimen.h: removed our in-house basename() and
	substituted all uses of it for g_path_get_basename().

	* specimen.h: fixed b0rken PIXMAPSDIR check/redef code.  Removed
	that old and crappy thread_data_t stuff (go go gadget vestigial
	newbie code).

	* configure.ac: added --enable-debug option

	* beef.c, patch.c: fixed a bug where loading a bank which has a
	patch with no samplefile causing segfaults.
	
2004-05-12 Pete Bessman <ninjadroid@gazuga.net>

	* midi.c: finally got around to cleaning this file up.

	* patch.c, patch.h: finally got around to using a sensible
	naming scheme for the functions here (patch_set_foo instead
	of patch_foo_set), and it was all done automagically via the
	beauty of sed.  Mmmmm... sed.

2004-05-12 Loki Davison <ltdav1@student.monash.edu.au>

	* sample-editor.c: Changed the zoom buttons to a scroll button with
	acceleration and scroll wheel support, as suggested by AudioFranky.

2004-05-10 Pete Bessman <ninjadroid@gazuga.net>

	* gui.c: renamed "cuts" to "chokes", since the former caused
	confusion.  Layout is now done with tables, and the piano widget
	is packed into a viewport to keep things nice and tidy.

	* waveform.c: fixed the aliasing problem, and adjusted the colors
	a tad.  There are still a few slight accuracy problems left to
	fix, as well as getting it to run smoothly with huge files.

	* sample-editor.c: made the scroll bar have a finer-grained
	resolution.
	
2004-05-09 Pete Bessman <ninjadroid@gazuga.net>

	* midi.c: note-on events with velocity of 0x00 are now interpreted
	as note-offs (thanks to Alexander <aharvey@ij.net> for the tip)

	* piano.c: applied Loki's patch to purtify things a bit.

	* sample-selector.c: selector now keeps track of its current directory.

2004-05-08 Loki Davison <ltdav1@student.monash.edu.au>
	
	* piano.c, piano.h, gui.c : added new piano interface for showing
	range and location. Based on the widget from Swami. 
	
	* configure.ac: Piano widget uses gnome_canvas so added check for it.
	you don't need all of gnome to use it.
	
	* README: Added bit about how to use the piano.  

2004-04-27 Loki Davison <ltdav1@student.monash.edu.au>

	* cca.c : added this file to support Lash/Ladcca. Has the main lash
	loop. Calls the gui to update about new patches.

	* jackdriver.c, specimen.c, midi.c: Minor changes to support lash.
	
	* Makefile.am: includes the extra libs needed for lash.

	* configure.ac: test for lash.

2004-03-11 Pete Bessman <ninjadroid@ml1.net>

	* patch.c: fixed bug where initial resonance and panning would
	have whack values (thanks to Paul Brossier for spotting this bug).

2004-02-24 Pete Bessman <ninjadroid@ml1.net>

	* patch.c: exercised the power of memcpy to minimize grunt work in
	patch_create() and patch_duplicate().  Support for resonance and
	panning envelopes added.  Got rid of stupid conversions for pan
	and volume setters/getters, that's the responsiblity of the
	caller.  Envelopes can be turned on and off.

	* adsr-settings.c: support for resonance and panning envelope added,
	ability to turn envelopes on and off.

	* mixer.c: support for resonance and panning envelope added.
	Filtering is now done before gain adjustment.

	* beef.c: cleaned up the file opening process, accomodated new
	parameters.

2004-02-24 Pete Bessman <ninjadroid@ml1.net>

	* waveform.c: applied Torben Hohn's optimization patch to *great*
	effect.  Made another tweak and it's running like a raped ape now.

	* mixer.c, patch.c, patch.h, adsr-settings.c: added support for
	cutoff ADSR.  Still pondering the best way to do this, wonder
	if I ought to go for a completely modular approach.  Need to
	sleep on it and ask around.

2004-02-23 Pete Bessman <ninjadroid@ml1.net>

	* Makefile.am, gui/Makefile.am: fixed to use $(pkgdatadir) instead
	of @datadir@ when determining where to put the pixmaps (thanks
	to Torben Hohn for the tip).

	* configure.ac: removed useless dependency on gthread

	* specimen.spec: included and modified Florin Andrei's rpm specfile
	
	* mixer.c: fixed a bug in the ping-pong looping logic.  This
	has really been the bane of my existence as of late >:O

2004-02-22 Pete Bessman <ninjadroid@ml1.net>

	* adsr-settings: created interface to set adsr envelope parameters.

	* path.c: added volume adsr parameters to patch structure and created
	setters and getters.

	* mixer.c: added support for volume adsr. Fixed a bug in the ping-pong
	loop logic.
	
2004-02-22 Pete Bessman <ninjadroid@ml1.net>

	* Complete source tree reorganization.  Subdirectories and
	everything.  Much prettier now.  Ah.

	* playmode-settings.c: created this file to contain the widgets
	to set a patches play mode.

	* gui.c: now uses playmode-settings.c to set play mode for a
	patch.

	* patch.c: play_mode_t restructured as a bit field, allowing
	direction and duration properties to be separate but represented
	in one variable.
	
	* mixer.c: more tweaks to improve quality and accuracy, in
	addition to accomodating new restructuring of play_mode_t.  simple
	lowpass filter and resonance support added.

	* holy shit, I didn't sleep...
	
2004-02-21 Pete Bessman <ninjadroid@ml1.net>

	* mixer.c: made a change so that notes in excess of the polyphony
	limit take the place of the oldest note currently playing, rather
	than being dropped.  Thanks to David R. Clark for bringing the
	necessity of this to my attention.  Reimplemented the cubic
	interpolation routine as a FIR (pow() was freakin' slow).  Made
	some other optimizations, mainly by substituting floats with ints
	and bitshifting.

	* patch.c: added patch_duplicate() function.

	* gui.c: added Duplicate to action menu.
	
2004-02-20 Pete Bessman <ninjadroid@ml1.net>

	* mixer.c, mixer.h: moved mixing functions here.

	* loadsample.c, loadsample.h: modularised sample loading into
	here.

2004-02-17 Pete Bessman <ninjadroid@ml1.net>

	* gui.c: fixed a minor control interaction bug.

	* Today marks the release of version 0.2.0 of Specimen, or the
	"Mortal Wombat" release as those in the know refer to it.
	Documentation has been painstakingly (snicker) prepared and is
	available on the website.
	
2004-02-16 Pete Bessman <ninjadroid@ml1.net>

	* waveform.c: supports range parameters so that it only draws a
	specified part of the waveform.  This makes good zooming possible.
	No, plastic doesn't make it possible.  Eat me.

	* editsample.c: file initialized.  This is the interface for
	editing sample play and loop start/stop points.  I dare say it's
	halfway beastly.

	* editsample.h: file initialized.  Contains prototypes for the
	sample editing interface.

	* patch.c: modified the play/loop point setters to modify other
	parameters so that a sane configuration is maintained when unsane
	arguments are given, rather than returning an error.  Came up with
	better names for the enumerated event constants.  The
	interpolation calls were simplified a bit and the whole mixdown
	function now accounts for playing samples in both directions.

	* gui.c: controls for ping pong mode and reverse mode added.
	
2004-02-15 Pete Bessman <ninjadroid@ml1.net>

	* waveform.c: transformed into a custom gtk widget Waveform.
	Drawing routine is significantly optmized.

	* gui.c: now displays waveform using the new Waveform widget.

2004-02-14 Pete Bessman <ninjadroid@ml1.net>

	* gui.c: extirpated a very minor (but stylistically abominable)
	bug in the way loop/play control constraints and values are set
	during patch changes.

	* waveform.c: now supports displaying loop and play points.

	* patch.c: modified file writing to write patches in order of
	their display index.  Fixed a *really* stupid bug in the sorting
	part of patch_dump() (swapped twice instead of once...).
	
2004-02-13 Pete Bessman <ninjdroid@ml1.net>

	* got off my lazy ass and started working on this again.

	* alsadriver.c: made sure that we don't wait on threads that don't
	exist when trying to shutdown when we aren't running.

	* patch.c: replaced patch_id_get_all() with patch_dump(), which
	does the same thing only better and sorted.  Created the function
	patch_verify() for testing that a patch exists and is sane.  Right
	now, this basically means ensuring that the specified patch is
	active.  Any out-o-whack integer parameters will get constrained
	to something reasonable by the nature of the gtk_spin_button
	class.  I also created patch_deactivate_by_id() so that you can
	preview looped samples without subjecting yourself to them for
	eternity.  Eliminated places where ints were constantly being
	converted to floats by storing those values as floats.

	* gui.c: cleaned this up like your mother cleans my pole when the
	rent's due.  Just kidding.  About your mom, I mean.  The code is
	significantly cleaner, and accounts for the changes made to
	patch.c.

	* waveform.c: created this file, which contains the waveform
	display code.  It's pretty much where it needs to be, now I just
	have to use it on a grander scale.

2004-02-09 Pete Bessman <ninjadroid@ml1.net>

	* patch.c: fixed a few erroneous newlines in some of the returns
	of patch_strerror().  Modified loop and play point setters to do
	nothing if there is no sample for the specified patch (they used
	to return errors).

	* gui.c: changed cb_sample_load() to call update_interface()
	instead of making changes to the sample button directly.

2004-02-09 Pete Bessman <ninjadroid@ml1.net>

	* patch.c: added display_index property to patches and a getter
	for it.  Modified patch_create() to initialize it and
	patch_destroy() to account for it.

	* gui.c: update_interface() now organizes menu entries according
	to display_index.

2004-02-06 Pete Bessman <ninjadroid@ml1.net>

	* patch.c: added patch_flush() to stop any events currently in the
	queue. patch_mixdown() has been cleaned up a lot, it should be much
	easier to expand on it in the future.

	* audiosettings.c: calls patch_flush() whenever changing drivers
	to clear out accumlated events.  Not doing this results in a nasty
	pop sometimes, so this is a nice improvement.

	* configure: got an autoconf/automake setup going on now.  What
	a huge pain in the nuts that was.
	
2004-02-03 Pete Bessman <ninjadroid@ml1.net>

	* patch.c: fixed another memory bug in the interpolation
	section of patch_mixdown().
	
2004-02-03 Pete Bessman <ninjadroid@m1.net>

	* gui.c: created a separate module for sample loading and
	added much needed "load" and "preview" functions.

	* patch.c: modularized sample loading and added support
	for "previewing" a sample.

2004-02-02 Pete Bessman <ninjadroid@ml1.net>

	* gui.c: current_patch no longer as file scope.

2004-02-01 Pete Bessman <ninjadroid@ml1.net>

	* gui.c: removed useless call to update_interface when loading samples
	that only served to disorient.

	* patch.c: fixed a math bug in the cubic interpolation algorithm.
	
2004-01-31 Pete Bessman <ninjadroid@ml1.net>

	* The first beta release of specimen, code named VOMITRON (those
	of you who get that kick ass) is made today.  Believers rejoice,
	sinners repent, etc. and so forth.
	
	* gui.c: controls added for loop points.

	* patch.c: patch_mixdown() does looping.  File reading/writing
	pays attention to sample start/stop info now.  Cuts work again.  I
	think I fixed some audio quality bug also, but I'm not sure.
	
2004-01-27 Pete Bessman <ninjadroid@ml1.net>

	* gui.c: controls added for manipulating sample start and stop points.

	* patch.c: patch_mixdown() accommodates sample start and stop
	parameters.

2004-01-26 Pete Bessman <ninjadroid@ml1.net>

	* bank.c: created a new file to handle the gui aspects of managing
	patch banks.

	* patch.c: set to use bank.c now.
	
2004-01-24 Pete Bessman <ninjadroid@ml1.net>

	* patch.c: patch_mixdown() does real linear interpolation when pitch
	scaling now.
	
	* patch.c: scant moments later, patch_mixdown() has been updated
	to do REAL LIVE CUBIC INTERPOLATION OMG!!? WTF?!!?
	
	* patch.c: fixed what should have been a horrible memory addressing
	bug and cleaned up the code a bit, excising gratuitous variables.
	
2004-01-23 Pete Bessman <ninjadroid@ml1.net>

	* In celebration of another year of our Sun not going super nova
	on us, another release of specimen has been made, monikered as the
	"Little Pink Christina Aguieasfdflarea Monsters"
	(HETAERA) release.  Midi velocity information isn't blatantly
	ignored, cuts are implemented, and crummy pitch scaling has forced
	its way into the code.

2003-12-22 Pete Bessman <ninjadroid@ml1.net>

	* Amateur hour continues with the "Winter is too friggin' cold"
	(WITFC) release.  The driver interface has some semblance of taste
	now, there is one mixdown function which does it's job well, and
	the CLI babbles incessantly as always.
	
2003-11-25 Pete Bessman <ninjadroid@ml1.net>

	* Initial ultra-mega-super-alpha release, code-named "It seemed
	like a good idea at the time," or "ISLAGIATT" since acronyms are
	way sweet.  Features a brain damaged output driver interface, slow
	mixdown functions, and copius CLI output.