12004-06-15 : Release 0.2.8 2 32004-06-15 : src/Makefile.am: 4 Removed loopotron for now. 5 src/quantiser.so.c, 6 src/sequencer.so.c: 7 Use macros for 'f' math functions (sinf and friends). 82004-06-13 : Makefile.am, 9 configure.in: 10 Now using installed gettext. 11 ABOUT-NLS 12 config.rpath, 13 config.sub, 14 m4/codeset.m4, 15 m4/gettext.m4, 16 m4/glibc21.m4, 17 m4/iconv.m4, 18 m4/intdiv0.m4, 19 m4/inttypes-pri.m4, 20 m4/inttypes.m4, 21 m4/inttypes_h.m4, 22 m4/isc-posix.m4, 23 m4/lcmessage.m4, 24 m4/lib-ld.m4, 25 m4/lib-link.m4, 26 m4/lib-prefix.m4, 27 m4/nls.m4, 28 m4/po.m4, 29 m4/progtest.m4, 30 m4/stdint_h.m4, 31 m4/uintmax_t.m4, 32 m4/ulonglong.m4, 33 po/Makefile.in.in 34 po/Makevars.template 35 po/Rules-quot 36 po/boldquot.sed 37 po/en@boldquot.header 38 po/en@quot.header 39 po/insert-header.sin 40 po/quot.sed 41 po/remove-potcdate.sin: 42 All of these are now symlinks to installed gettext, 43 and have been removed from the repository. 442004-05-02 : src/include/math_func.h: 45 Moved #include <math.h> below float_cast.h 46 float_cast.h may define ISO C99, which needs 47 to be defined prior to math.h so that the C99 48 lrint and lrintf functions are used 49 src/include/float_cast.h: 50 #define's to avoid including multiple times 51 src/include/common.h: 52 Removed redundant f_trunc_i 532004-04-30 : configure.in: 54 Oops. Check for sinf, not sinff 55 src/quantiser.so.c, 56 src/sequencer.so.c: 57 No need to free port names - static data 582004-04-15 : doc/blop.rdf: 59 Fixed Quantiser tags 602004-04-11 : doc/plugins_list.txt, 61 src/dahdsr_2021.so.c: 62 Added control-rate gate and trigger variant 63 src/tracker_2025.so.c, 64 Changed copyright year to year written 65 src/difference_2030.so.c, 66 src/ratio_2034.so.c: 67 Renamed labels to reflect port names 68 Changed copyright year to year written 69 po/blop.pot, 70 po/de.po, 71 po/en_GB.po: 72 Regenerated translations 73 doc/blop.rdf: 74 Added DAHDSR, Ratio and Difference plugins 752004-03-17 : src/include/math_func.h: 76 New file 77 Hide math functions behind defines to allow 78 substitution of sin for sinf etc where needed 79 configure.in: 80 Changes for sinf detection - now sets HAVE_SINF 81 src/include/common.h, 82 src/include/interpolate.h, 83 src/include/wavedata.h, 84 src/amp_1654.so.c, 85 src/fmod_1656.so.c, 86 src/random_1661.so.c, 87 src/tracker_2025.so.c: 88 Replaced sinf, expf etc with defined equivalent 89 doc/plugins_list.txt, 90 src/Makefile.am 91 src/difference_2030.so.c, 92 src/ratio_2034.so.c: 93 New plugins 94 src/product_1668.so.c, 95 src/sum_1665.so.c, 96 src/triangle_1649.so.c: 97 Minor comment corrections 98 src/sync_square_1678.so.c: 99 No need for math.h 100 intl/plural.c, 101 po/blop.pot, 102 po/de.po, 103 po/en_GB.po: 104 Updated message positions and for new plugins 1052004-01-20 : src/include/wavedata.h, 106 src/wdatutil.c: 107 Fixed phase offset bug 1082004-01-11 : src/triangle_1649.so.c: 109 Fixed silly mistake in applying scale factor 1102003-12-25 : src/include/wavedata.h, 111 src/include/wdatutil.h, 112 src/wavedata.c, 113 src/wavegen.c, 114 src/wdatutil.c: 115 Changes to wavedata generation - now all static 116 data in separate dll. No SHM anymore... 117 src/pulse_1645.so.c, 118 src/sawtooth_1641.so.c, 119 src/square_1643.so.c, 120 src/triangle_1649.so.c: 121 Changes to use new wavedata. 122 configure.in: 123 Removed check for POSIX SHM 124 src/include/common.h, 125 src/include/float_cast.h, 126 src/include/interpolate.h, 127 src/include/lp4pole_filter.h, 128 src/Makefile.am, 129 src/adsr_1653.so.c, 130 src/adsr_1680.so.c, 131 src/amp_1654.so.c, 132 src/branch_1673.so.c, 133 src/dahdsr_2021.so.c, 134 src/fmod_1656.so.c, 135 src/interpolator_1660.so.c, 136 src/lp4pole_1671.so.c, 137 src/lp4pole_filter.c, 138 src/product_1668.so.c, 139 src/quantiser.so.c, 140 src/random_1661.so.c, 141 src/sequencer.so.c, 142 src/sum_1665.so.c, 143 src/sync_pulse_2023.so.c, 144 src/sync_square_1678.so.c, 145 src/tracker_2025.so.c: 146 Silly code cleaning. I started, so I finished... 147 po/blop.pot, 148 po/de.po, 149 po/en_GB.po: 150 Updated for changes in code. 1512003-12-01 : src/fmod_1656.so.c, 152 src/lp4pole_1671.so.c, 153 src/pulse_1645.so.c, 154 src/random_1661.so.c, 155 src/sawtooth_1641.so.c, 156 src/square_1643.so.c, 157 src/tracker_2025.so.c, 158 src/triangle_1649.so.c: 159 Logarithmic minima changed to +ve value 160 for lazy hosts that do a simple log(val). 161 Assumes 48000 Hz sample rate. 1622003-11-15 : src/include/wavedata.h, 163 src/wavedata.c: 164 Added SHM for wavedata. 165 src/Makefile.am, 166 configure.in: 167 Added shm as option. 1682003-11-09 : src/amp_1654.so.c, 169 src/fmod_1656.so.c: 170 Replaced powf with expf (more efficient) 171 src/quantiser.so.c: 172 Fixed bug in wrapped mode quantiser - subtract, not 173 assign excess range from input 174 src/sync_pulse_2023.so.c: 175 Fixed audio rate variant - pulsewidth should be multiple of 176 sample rate for comparison with phase 177 src/include/wavedata.h, 178 src/wavedata.c, 179 src/wdatutil.c: 180 Changed to generate a separate data .so which is dlopen()ed 181 so that the data can be shared between multiple instances. 182 src/pulse_1645.so.c, 183 src/sawtooth_1641.so.c, 184 src/square_1643.so.c, 185 src/triangle_1649.so.c: 186 Modified to use new .so data instead of #included headers. 187 src/Makefile.am: 188 Build rules changed to build data as .so, and install 189 in subdir 190 configure.in: 191 Added wavedata subdir variable 192 po/blop.pot, 193 po/de.po, 194 po/en_GB.po: 195 Updated to reflect changed positions of strings in 196 oscillator plugins 1972003-09-28 : src/adsr_1653.so.c, 198 src/adsr_1680.so.c, 199 src/amp_1654.so.c, 200 src/branch_1673.so.c, 201 src/dahdsr_2021.so.c, 202 src/fmod_1656.so.c, 203 src/interpolator_1660.so.c, 204 src/lp4pole_1671.so.c, 205 src/product_1668.so.c, 206 src/pulse_1645.so.c, 207 src/quantiser.so.c, 208 src/random_1661.so.c, 209 src/sawtooth_1641.so.c, 210 src/sequencer.so.c, 211 src/square_1643.so.c, 212 src/sum_1665.so.c, 213 src/sync_pulse_2023.so.c, 214 src/sync_square_1678.so.c, 215 src/tracker_2025.so.c, 216 src/triangle_1649.so.c: 217 Added #include <locale.h> as compiler was complaining about 218 setlocale(). Strange. It Worked Yesterday (tm). 219 src/quantiser.so.c: 220 Some fine-tuning and fixed change-trigger. 221 src/Makefile.am: 222 Removed (added -O0) optimisations for building quantiser, as 223 -O1 and up break it. 224 configure.in: 225 Removed redundant -f options from CFLAGS (covered by -O3) 226 po/blop.pot, 227 po/de.po, 228 po/en_GB.po: 229 Updated since changes to sources 2302003-09-23 : po/de.po: 231 German translations from Mario Lang 232 po/blop.pot, 233 po/en_GB.po: 234 Recreated, omitting plugin labels 235 src/adsr_1653.so.c, 236 src/adsr_1680.so.c, 237 src/amp_1654.so.c, 238 src/branch_1673.so.c, 239 src/dahdsr_2021.so.c, 240 src/fmod_1656.so.c, 241 src/interpolator_1660.so.c, 242 src/lp4pole_1671.so.c, 243 src/product_1668.so.c, 244 src/pulse_1645.so.c, 245 src/quantiser.so.c, 246 src/random_1661.so.c, 247 src/sawtooth_1641.so.c, 248 src/sequencer.so.c, 249 src/square_1643.so.c, 250 src/sum_1665.so.c, 251 src/sync_pulse_2023.so.c, 252 src/sync_square_1678.so.c, 253 src/tracker_2025.so.c, 254 src/triangle_1649.so.c: 255 Removed gettext marks from plugin labels, as they 256 mostly won't translate well. 257 Makefile.am: 258 Cleaned up EXTRA_DIST madness 2592003-09-12 : src/include/wdatutil.h: 260 Fixed macro that accidentally worked anyway 261 src/wavedata.c: 262 No need for stdio.h 2632003-09-09 : ABOUT-NLS, 264 config.rpath, 265 intl/* 266 m4/* 267 po/ChangeLog, 268 po/Makefile.in.in, 269 po/Makevars.template, 270 po/Rules-quot, 271 po/boldquot.sed, 272 po/en@boldquot.header, 273 po/en@quot.header, 274 po/insert-header.sin, 275 po/quot.sed, 276 po/remove-potdate.sin: 277 Gettext boilerplate added 278 po/LINGUAS, 279 po/Makevars, 280 po/POTFILES.in, 281 po/blop.pot, 282 po/en_GB.po: 283 BLOP-specific gettext files added. 284 src/Makefile.am: 285 For automake 1.5 (needed for gettext) 286 src/include/Makefile.am: 287 Add gettext.h to dist target 2882003-09-05 : Makefile.am, 289 configure.in: 290 gettextize 291 src/include/gettext.h: 292 Added for gettext use in sources 293 src/adsr_1653.so.c, 294 src/adsr_1680.so.c, 295 src/amp_1654.so.c, 296 src/branch_1673.so.c, 297 src/dahdsr_2021.so.c, 298 src/fmod_1656.so.c, 299 src/interpolator_1660.so.c, 300 src/lp4pole_1671.so.c, 301 src/product_1668.so.c, 302 src/pulse_1645.so.c, 303 src/quantiser.so.c, 304 src/random_1661.so.c, 305 src/sawtooth_1641.so.c, 306 src/sequencer.so.c, 307 src/square_1643.so.c, 308 src/sum_1665.so.c, 309 src/sync_pulse_2023.so.c, 310 src/sync_square_1678.so.c, 311 src/tracker_2025.so.c, 312 src/triangle_1649.so.c: 313 Added missing semicolon 314 TODO, 315 ChangeLog: 316 'Proper' dates. 3172003-08-30 : src/adsr_1653.so.c, 318 src/adsr_1680.so.c, 319 src/amp_1654.so.c, 320 src/branch_1673.so.c, 321 src/dahdsr_2021.so.c, 322 src/fmod_1656.so.c, 323 src/interpolator_1660.so.c, 324 src/lp4pole_1671.so.c, 325 src/product_1668.so.c, 326 src/pulse_1645.so.c, 327 src/quantiser.so.c, 328 src/random_1661.so.c, 329 src/sawtooth_1641.so.c, 330 src/sequencer.so.c, 331 src/square_1643.so.c, 332 src/sum_1665.so.c, 333 src/sync_pulse_2023.so.c, 334 src/sync_square_1678.so.c, 335 src/tracker_2025.so.c, 336 src/triangle_1649.so.c: 337 Prepared for gettext (marked translatable strings) 3382003-08-27 : src/include/lp4pole_filter.h, 339 src/adsr_1653.so.c, 340 src/adsr_1680.so.c, 341 src/dahdsr_2021.so.c, 342 src/interpolator_1660.so.c, 343 src/lp4pole_1671.so.c, 344 src/lp4pole_filter.c, 345 src/pulse_1645.so.c, 346 src/quantiser.so.c, 347 src/random_1661.so.c, 348 src/sawtooth_1641.so.c, 349 src/sequencer.so.c, 350 src/square_1643.so.c, 351 src/tracker_2025.so.c, 352 src/triangle_1649.so.c: 353 Moved initialisation of instance data to activate() 354 function in each plugin. 355 src/sync_pulse_2023.so.c, 356 src/sync_square_1678.so.c: 357 As above, plus added TOGGLED hint for gate port. 358 TODO: 359 Added stuff that needs to be done :) 3602003-08-23 : src/adsr_1653.so.c, 361 src/adsr_1680.so.c, 362 src/dahdsr_2021.so.c, 363 src/sequencer.so.c: 364 Set TOGGLED hint for gates and triggers. 3652003-07-02 : doc/blop.rdf, 366 doc/plugins_list.txt, 367 src/quantiser.so.c, 368 src/Makefile.am: 369 Added quantiser plugin 3702003-06-30 : doc/blop.rdf: 371 Added new plugin info 372 src/adsr_1653.so.c, 373 src/adsr_1680.so.c, 374 src/dahdsr_2021.so.c: 375 Fixed some (minor) bugs in envelope generation 3762003-06-26 : src/sync_pulse_2023.so.c, 377 src/tracker_2025.so.c: 378 src/Makefile.am: 379 Added new signal tracker and pulse clock plugins 3802003-06-15 : doc/plugin_list.txt, 381 src/dahdsr_2021.so.c, 382 src/Makefile.am: 383 Added new dahdsr plugin 3842003-06-11 : configure.in: 385 Changed displayed default LADSPA path in help 386 Removed extraneous cpu-type hack 387 src/adsr_1653.so.c, 388 src/adsr_1680.so.c: 389 Sustain level clipping (result of excessive values too 390 nasty to let go. 3912003-02-18 : src/Makefile.am: 392 Removed $BUILT_SOURCES things and replaced with some 393 new rules for building oscillators with the generated 394 headers. This was to get rid of annoying side-effects 395 of the BUILT_SOURCES and dependencies. 396 Makefile.am: 397 Removed dist-hook rule - above changes sorted this 398 problem out. 399 Added extraneous files to maintainer-clean 4002003-02-18 : src/include/float_cast.h, 401 acinclude.m4: 402 Files added - Erik de Castro Lopo's float cast 403 code for C99 lrintf detection and use 404 src/include/common.h, 405 src/include/interpolate.h, 406 src/include/lp4pole_filter.h, 407 src/include/wavedata.h, 408 src/include/wdatutil.h, 409 src/pulse_1645.so.c, 410 src/sawtooth_1641.so.c, 411 src/square_1643.so.c, 412 src/triangle_1649.so.c, 413 src/wavedata.c: 414 Some header shuffling to get float cast stuff 415 to work right. 4162003-02-05 : src/sequencer16_1677.so.c, 417 src/sequencer32_1676.so.c, 418 src/sequencer64_1675.so.c: 419 Files replaced by single common source file compiled 420 with different defines to make maintenance easier 421 src/sequencer.so.c: 422 New common source file for sequencers 423 src/Makefile.am: 424 Fiddling to get three sequencers built from single source 4252003-02-04 : src/sequencer16_1677.so.c, 426 src/sequencer32_1676.so.c, 427 src/sequencer64_1675.so.c: 428 Fixed declarations-after-statements bug that 429 broke build on older compilers. 4302003-02-02 : doc/blop.rdf: 431 Output port info added 4322003-02-01 : src/fmod_1656.so.c, 433 src/pulse_1645.so.c, 434 src/random_1661.so.c, 435 src/sequencer16_1677.so.c, 436 src/sequencer32_1676.so.c, 437 src/sequencer64_1675.so.c, 438 src/sync_square_1678.so.c, 439 src/triangle_1649.so.c: 440 Names changed in source 441 doc/plugins_list.txt: 442 Updated to reflect name changes 443 doc/blop.rdf: 444 Added title, creator and rights information 4452003-01-29 : Fixed sequencer plugins - now have option of resetting 446 to fixed value or keeping the last value output when 447 the gate is closed. 448 Added blop.rdf 449 Made --enable-small-wavedata create smaller tables. Still 450 good quality output... 4512003-01-26 : Added defaults for some of the plugins 4522003-01-25 : configure.in 453 Added option to generate smaller wavetable data 454 [--enable-small-wavedata] 455 src/include/lp4pole_filter.h 456 Made lp4pole tuning independent of sample rate 457 src/include/lut_144log2.h, 458 src/include/lut_tanh.h, 459 src/tuned_lp4pole_1679.so.c 460 Removed this filter - it's actually worse tuning 461 wise than the regular one! 4622003-01-24 : Slight performance increase for lp4pole filter by 463 storing state in a struct. 464 src/include/lp4pole_filter.h, 465 src/lp4pole_filter.c 466 Contains code to setup and run filter instance 467 src/lp4pole_1671.so.c 468 Plugin instance data removed - now in above filter 469 code. Calls added to run filter using new code. 4702003-01-23 : Improved performance of oscillators (16-89% faster!) 471 src/include/interpolate.h 472 Moved wavetable stuff to src/include/wavedata.h 473 src/include/wavedata.h, 474 src/wavedata.c 475 Extra member data to hold playback state of 476 oscillator. 477 src/pulse_1645.so.c, 478 src/sawtooth_1641.so.c, 479 src/square_1643.so.c, 480 src/triangle_1649.so.c 481 Removed instance data, now held in wavedata 482 instance. Simplified running of oscillator. 483 src/Makefile.am 484 Some minor dependency changes. 4852003-01-15 : Argh! Just about to release 0.2.6, and I find nasty bugs, 486 and slowness... 487 Restored original (0.2.5) low pass filter, and created new 488 pair of plugins for the tuned one, as it is much more 489 cpu-intensive (about 4x!) 4902002-12-23 : Some further modifications to wavetable business for the 491 oscillators. With the exception of the (very short) 492 one for phase wrapping, all code runs without any 493 branches. 494 src/include/wavedata.h, 495 src/include/interpolate.h, 496 src/pulse_1645.so.c, 497 src/sawtooth_1641.so.c, 498 src/square_1643.so.c, 499 src/triangle_1649.so.c, 500 src/wavedata.c: 501 Reworked code to remove branches. 502 src/include/wdatutil.h, 503 src/wavedata.c, 504 src/wavegen.c, 505 src/wdatutil.c 506 Removed lowest_harmonic things - not needed. 5072002-12-19 : Major changes to the oscillators' wavetable playback 508 as I clearly hadn't thought it through - the cross-fade 509 of extra harmonics was causing discontinuities due 510 to the gibbs compensation not matching. This has 511 now been fixed, and the output is much improved. 512 src/include/wavedata.h, 513 src/include/wdatutil.h, 514 src/wavedata.h, 515 src/wavegen.c, 516 src/wdatutil.c: 517 Changes to wavetable pair data to allow for 518 differing gibbs compensation. Some other minor 519 bug fixes. 520 src/include/interpolate.h: 521 Changes to getSamples to cross fade pairs of 522 tables instead of simply fading in extra harmonics. 523 Also removed some branching from the table lookup. 524 src/pulse_1645.so.c, 525 src/sawtooth_1641.so.c, 526 src/square_1643.so.c, 527 src/triangle_1649.so.c: 528 Removed some branching from code. 5292002-12-17 : Further work on lowpass filter to eliminate some 530 instabilities (runaway values resulting in 531 noise/NaN). 532 src/include/l2table.h: 533 renamed to lut_144log2.h 534 src/include/lut_tanh.h: 535 added 536 src/Makefile.am: 537 modified dependencies 538 src/lp4pole.so.c: 539 tuned and smooth clipped 540 541 Dist rule: make dist was keeping the CVS directory 542 under src/include in the dist. Now fixed: 543 src/include/Makefile.am: 544 Added and specified headers etc. 545 src/Makefile.am: 546 Adjusted to make include a subdir 547 configure.in: 548 Added src/include/Makefile create 5492002-12-10 : Tuned lowpass filter 550 Added log 2 based table lookup 551 src/include/l2table.h 552 src/Makefile.am 553 src/lp4pole_1671.so.c 5542002-11-24 : Added analogue sequencer and sync oscillator 555 Modified wavegen to allow note skip (allows smaller 556 wavedata - e.g. to fit in cpu cache) 557 Some minor bugfixes and updates 5582002-11-09 : configure.in: 559 Removed -march flags from CFLAGS, as was causing 560 problems on some architectures 5612002-11-02 : (After a looooooonnnnnnggg period of inactivity) 562 I added a branch plugin. Woohoo... 5632002-09-24 : configure.in: 564 Added check for getopts 5652002-08-12 : Changed plugin names to show port types. 566 <grr> 567 Much that I am loathe to duplicate information, 568 most modular synths don't show other info, and 569 rely on names being unique 570 </grr> 5712002-07-15 : Fixed NaN output bug in lowpass filter - clamped 572 resonance to [0.0, 4.0]. I know it's in the range 573 hints, but plugging an LFO into it (for example) 574 *can* cause the bounds to be exceeded. 5752002-07-14 : Added low pass resonant filter plugin 5762002-07-10 : blop_ prefix removed from plugins - this can be done 577 at configure time using --program-prefix=FOO 5782002-07-10 : Okay. Some compromises made so automake will be nice 579 to me... 580 src/wavegen.c, 581 src/wdatutil.c: 582 Moved to parent 583 src/wavegen: 584 Removed 585 Makefile.am, 586 configure.in, 587 src/Makefile.am: 588 Some finagling to differentiate a plugin build 589 from a regular program build. 590 More fudgin to get 'make dist' to work. 5912002-07-09 : Argh - except the result of make dist just plain 592 does not work (seems to ignore building of 593 data headers first.) 5942002-07-08 : Tested all new plugins and new build system 595 - all A-OK! 5962002-07-06 : Complete revision of directory structure: 597 598 doc/Makefile.am 599 doc/about.txt 600 doc/plugins_list.txt 601 src/include/common.h 602 src/include/interpolate.h 603 src/include/wavedata.h 604 src/include/wdatutil.h 605 src/wavegen/Makefile.am 606 src/wavegen/wavegen.c 607 src/wavegen/wdatutil.c 608 src/Makefile.am 609 src/blop_adsr.so.c 610 src/blop_amp.so.c 611 src/blop_fmod.so.c 612 src/blop_interpolator.so.c 613 src/blop_product.so.c 614 src/blop_pulse.so.c 615 src/blop_random.so.c 616 src/blop_sawtooth.so.c 617 src/blop_square.so.c 618 src/blop_sum.so.c 619 src/blop_triangle.so.c 620 src/wavedata.c 621 AUTHORS 622 COPYING 623 ChangeLog 624 INSTALL 625 Makefile.am 626 NEWS 627 README 628 THANKS 629 TODO 630 config.h.in 631 configure.in 632 stamp-h.in 633------------------------------------------------------------------------------- 6342002-06-19 : adsr.so.c: 635 New files - an adsr envelope generator and a 636 control-to-audio interpolator. 6372002-06-18 : random.so.c: 638 New file - generates a random wave of varying 639 smoothness - sorta like random noise thru a 640 filter. 6412002-06-17 : amp.so.c, 642 fmod.so.c, 643 lmod.so.c: 644 New files added - these are additional plugins to 645 complement the oscillators. They are not released 646 yet. Also planning to add an ADSR, a Control-to-Audio 647 interpolator and a Randomizer (sort of sample-and-hold, 648 but not). All these scheduled for release 0.3. 6492002-06-16 : pulse.so.c, 650 sawtooth.so.c, 651 square.so.c, 652 triangle.so.c: 653 Modified my email address, replaced '@' with '[at]', 654 cos I've been getting spam! (ARGH!) 6552002-06-14 : pulse.so.c, 656 sawtooth.so.c, 657 square.so.c, 658 triangle.so.c: 659 Modified to only advance the phase (position) for 660 frequencies below Nyquist (this is to prevent the phase 661 from drifting too high - this can happen for very large 662 frequencies, and causes instability) 6632002-06-09 : Makefile: 664 Added GIBBS variable to allow setting of Gibbs 665 compnesation argument to wavegen. 666 include/wdatutil.h, 667 wavegen.c, 668 wdatutil.h: 669 Improved Gibbs compensation - can now set degree of 670 compensation, from none to maximum. Maximum will now 671 almost completely eliminate overshoot, and the resulting 672 waveform is pretty much normalised to [-1,1] as a result! 6732002-06-08 : wdatutil.h: 674 Gibbs compensated parabola generation was skipping the 675 even harmonics - fixed. 676 Makefile: 677 Modified wavedata header rules to use prefix, following 678 addition of prefix option to wavegen. 679 wavedata.h: 680 Moved the extraction of wavedata header data to top of 681 function for clarity. 682 wavegen.c, 683 wdatutil.c: 684 Some other changes to the format of the wavedata header 685 file output by wavegen - now allows specification of 686 unique prefix for declarations - this is so more than 687 one such header may be included in code. 688 include/wdatutil.h, 689 wavegen.c, 690 wdatutil.c: 691 Alterations to fix wave generation for square and 692 parabola waves - base and extra harmonics now 693 generated with respect to actual harmonic content 694 (both square and parabola only contain odd harmonics). 695 Previously, some of the extra samples were ending up 696 zeroed because they were just a single even harmonic. 6972002-06-07 : README: 698 A bit more text about bandlimiting methods. 699 include/interpolate.h, 700 include/wavedata.h, 701 wavedata.c: 702 Revised to work with the new wavedata file contents. 703 include/wdatutil.h, 704 wavegen.c, 705 wdatutil.c: 706 Finalised changes to wavedata file format and content. 707 Now each wavetable has two sets of data as before, but 708 one set contains harmonics that would be played at 709 all pitches in range, and the other contains the 'extra' 710 higher harmonics that are faded in as pitch decreases. 7112002-06-06 : include/wdatutil.h, 712 wavegen.c, 713 wdatutil.c: 714 Change to the format of the intermediate data before 715 it is written to the header file. More structured 716 representation, instead of lots of huge allocated 717 memory (which would not necessarily be contiguous, 718 and if not, the code would fail). 719 Work on new method for cross fading wavetables of 720 differing harmonics. 7212002-06-05 : include/interpolate.h: 722 Further investigation into the abberation in the 723 triangle wave. The likely cause was the two parabola 724 waves were not being queried in sync - resulting in 725 the wrong sample being retrieved in some cases. 7262002-06-04 : include/interpolate.h: 727 The triangle plugin was putting out NaNs for very 728 small slopes (where the output approaches a sawtooth 729 wave) - further investigation revealed that there 730 was an aberration at the cross-over point (where 731 the amplitude crosses zero). 732 Some work on the getSamples function seemed to 733 remove the problem. 7342002-06-02 : TODO: 735 Removed notes about optimisation: avltree lookup 736 is only faster because special cases were not 737 being handled - these must stay. 738 Restraints on pulsewidth/slope settings caused 739 quite nasty artifacts, so the double interpolation 740 in pulse and traingle plugins has to stay. 741 include/interpolate.h, 742 wavedata.c, 743 wavegen.c, 744 wdatutil.c: 745 Minor changes and some more comments 746 pulse.so.c: 747 Pulsewidth now clamped to [0.0,1.0] 748 triangle.so.c: 749 Slope clamped to [min, max] (dependent on 750 sample rate) 7512002-06-01 : include/interpolate.h, 752 wdatutil.c, 753 wavegen.c, 754 wavedata.c: 755 Modified wavetables to have an extra 3 samples 756 per table - this allows interpolation to be done 757 without too much bounds checking on sample index. 758 A small speed increase results! 759 wdatutil.c: 760 Parabola wave generation was using the wrong 761 scale factor, resulting in the triangle plugin 762 having huge amplitudes compared to the rest. 763 This has been fixed. 7642002-05-31 : include/wdatutil.h, 765 wavegen.c, 766 wdatutil.c: 767 More farting about with the format. Now only 768 generates wavetables that will be cross faded 769 upon playback (rather than filling the last 770 one with zeroes) 771 include/wavedata.h, 772 wavedata.c: 773 Some slight changes to add the three 'special 774 case' wavetables that are played at the extreme 775 frequencies 776 include/interpolate.h: 777 Finalised getTable - now it *does* return, and 778 it returns that wavetable to play. Some changes 779 to accommodate the special case wavetables. 780 getSamples now incorporates the new special cases, 781 and the cross fade. But it could do with improvement. 782 getXFadeScale is no more. 783 pulse.so.c, 784 sawtooth.so.c, 785 square.so.c, 786 triangle.so.c: 787 Updated to use new interpolate.h functions. Some 788 declarations added for getSamples (rather than 789 having these variables declared every sample, which 790 consumes a measurable amount of CPU) 7912002-05-30 : include/interpolate.h 792 Changed getTable from returning true/false to 793 void - no need for this anymore, as cross fade 794 testing will be done in getSamples. 795 pulse.so.c, 796 sawtooth.so.c, 797 square.so.c, 798 triangle.so.c: 799 Removed table_found check - getTable no longer 800 returns. 8012002-05-29 : include/interpolate.h, 802 include/wavedata.h, 803 pulse.so.c, 804 sawtooth.so.c, 805 square.so.c, 806 triangle.so.c, 807 wavedata.c: 808 Modified to use new wavetable pairs for cross fading. 809 Most of the crap is now in interpolate.h::getSamples. 8102002-05-28 : include/wdatutil.h, 811 wavegen.c, 812 wdatutil.c: 813 Modified to generate wavetable 'pairs' for cross 814 fading between successive wavetables. This will 815 allow sample retrieval for cross-faded wavetables 816 to use only one interpolation op (as opposed to two) 8172002-05-26 : TODO 818 Notes about optimisation - namely, too many interpolates! 819 include/interpolate.h, 820 pulse.so.c, 821 sawtooth.so.c, 822 square.so.c, 823 triangle.so.c 824 Separated out sample extraction from interpolation 825 code. getSamples get's four samples and returns 826 the interval. INTERPOLATE function (now a #define) 827 actually does the interpolation. 8282002-05-24 : include/interpolate.h 829 Experiments with cubic vs. 5th order spline resulted in 830 the cubic spline being the winner (as it's faster, and 831 is a fly's hair's whisker away from the 5th order...) 8322002-05-23 : include/avltree.h, 833 avltree.c: 834 Removed these two files following confirmation 835 that new lookup vector works properly. 836 Makefile: 837 Removed avltree dependencies. 8382002-05-22 : pulse.so.c, 839 sawtooth.so.c, 840 square.so.c, 841 triangle.so.c: 842 Implemented new table lookup based on simple vector 843 instead of binary tree. 844 include/wavedata.h, 845 include/wdatutil.h, 846 wavedata.c, 847 wdatutil.c, 848 wavegen.c: 849 Modifications to replace tree lookup with new vector 850 lookup (indexed on max harmonic number) 8512002-05-20 : pulse.so.c, 852 sawtooth.so.c, 853 square.so.c, 854 triangle.so.c: 855 Moved table lookup to separate (inlined) function 8562002-05-15 : pulse.so.c, 857 sawtooth.so.c, 858 square.so.c, 859 triangle.so.c: 860 Cubic spline interpolation (no, it's a 5th order. Silly 861 old me didn't have a clue...) 862 8632002-05-14 : INSTALL: 864 Minor clarifications. 865 AUTHORS: 866 Added some acknowledgements :) 867 include/wavedata.h, 868 include/wdatutil.h, 869 wavedata.c, 870 wavegen.c, 871 wdatutil.c: 872 Changed wavedata file to pass maximum harmonics instead 873 of min and max frequencies. Wavedata sample rate is now 874 independent of sample rate used in plugins (as it should 875 be). 876 include/avltree.h, 877 include/wavedata.h, 878 include/wdatutil.h, 879 pulse.so.c, 880 sawtooth.so.c, 881 square.so.c, 882 triangle.so.c, 883 wavedata.c, 884 wavegen.c, 885 wdatutil.c: 886 Changed data types from float to LADSPA_Data for consistency 887 Some tidying up. 888 8892002-05-12 : Initial code put together 890