Commit graph

676 commits

Author SHA1 Message Date
Randy Heit
0380ba642b Blur de hur 2015-04-26 20:43:01 -05:00
Christoph Oelckers
aecff68a4d - cleanup of sound system startup and menu handling:
* added global functions that check whether FMod and OpenAL are present, without initializing the sound backend.
* make sound init code more fault tolerant. It will now try to switch between FMod and OpenAL if the currently active one cannot be found but the other one can.
* added 'ifoption' checks for sound backend to menu code.
* only show sound backends which are present and hide the options for the ones which are not.
2015-04-26 12:13:21 +02:00
Christoph Oelckers
8e70a9b894 - added a NULL check to FMODStreamCapsule destructor, just to be safe. 2015-04-26 09:58:10 +02:00
Christoph Oelckers
6bb79be85c - got rid of std::auto_ptr, courtesy of Blzut3's patch. 2015-04-25 17:50:57 +02:00
Christoph Oelckers
d880783784 - make OpenAL and the decoder libraries delay loaded so that ZDoom can still start without them being present.
This required the addition of a few exception handlers so to avoid #ifdef overuse I also added some #defines for non-Windows systems that allow using __try and __except directly in the code without #ifdef'ing them out.
2015-04-25 12:25:10 +02:00
Christoph Oelckers
12118550d2 - fixed some warnings in OpenAL code. 2015-04-25 10:34:47 +02:00
Christoph Oelckers
dccd35ef29 - uncoupled OpenAL music updates from UpdateSounds.
UpdateSounds will not be called during screen wipes and the entire setup of this function suggests that this is not advisable at all.
The OpenAL stream updates were done deep inside this function implicitly.
This caused music to stop while a wipe was in progress. So in order to allow uninterrupted music playback during screen wipes the music updates need to be handled separately from sound updates and be called both in the main loop and the wipe loop.

I think that the OpenAL music updating should be offloaded to a separate thread but at least it's working now without causing interruptions during wipes.
2015-04-25 10:26:14 +02:00
Christoph Oelckers
c91745c714 - some fixes to make OpenAL branch compile with VC++ 2013 and OpenAL support. 2015-04-24 17:42:56 +02:00
Christoph Oelckers
1f2a431d15 Merge branch 'master' into openal 2015-04-24 09:21:06 +02:00
Randy Heit
a7ff9478a7 Fixed: S_PrecacheLevel() could create orphan channels
- S_PrecacheLevel() must also mark currently playing sounds as
  used. If we don't, the sound could be unloaded and the underlying
  channel stopped without triggering a channel callback. That would leave
  the code in s_sound.cpp thinking the sound is still playing even though
  it isn't.
- Added an invalid channel check to FMODSoundRenderer::StopChannel() so
  that orphan channels passed to it will be returned at least when
  S_StopAllChannels() is called.
2015-04-22 20:33:08 -05:00
Randy Heit
7ee1853403 Remove OpenAL and Sound Manager output options for FMOD
- OpenAL never actualy worked properly and was removed in later FMODs.
- Sound Manager was deprecated by Apple long ago and is not supported for
  64-bit applications. It was also removed in later FMODs.
2015-04-22 19:09:33 -05:00
Randy Heit
dba76c1aea Disable PCM-8 output when not using DirectSound
- PCM-8 sounds like garbage with WASAPI and WaveOut, so force anything not
  DirectSound to use PCM-16 if PCM-8 is selected.
2015-04-22 18:32:45 -05:00
Christoph Oelckers
0a1d1db0ba - fixed missing #incöudes of version.h for GAMENAME. 2015-04-11 17:40:26 +02:00
Edoardo Prezioso
0c5d55d0a3 - More GAMENAME replacements in strings.
These changes will change only some displayed messages.
2015-04-09 21:16:59 +02:00
Christoph Oelckers
c249157876 Merge branch 'master' into openal 2015-03-24 17:59:08 +01:00
Randy Heit
6d0679cbd9 Clean up some int32/long confusion 2015-03-08 16:35:49 -05:00
Randy Heit
cd38e5e6be Big DUMB update
Squashed commit of the following:

commit f961d7764ccab2dbed8166706896b4b3750e5ab9
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 23:09:24 2015 -0600

    Was missing some files from the dumb_static project

commit fb6b709c903687015fe775cac5ea1146dfd47051
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 22:59:38 2015 -0600

    Update CMakeLists.txt for new DUMB

commit 8201b9aee8cc6e8d7fb7043a0e7062e26b9891b1
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 22:32:44 2015 -0600

    Change the default DUMB quality to cubic

commit 0bd9e1858642dd03cf9633ac1fd69e0e54c67c06
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 22:30:17 2015 -0600

    Update mod_volramp for new DUMB volume ramping settings

commit 622a67044e3a0aea560e397622b3c6138a8a8cb9
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 22:14:04 2015 -0600

    Add new DUMB quality levels to the menu

commit b23a3862b9fba672d2c966d8eebcab7ade951498
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 21:50:03 2015 -0600

    Speed up resamplers by removing lots of implicit function calls

commit 9b884676b9c6afbc4bbe889e7e33a10cffa0e90c
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 21:49:57 2015 -0600

    Remove direct access to the FP aliasing mixer

    The original integer one is faster, and using floats gains nothing here,
    so don't bother offering it.

commit 8f9fc8d3317f0db3480577b2c92963dc88f609d0
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Sat Mar 7 20:14:34 2015 -0600

    Use unsigned phase counters in the resampler

    - delta should always be positive

commit d1228954405bbcd036de66e9bcbe443657cfc590
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Fri Mar 6 23:09:14 2015 -0600

    Restore DUMB's original resamplers

    - The all-in-one resamplers in resampler.c have more overhead than the
      originals, so bring them back. Specifically, the aliasing, linear, and
      cubic resamplers have been restored to their previous form. Also, this
      is the original aliasing filter and not the blip_buf one. The
      resampler.c resamplers are still accessible but at different quality numbers.

commit 730e5d98a0c127b9177e5364752d47a82416a0e4
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Fri Mar 6 22:00:06 2015 -0600

    Convert phase back to integers

    - Having to call functions to convert to integer and chop off the
      non-decimal part of the phase for every sample is super heavyweight.

commit a6325a54e77d2c523f3637c963a41314287b1b0f
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Fri Mar 6 20:16:29 2015 -0600

    Remove fir_resampler files

    - What are these still doing here?

commit 7f3ebf9b7fa9c9ba9e579b081a263f0e7f949da5
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Fri Mar 6 20:01:53 2015 -0600

    Try to eek out some more performance from new resamplers

    - Change some floats to doubles to avoid extra conversions.
    - Use modf() instead of fmod(), since it seems at least marginally faster.

commit 87047ef20068ee394a3132f173bf12ead8aae8b2
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Fri Mar 6 19:19:09 2015 -0600

    Add DUMBCALLBACK to filesystem functions in music_dumb.cpp

commit 36a39ead8109660e1c6054ab91799a765b1ca219
Merge: 92473a0 68d6ef8
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Thu Mar 5 21:48:17 2015 -0600

    Merge branch 'dumb_branch' into newdumb2

    Conflicts:
    	dumb/include/dumb.h
    	dumb/src/core/dumbfile.c
    	dumb/src/helpers/blip_buf.c
    	dumb/src/helpers/fir_resampler.c
    	dumb/src/helpers/resamp3.inc
    	dumb/src/helpers/resample.inc
    	dumb/src/it/itread.c
    	dumb/src/it/itrender.c
    	dumb/src/it/loadmod.c
    	dumb/src/it/loadmod2.c
    	dumb/src/it/readam.c
    	dumb/src/it/readdsmf.c
    	dumb/src/it/readmod.c
    	dumb/src/it/readmod2.c
    	dumb/src/it/readokt.c
    	dumb/src/it/readpsm.c
    	dumb/src/it/readptm.c
    	dumb/src/it/readstm.c

commit 92473a05517ba36c632236f08a36d4b1870e526a
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Thu Mar 5 15:08:15 2015 -0600

    Add seek and get_size functions to mem_dfs

commit 7635e05007df7415d07cc202c2f082424687a0c4
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Thu Mar 5 14:17:25 2015 -0600

    Restore ZDoom customizations to DUMB

commit cfdb14c4bbb43410a1549e45f54be1e5872759ae
Merge: fe3c5bd f900c65
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Thu Mar 5 19:00:05 2015 -0600

    Merge commit 'f900c65e79c089755013d84cf7f8' into newdumb2

commit fe3c5bdf270c2b1ab65cd8e96bfc16bc88025ae6
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Thu Mar 5 18:59:41 2015 -0600

    Remove old DUMB to make way for new DUMB

commit 68d6ef8731e2499bd99790c40cf0dcd179c9903b
Merge: f900c65 2424469
Author: Randy Heit <rheit@users.noreply.github.com>
Date:   Thu Mar 5 14:19:19 2015 -0600

    Merge remote-tracking branch 'dumb_remote/master' into dumb_branch

commit f900c65e79c089755013d84cf7f856da78c0bc39
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Jun 20 22:27:52 2013 -0700

    Fixed C++11 compilation error on Mac OS X

commit 24244696518e81dccac26d13e0acfdaeec56b79e
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Feb 10 00:07:32 2015 -0800

    Revert default resampling quality to cubic, as it's a nice trade-off between speed and quality

commit 766a20f4816f5d08275a430ed68d788aefb23e5b
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 16 20:52:57 2015 -0800

    Fixed compilation with -fPIC on x86 and x64

commit 1f2c97ef13d66e4787ea1da86a75c6ab7d3b66a7
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 12 02:01:36 2015 -0800

    Fixed non-SIMD blep and blam handlers

commit 7f3dd7ed3c97b1f0030ac24753ab248a8d8374b4
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 12 01:25:45 2015 -0800

    Sanity fix for ARM NEON code: vmlaq always adds onto the first input parameter

commit 189c55a1eb5902b09579efb79ed9a5b0f960b6c0
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 12 00:03:36 2015 -0800

    Typo fix that I only caught by trying to build for ARM

commit 85297714b9f89914a04c39c340a2433a20925f2c
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jan 11 17:18:53 2015 -0800

    Fixed a bug with resampler not clearing blep/blam state variables

commit a39b4d41f63ed34754bcfe94e1638ab2fe9ecb71
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jan 10 22:15:47 2015 -0800

    Added a way to configure the load-time panning separation of hard panned channels, now defaulting to 25%

commit 80e1e1a33c3b1b64012ef24a6537176ea0cc7fd0
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jan 10 21:50:15 2015 -0800

    Overhauled resampler quite a bit, and implmented a new band-limited linear interpolation mode

commit 8ea3282ceaf9e2915d60310fc74fed6951e2b754
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Jan 6 22:44:59 2015 -0800

    Fixed STM trying to seek and read non-existing samples

commit f3d6e8f9b1718b1ec1791c49150a0e140ea83911
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Nov 23 00:46:57 2014 -0800

    Revert to MSVC 2013

commit a2e6f8de924377007fdd014945e0ce74e44dac78
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Nov 20 21:38:31 2014 -0800

    Updated project file to MSVC 2015

commit 7ee625748304ef158460633439c153724171eb3e
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Sep 28 17:48:43 2014 -0700

    Updated bit array source and enabled decoration on both bit array and resampler functions

commit 97ef9342913d3ea48e8682bf80a3154631fd481d
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Aug 15 06:10:31 2014 -0700

    Fix for MSVC 2013, which now provides its own log2

commit 2069bbc7ae0aa2b395b844f3085db5b3b989d8fc
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Aug 15 05:46:02 2014 -0700

    Updated project for MSVC 2013

commit c7f726980b257e127cb0fc788674cc5958005588
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jul 2 12:24:31 2014 -0700

    Fixed dead note dropping when volume ramping is active

commit c08c5988a0f2106660dd61734d91541a0d894e49
Merge: 2c21da5 3b31096
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed May 21 22:53:31 2014 -0700

    Merge pull request #10 from realistschuckle/master

    Move the block for adding the Mac OS X specific properties to after the registration of the library

commit 3b310960c80638e07863de76db5bfdf828577491
Author: Curtis Schlak <realistschuckle@gmail.com>
Date:   Thu May 22 00:44:09 2014 -0500

    Move the block for adding the Mac OS X specific properties to after the registration of the library.

commit 2c21da52cbd096f3d7409b58b47d8cddcad6b84b
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun May 11 17:29:13 2014 -0700

    Increased precision of resampler phase variable, greatly reducing the incidence of sample rate rounding errors

commit 9aa0dc277e1360b918aa62f87c92841f25f141ab
Merge: 47337ba 143ac6b
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed May 7 21:09:09 2014 -0700

    Merge pull request #9 from Vagabond/adt-valgrind-uninitialized-memory

    Fix 2 places valgrind warns about unintialized memory being used

commit 143ac6b1311c738587defa65016358fa71be0e31
Author: Andrew Thompson <andrew@hijacked.us>
Date:   Thu May 8 00:02:39 2014 -0400

    Fix 2 places valgrind warns about unintialized memory being used

commit 47337ba425c79771a522050f85d17db804619ac7
Merge: 5b36c39 57614d0
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 18 16:38:36 2014 -0700

    Merge pull request #8 from katajakasa/ttv-cmake-header-path

    Change dumb.h install subdirectory in cmake script

commit 57614d0c3f4e160d73676f422e1ba282cc135bbf
Author: Tuomas Virtanen <katajakasa@gmail.com>
Date:   Sat Apr 19 02:16:48 2014 +0300

    Change dumb.h install subdirectory in cmake script

commit 5b36c39238d02c7f1fa8df791ae54935830300ca
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 11 16:34:13 2014 -0700

    Adjusted tempo timing a bit, now rounding samples per tick down instead of up

commit 7a0d05c002c7ced72ceba489fc603b10b6d72d2b
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Apr 8 15:15:29 2014 -0700

    Updated license from the original project with clause 8

commit 8c6f27a159f53fbf7a622dfd3ac59bb1df23d206
Merge: 6cb73ee 5ed52e6
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Apr 8 15:10:19 2014 -0700

    Merge pull request #6 from Vagabond/adt-unix-debug

    Don't include the MSVC debug header if we aren't using MSVC

commit 5ed52e609b8fc32e00cb46330a0c08d5f01a0ea5
Author: Andrew Thompson <andrew@hijacked.us>
Date:   Tue Apr 8 13:10:54 2014 -0400

    Don't include the MSVC debug header if we aren't using MSVC

commit 6cb73ee3430f7ba10376286a06f28eeb2ed598a2
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 4 21:45:39 2014 -0700

    Attempt to fix issue #5 with compiling cpuid inline assembly on any platform using PIC

commit 651e5235b72883f8480bb8138fad01bb168c16f4
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 4 20:25:43 2014 -0700

    Updated sinc resampler with unscaled windowing, which fixes a lot of the previous aliasing

commit 9e2c91079ddbbc3d968f17e78b734d529af2afcd
Merge: 07c545a 98e7d70
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 4 19:46:41 2014 -0700

    Merge pull request #4 from katajakasa/ttv-cmake-improvements

    CMake readme+improvements

commit 07c545a6b7437f30c2864892a1709efcb50b521b
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 4 17:14:38 2014 -0700

    MSVC fix again

commit 84ac89922d6fed2d363254965111a0c3222811f1
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 4 16:50:51 2014 -0700

    Resampler now adds input delay and subtracts output delay according to whichever quality is selected, rather than being fixed for sinc only. This fixes blep synthesis mode defeating note on and off volume ramping.

commit 98e7d70de745097165e1ea40ded2d3d7e16699b4
Author: Tuomas Virtanen <katajakasa@gmail.com>
Date:   Fri Apr 4 16:08:13 2014 +0300

    Add readme file for cmake building.

    This adds a simple readme file for building the cmake project.
    It includes the most common flags and quick build/install commands.

commit 33bc39397f3bef48d5c1c688bfec929db653c9d5
Author: Tuomas Virtanen <katajakasa@gmail.com>
Date:   Fri Apr 4 16:05:43 2014 +0300

    CMake improvements and cleanups

    Add missing "-msse" flag, clean up old BUILD_SHARED flags (cmake has its own
    system for doing this) and add a couple more build targets.

commit fa1413c69747f35c396fce8bbd8d2fba005bb11e
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Mar 28 17:50:30 2014 -0700

    Changed volume ramping so normal transitions to or from zero volume are quicker

commit 58556af70c7d3ad68657cbda7ff3d4d74aefb70e
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Mar 26 20:58:26 2014 -0700

    Removed blip_buf.c from remaining projects

commit 74390bd111b0496a25967cd1418e6f7ec0a4a868
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Mar 26 20:51:43 2014 -0700

    Implemented blep synthesis into resampler.c, and removed blip_buf.c and code which referenced the old resamplers

commit cb8ab8c6f6ddef8a0938f771e3fad9d0ca6b2735
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Mar 26 02:12:33 2014 -0700

    Derp

commit 56093a31621a65b1f9aae21fbb34cf62e7918a15
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Mar 26 02:04:50 2014 -0700

    Another meh fix

commit 23f4dc1b6d64df60fea10eae1d6bf0a88c6d9c0c
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Mar 26 01:40:41 2014 -0700

    Oops, I somehow seriously broke volume ramping prior to the previous release

commit 3bcbb6a94a73e0d782e63055a20e7d90860a8b70
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Mar 25 20:19:21 2014 -0700

    Made disabling volume ramping actually work correctly

commit 4fcf162e992167d875978ce829f4d8347b1297f4
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Mar 25 20:04:09 2014 -0700

    Forgot to re-add missing function

commit dfdf86be5e69122bb1ed4aa34cb6ecc6a7158672
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Mar 25 20:01:37 2014 -0700

    Oops, typo

commit 477011d74059eac39f530737ad73b98da24085f1
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Mar 25 19:50:19 2014 -0700

    Made volume ramping configurable once again, now configurable between note on/off declicking only or full ramping

commit 52a88bedf98d7582e1efda99782534dab0d3f089
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Mar 24 18:07:52 2014 -0700

    Oops, accidentally made DUMB twice as loud as it should be

commit c052e6a45599edc6401e3c3b4513d903f6917e92
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Mar 24 17:24:51 2014 -0700

    Fixed resampler for large increments; fixes spx-troughtheinfinite.it

commit 243233d3977da6693aeb131dce03c03cd74ead75
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Mar 24 17:23:44 2014 -0700

    Reworked volume ramping a bit

commit a15a906131e89bc8b7fb43dc0c54f704f743d7df
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Mar 23 20:58:27 2014 -0700

    Changed sinc window to Nuttal 3 term, and added pre-fill of silence to account for half the window size minus one

commit 3e3c7e15806ba01fc6a680def36ee0df4a3bc6da
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Mar 23 20:58:03 2014 -0700

    Removed a stale file from project

commit 3aaf281a82702411ba77067784afb6ba936f8a46
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Mar 23 13:24:54 2014 -0700

    Forgot to remove last vestiges of now unused linear and cubic code

commit ee94f03e1d576e6879122dc992f01f2df0b0078c
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Mar 23 13:05:08 2014 -0700

    Oops wrong header

commit e1e2edd45fe09a616b336f4e59fcff069da6af4e
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Mar 23 01:30:23 2014 -0700

    Oops

commit 6937b61cc57d839278f6ee73bc9471eaa07c7f87
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Mar 23 01:28:04 2014 -0700

    Replaced built-in linear and cubic resamplers with new routines

commit a8d9baafc008bc851bce7b0aef799b74b9732a76
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Mar 22 16:29:27 2014 -0700

    Renamed lanczos_resampler to sinc_resampler, changed to Blackman window

commit 0d21e1317cb204c4975cb98f7ab3ca5685aca910
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Mar 21 16:15:28 2014 -0700

    Remove comments which are no longer correct

commit a2f7fccb2b2cd6b504990b09f784d74b3bb9e8bd
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Mar 21 15:55:46 2014 -0700

    Optimized SSE with optional SSE convolving loop, and doubled the kernel size

commit f7e4d06555e314a0b831d8a44a802043d16df69e
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Mar 21 07:06:51 2014 -0700

    Overhauled volume ramping and note start/end declicking, now volume ramping is mandatory

commit 02b855c989a02ddf757cf87110857cf376b879e4
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Mar 20 22:26:06 2014 -0700

    Work around two possible issues in XM reader; Fixes dark_lighthouse.xm.

commit b661a11b09185a8e8b8a2c4a5c64021cc928ef12
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Mar 4 17:11:22 2014 -0800

    Fixed offset effect limiting edge case due to samples being 64 points longer due to LPC processing

commit 7e4d1331dee5772d6eb91073ac68f18b1bd4a55d
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Feb 28 17:51:32 2014 -0800

    Revert last change as file was actually broken

commit 70c9d7e03ed210010c88acb2024c94fc60d74cdc
Merge: 3ec1cc5 b068221
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Feb 28 17:06:13 2014 -0800

    Merge branch 'master' of github.com:kode54/dumb

commit 3ec1cc5db70c2f782b9e4b1f199bfb04ceae8718
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Feb 28 17:05:33 2014 -0800

    Added a workaround for pattern 255 in the order list

commit b0682214bba89f1a6386ed891495a53f74bb67d9
Merge: 3a25c20 3a9b6c7
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 13 23:54:15 2014 -0800

    Merge pull request #3 from Vagabond/adt-cmake-install-name

    Set the dylib install name on OSX

commit 3a9b6c7cb585c6b1328a97a8befe2f979a1b009d
Author: Andrew Thompson <andrew@hijacked.us>
Date:   Tue Jan 14 02:54:22 2014 -0500

    Set the dylib install name on OSX

commit 3a25c206f5610e2626926be036b1ffaa8afab5ef
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Dec 2 23:17:42 2013 -0800

    Fixed panning and sample loops

commit 16c119ad546665eef86579cefd2a6501c0e3059f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Nov 25 17:05:36 2013 -0800

    Fixed assertion checks in case of envelope loops on the last node

commit b456e20491ea5edc1c052d21e1c105f2d2d5815b
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Nov 25 17:05:02 2013 -0800

    Added extra safety checking to aliased resampling mode

commit 55217b9408a6d8d47e9aed12276d096711d3e8f4
Merge: e5df9e9 30dc8c8
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Nov 10 23:41:07 2013 -0800

    Merge branch 'ttv-cmake-v2' of https://github.com/omf2097/dumb

commit 30dc8c8c9ead24734d0a42994d2fd3186bf05874
Author: Tuomas Virtanen <katajakasa@gmail.com>
Date:   Mon Nov 11 09:29:52 2013 +0200

    Remove unnecessary USE_SSE option from cmake file.

commit e5df9e9bec0ff82bce7930ee2dadd5a925cd8342
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Nov 10 23:21:34 2013 -0800

    Added more architecture type guards to _USE_SSE blocks

commit 14bf151cba840ea4db29226c1bcfb07c286b1afa
Author: Tuomas Virtanen <katajakasa@gmail.com>
Date:   Sat Nov 2 21:24:06 2013 +0200

    Add initial CMake script and directory

commit 094cfcc27187a209a5b457b15276d618fea08658
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Nov 10 22:35:24 2013 -0800

    Made the inline assembly cpuid function specific to GCC/Clang like it should have been in the first place.

commit 2c9ca950a32cd2de05ed8ae384ad08248793fecd
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Nov 7 19:36:22 2013 -0800

    Pan and pitch envelopes carry regardless of NNA being note cut

commit e07088e5f65186f78681116f3337a89d9db3f5ae
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Nov 7 19:06:43 2013 -0800

    It is now possible to use both Gxx/Lxx and hx in the volume column in the same row

commit ee34129043d15e9cb9f980ab73585bbec8b40314
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Nov 7 18:20:52 2013 -0800

    Fixed IT mixing Dxx regular volume slide with cx/dx volume column slide effect

commit b85fdab6f8102a7df5925d58a4e07b98ed69dd4a
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Nov 7 17:52:50 2013 -0800

    Simplified pan law calculation a bit

commit da31373331b91be6d6dd7e83a1e6eee94b0a585a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Oct 7 08:11:57 2013 -0700

    Fixed Asylum Music Format panning effect

commit 5945794aff46562478ff764a841e085448046125
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Oct 4 13:14:52 2013 -0700

    Fixed a C11 warning by adding a macro lock around blip_t declaration

commit bf5dd80894f947d3eca15960ca1b329e9ccde677
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Oct 4 10:16:35 2013 -0700

    Copied LONG_LONG definition inside of tarray header so it doesn't need to include the main dumb header

commit 8298eb20f77e77c92012ca880e479456d0d1112c
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Oct 4 10:15:52 2013 -0700

    Made resampler and SSE filter setup functions public, in case anyone wants to call them early to prevent possible but harmless race conditions

commit 23f9ebdf1a385e01b365598527c0a59458a4c99d
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Oct 4 10:15:00 2013 -0700

    Implemented automatic detection of SSE support

commit a5652e854199c29a6c06493515d20b0cb939a173
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Oct 4 10:12:17 2013 -0700

    Renamed init_cubic function in preparation to make it public

commit af75f07ccc9813ad19ba5b9a7f488c07834f7e9c
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Oct 4 10:10:32 2013 -0700

    Fixed compilation errors/warnings

commit 46a337c17f1921640757007c67f5af3ca2a3ba19
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Sep 27 19:59:47 2013 -0700

    Envelopes do not carry when New Note Action is Cut

commit fed6a743dd695249dde84369b09ac8a4e6facfe7
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Sep 27 19:57:03 2013 -0700

    Reworked declicker final volume propagation a bit

commit 9fc8f92d437a8132e90d53c94e6ca019b928dd1c
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Sep 27 19:55:52 2013 -0700

    Fixed declicker handling cases where a declicking operation lasts longer than the current block

commit 5fedef969bbde33acedc5be6dad13e943e3aa98e
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Sep 27 19:53:31 2013 -0700

    Removed start of note ramp when raising volume from zero on a running note, as normal volume ramping will already kick in

commit 3a3375f808ee166c78315e1005cd82203e356b3c
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Sep 27 19:51:13 2013 -0700

    Fixed IT envelope loop pickup when the loop start is not on the first tick

commit f8dfb33eeaf570b29580736dd1d5092e49ae9ddf
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Sep 27 19:49:44 2013 -0700

    Moved internal headers out of public dumb.h

commit 75c25767bcae8a13eb08b00fd46c4922619c34b6
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Sep 27 11:21:57 2013 -0700

    Added documentation from the original project

commit 50e839d4f51e1ff6fcbe68d39519475d7da74c4a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Sep 16 15:48:04 2013 -0700

    Fixed 8xx effect for MODs, which have a range of 00...FF, not 00...7F or 80 or whatever

commit 4a26a05d107a1aee0cc21bf5a41344da35acc3bf
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Aug 27 15:26:30 2013 -0700

    Fixed IT note cut and note off commands

commit 7a16e6a7caf6c001064e47e5da9c19f9e2c75d43
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Aug 26 22:50:32 2013 -0700

    Invalid notes correctly cause note fade, and range of valid notes increased to include 120/B-9

commit 5c5fedc5f76277abc281066b26dd7463a06841b4
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Aug 25 23:06:43 2013 -0700

    Normalized the indentation in the Lanczos resampler, and optimized the resampler a bit

commit b3596083ebba5974d1a5b9052145394eae980948
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Aug 25 09:49:55 2013 -0700

    IT NFx/NxF should not affect background voices

commit 2fcecb0f960dc6d206a480bc882ce430054350e2
Merge: ea96b85 d244b87
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Aug 25 07:55:15 2013 -0700

    Merge branch 'master' of bitbucket.org:kode54/dumb

commit ea96b859192e9db25968d290b19e57ef25b62a1c
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Aug 25 07:50:31 2013 -0700

    Channel volume effect should only apply to foreground voices

commit d244b8790af5c8caee2eacff1cda8380390eba93
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Aug 23 16:46:43 2013 -0700

    Fixed row played tracking and row timekeeping information for orders with skip commands

commit d1fe0fdbd105df23a2f879b54385074a3891ce2d
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Aug 23 15:56:35 2013 -0700

    Fixed XM arpeggio

commit 1c44d72e13bbd62790f71206fb061c606ec96337
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Aug 3 17:46:19 2013 -0700

    Meh

commit 01b9e3faabace3855a6fcd8cae6c253aeee28206
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Aug 1 09:29:49 2013 -0700

    - I didn't realize that sigrenderer->tick counted down from speed to 1, rather
      than up from 0 to speed-1, so every other format's arpeggios were backwards
      except for XM. Fixed.
    - Mask tick count to 0-31 so it can't overflow the arpeggio tables.

commit 29c3c9e5c9ce8debcd419eac92d841a2e26c7483
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jul 28 18:05:04 2013 -0700

    Apply delta to compressed samples regardless of creating tracker version

commit 52caa06214b5b09c8e69b56fb769f6ea93c941b2
Merge: 0fc04de ee557fc
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jul 28 18:02:51 2013 -0700

    Merge branch 'master' of github.com:kode54/dumb

commit 0fc04dec175327cc0f99c011690bafa4a3c2ccf5
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jul 28 18:01:28 2013 -0700

    - Rewrote arpeggio implementation to use note offset tables
    - Implemented Fast Tracker II arpeggio bug (ticks count backwards from
      speed minus one, speeds greater than 15 result in note offsets reading
      from the vibrato table, which gets clamped to 2)

commit ee557fc6f24807d7383ea025c99e81efed3c9ef2
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jul 27 16:30:29 2013 -0700

    Meh.

commit 951ce0752e9c64a792551b2868613a1b5b85f884
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jul 26 11:11:39 2013 -0700

    Fixed songs with envelope loops on the last tick

commit eaad8176c626959111f3c13fc82b1c4ad02a1e83
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jul 22 19:56:28 2013 -0700

    Fixed envelope start and end shortcuts

commit 27406abff56cb47d39c1a9e2d4f50336a882be49
Merge: 5698ac5 f2cd234
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jul 22 19:28:27 2013 -0700

    Merge branch 'master' of github.com:kode54/dumb

commit 5698ac532ffe1e01f7e23a476a6ea52341276b26
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jul 22 19:28:15 2013 -0700

    Fixed envelope loop timing

commit f2cd2349a4a2b49960f4193be7377dbdd9547a95
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jul 19 15:56:51 2013 -0700

    Fixed so it only initializes envelopes when instruments are enabled

commit 01f8ce4b56e460057d6cca3bfc2d58e3600300aa
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Jul 18 08:23:11 2013 -0700

    Fixed envelope carry to only occur if the running note has not already been cut or released

commit b9aea1412d1645766b9373c432ac498abed34b63
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jul 17 18:53:55 2013 -0700

    Further fixes to IT envelope behavior

commit a42b6bcdc28e200a751baf4414e6f4c6ebb36c71
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jul 17 18:34:09 2013 -0700

    Reimplemented envelope carry to be more like other players

commit 0bc29b4eb63b5758cf0d174258b6b072a3041a33
Author: Carlos Rafael Giani <dv@pseudoterminal.org>
Date:   Sun Jun 30 16:43:31 2013 +0200

    various fixes to address GCC warnings

commit 991ce8202643a296969d9a623e9702966a957e69
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jun 22 15:16:04 2013 -0700

    Moved DUMBFILE structure to its own header file to unify the rare cases where it needs to be visible outside of dumbfile.c

commit bfb8fea251124760b834c36e5eabd2aff24494b4
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jun 21 00:14:19 2013 -0700

    Whoops.

commit f5a1c5ec318cd7c17fb54f2ed2cb70d72cd549f6
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Jun 20 22:28:11 2013 -0700

    Eliminated all clang compilation warnings

commit d31fb2084659b64d07eb0644d9bacfd67059d066
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Jun 20 22:27:52 2013 -0700

    Fixed C++11 compilation error on Mac OS X

commit d2d6f48b2bdecc96a60c7e7dfab2b83bf72dc143
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jun 16 09:55:19 2013 -0700

    Fixed another stupid error

commit 9b377f8d7f76159d7f227c727aeae7e16fd1db7b
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jun 15 19:48:23 2013 -0700

    Cleaned up several warnings, including a buffer
    overflow in the DSMF reader

commit e12facc69845ef4f16bc70f755dc7cb898cede41
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jun 12 07:19:13 2013 -0700

    Disabled MSVC 2012 default of SSE2

commit 5b83c82c3cc13dd2eeec47758fde4cd61d455bd6
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jun 12 05:56:32 2013 -0700

    Fixed intermittent noise with SSE resonant filters by special casing zero length render calls

commit 796c801be6b1db3a800a844ab58b9a5454951ace
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jun 12 04:06:19 2013 -0700

    Subsong scanner always tries to play the first order now

commit b5f940169c2968b54e8d48cf880f5999c5932922
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jun 12 03:45:06 2013 -0700

    Re-enabled SSE support and rewrote SSE filter function

commit cf2577d4bc284fb5c5b71377413a47c72a1362dc
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jun 9 11:22:34 2013 -0700

    Fixed timekeeping when starting a sigrenderer with a time offset

commit 89724f7ac8c7b5395df41443c504f7a3c486f144
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jun 9 10:47:48 2013 -0700

    Coding consistency fixes

commit 68f8a3aa8fb53b98625232d99cc5bd040e67dd96
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jun 9 10:33:32 2013 -0700

    Fixed timekeeping

commit 3e73bae5e9ddd3a44d9b0767093d93dfd45df1fc
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jun 9 10:33:16 2013 -0700

    Enabled SSE compilation

commit 2e0b1fae827b0cf771049e8697f0e8c98df87f96
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jun 9 02:58:16 2013 -0700

    Disabled SSE as MSVC 2012 breaks it

commit ca9fae207ca4505560ac9f0a3f25cd076179e5dc
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jun 7 20:24:38 2013 -0700

    Fixed position status reset on callback-aborted loop

commit 852b2b9d01fa0f31dd004d5acc19035401faf6f3
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jun 7 20:23:41 2013 -0700

    Added MSVC 2012 v110_xp platform

commit a6c23d0bd4ab4a4e28fe4bbb112f4f56c68488b9
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Jun 4 19:15:25 2013 -0700

    Fixed Qt project file

commit 381ce8ea4237a64d63ac447d1e42463edde356da
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Jun 4 11:00:52 2013 -0700

    Fixed duplicating some timekeeping state variables

commit 7c1e30edb5700a7751281cc0f8e5e3bb4934989f
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Jun 4 10:57:59 2013 -0700

    Small fix for possible issue with time reporting for looped modules if callback ends playback

commit 153721b1c9f4cde62fa17d6aef56f782b37384bf
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jun 3 18:41:31 2013 -0700

    - Implemented loop-accurate time position reporting into DUMB
    - Implemented get samples stopping short on loops

commit 99111038210a07af485be94a6e85dc43faa10eff
Author: Carlos Rafael Giani <dv@pseudoterminal.org>
Date:   Wed May 22 17:37:36 2013 +0200

    M_PI may not be defined

    When building with gcc 4.7.2 and -std=c99 , M_PI is not defined

commit db4dcf6c1581496e336062c866ce522544d25849
Author: Carlos Rafael Giani <dv@pseudoterminal.org>
Date:   Wed May 22 17:36:35 2013 +0200

    the MEMFILE filesystem didn't have seek and get_size functions

    This caused crashes if read_any was used

commit 4e0faec2b81698376b78c4715d633de23140cd10
Author: Carlos Rafael Giani <dv@pseudoterminal.org>
Date:   Wed May 22 17:35:47 2013 +0200

    renamed "restrict" parameters to "restrict_"

    "restrict" is a keyword since C99

commit e65a86fc81352fbd667269f22878365606e2cf2c
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon May 6 17:08:39 2013 -0700

    Removed unnecessary optimization function

commit 1fe80f166e57778b1500bb035ec9ff8d95819006
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat May 4 21:08:17 2013 -0700

    Fixed regular surround mixing

commit a869c4734a0df7a35b7616089db89cf64fcb3d80
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat May 4 21:07:58 2013 -0700

    Optimizations and bug fixes for the Lanczos resampler

commit 6edaad13465e6739f185884bd2d308e1f50d7cc9
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu May 2 16:04:14 2013 -0700

    Fixed resonant filter handling in surround mixer

commit b40d6a5877558121d876ee3c578daecf138b504c
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Apr 30 13:04:56 2013 -0700

    Implemented 3 channel surround mixing

commit 85fa2b7e833e2ec45af7ed9629c9f360e4f37730
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Apr 29 18:04:41 2013 -0700

    Removed unnecessary code

commit 8111a1eb5bcd11f01dd4fcea067d53b00c13d8a4
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 26 02:13:17 2013 -0700

    Whoops, that was Blackman-Harris, not Lanczos. Lanczos produces less aliasing, anyway.

commit ffd168da5e639f5ef9943d2cc8c8be202a1003b0
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 26 01:42:23 2013 -0700

    Fixed phase calculation when downsampling

commit 1eef4c9f892c119f2f92f0d928efe1b7a98af934
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Apr 26 00:25:04 2013 -0700

    - Implemented Lanczos resampler - Fixed overhead of performing effects updates on background voices

commit 8605fb3a520aafb2d43febb6c0a9acde871090e7
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Apr 22 23:15:06 2013 -0700

    Replaced FIR resampler's IIR low pass filter with a fixed set of cutoff stages

commit 5f1d4388b1ba13ca80540f4734bbc58648468e3c
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Mar 16 15:03:07 2013 -0700

    - Removed *16/11 scale from S3M global volume
    - Applied S3M master volume as mixing volume
    - Renderer now ignores S3M Vxx for values greater than 0x40

commit cc986aa7dad019e2e4f8fe2d42013e50a1cd79d6
Merge: 9a68144 8ba1f7e
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Feb 19 21:10:15 2013 -0800

    Fixed shit

commit 8ba1f7e7c01eef9dac7dd79cf2026ae9c3364b8d
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Feb 19 21:08:21 2013 -0800

    Fixed panning correctly this time

commit 569b49a533a53b92dceac0eb6b4aa6641f65ae5e
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Feb 19 21:08:02 2013 -0800

    Implemented support for compressed stereo samples

commit 9a68144bfcd970e257b37ccc001d58c23cbe007e
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Feb 14 12:21:31 2013 -0800

    Changed panning rule from 3dB to 0dB to match most trackers

commit c7aadf292975e96c3036fc4f2e4248a5c727fa5d
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Feb 10 11:45:04 2013 -0800

    Fixed loop start for STK modules

commit ff84ff32fe1fc82926020feedf894c4fb5c37ccd
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Jan 22 03:02:12 2013 -0800

    Fixed serious error with MPT extension reading

commit 3aee7f113c66f19e93f9e41a6e280e12dfd9a0e9
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Jan 17 16:26:06 2013 -0800

    Fixed envelope reading to gracefully handle nodes which are out of range

commit 73da922bddede1f81fffc7e5e895cace755b378d
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jan 16 22:03:01 2013 -0800

    Implemented support for the obscure S9F sample reverse effect

commit 0994e9948c6ca6b2d50e1e5e4ac87b8371764b7f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 14 20:14:48 2013 -0800

    Removed unused variables

commit beea1d9f5c32609b8b48859f018a4225b1ab29ab
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 14 20:11:28 2013 -0800

    More fixes for seeking support

commit a79a9725a9ed45f80d0c9ecf6fc1697219937dd9
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 14 19:26:42 2013 -0800

    Fixes for C89 limitations and some const types

commit d8784727e4b117e77c9cf4ff609dace2c4d1da24
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 14 19:06:08 2013 -0800

    Implemented full seeking in DUMBFILE and modified several readers to account for this change, which also reduces their overall memory usage

commit 3267dd862062e755782f04eee5db47ef338fc5b8
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jan 12 18:34:22 2013 -0800

    - Added silence padding for samples which are too short to predict padding for
    - Added extra comments

commit d5b0ced73cd72f99816b7db788cef63b2603bbe4
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jan 12 18:33:35 2013 -0800

    Eliminate clipping from the low-pass filter stage by increasing intermediate buffer type size to int

commit a57194a330f1ed2b44bb681e3d2c63880628f214
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jan 12 15:59:36 2013 -0800

    - Simplified low-pass filter
    - Eliminated accidentally applied resonance from low-pass filter
    - Silenced a C89 error by adding a static cast

commit 6c8eeb8a7b0e72c3de865d517ec0ff4778389315
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Jan 12 10:17:54 2013 -0800

    Added a low-pass filter to the FIR resampler

commit b440292bbb949f0aaf5dbb8fa17169833fd15c5e
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 20:53:32 2013 -0800

    - Fixed FIR resampling
    - Silenced warnings

commit 0f63644adc09deb4f7aa87d156a8d2fc70418fef
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 20:22:46 2013 -0800

    Fixed C99isms for MSVC

commit 3a1e4eeeb0e868cadc392a59c962bcd0ec57e924
Merge: e032212 abedfc2
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 19:58:47 2013 -0800

    Merge branch 'master' of github.com:kode54/dumb

    ... oops, I started making changes without pulling the latest source first.

commit e032212355ac7075c91fc9d9c48b990f02353a60
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 19:58:42 2013 -0800

    Made SSE filters configurable

commit abedfc226b1f070c979ac8e8d6c09fa31eee96c8
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 19:39:43 2013 -0800

    Added new files to MSVC projects

commit d666d3d8906a27d9475e7aea1b650da8c5d163b2
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 19:35:58 2013 -0800

    Cleaned up MSVC 2010 project file

commit 8cc51b9415ad34de3aa8e8f29f5e5eac96b9fae1
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 19:30:28 2013 -0800

    Removed stale source control file

commit 52b415ace8dee10d26984da1eabf36fc08f07f4c
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 19:27:12 2013 -0800

    - Implemented FIR resampler
    - Implemented one-time LPC extension of samples without permanent loops, to better facilitate declicking, and also to help flush the resamplers

commit 2fa3b87ae99fc62a03ec26c81c81ae23f3ab7cec
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 11 19:24:34 2013 -0800

    Minor indentation change

commit 4df0e8c5be294fa1fe3ea96eff8387c2505912ec
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Dec 30 10:59:29 2012 -0800

    Fixed pattern counting, and swapped pattern counting flag

commit b97e36954f873516c31c0a8c24054784f3c9d751
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 29 18:02:21 2012 -0800

    Fixed portamento up effect when NNA channels are active

commit ac46a8b6056cf12bff464407bc1582301051c1f1
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Dec 26 13:22:49 2012 -0800

    Fixed STM speed handling

commit 425a8407fb003e1ca7d5f332cad9d7be90a6e2ee
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Dec 23 13:40:35 2012 -0800

    Oops, forgot MSVC doesn't have snprintf

commit ad8a234f3c6c9b3e7a2d590c81f297bf20375f6d
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Dec 23 13:32:31 2012 -0800

    Buffer entire file into memory to allow for weird file offsets, and add minimal Open/MPT extension reading

commit 347a1170d6d00ec2ea9db2a3667ee7c8d2ef422b
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Dec 23 13:31:41 2012 -0800

    Fixed envelope handling

commit b837698bcffa3952e5fa26e80ffc562e961002b9
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 19:15:19 2012 -0800

    Fixed memory reader for formats which perform empty skips at the end of the file, like Asylum AMF

commit 690b8c607fa01df486f00af03b068d11acd14d55
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 18:56:25 2012 -0800

    Silenced MSVC warning, removed unused variables, and reordered some code for pre-C99 compilers

commit 3ec6f425abbaf5fc6141fdff1783cd5d71005fe8
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 18:55:51 2012 -0800

    Silenced MSVC warning

commit b80bcdf9054a60bbba6806313327b10d14ab9517
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 18:55:32 2012 -0800

    Added new 'any' reader to MSVC 2010 project

commit efd9431447a6f686e8212ffc796624ed58b06531
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 18:54:44 2012 -0800

    Added format tag to IT reader

commit 07787fb0eb2473c7bc7e7185d37936c1b78e424b
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 18:41:25 2012 -0800

    Portability fixes

commit a17f9925e5b2e4b5fc20108723374c142e942bbe
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 18:40:43 2012 -0800

    Included SSE optimized it_filter function, enabled if _USE_SSE macro is defined at compile time

commit 918d6366a57d34b63dd8144790f979cd9d2656f5
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 18:39:41 2012 -0800

    Implemented simple 'any' format reader which attempts to detect the format of the input file and passes it off to the correct reader.

commit d013643820c4fd4d1d80011bed52a047be46c9f1
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 16:50:52 2012 -0800

    Added Qt project file

commit f4c6edf2923b3098e80123ae2262d01bf6fa89f6
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 16:49:34 2012 -0800

    Only provide our own log2 for MSVC, since other platforms should already provide it

commit 5c9c4359042555c182a4bd52ef212a162e5bbd76
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 16:49:01 2012 -0800

    Removed unused variable from function declarations, a leftover from copying from the MOD reader

commit 9b60a9a4784af5eb7ae2274726c7107c072eb3a6
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 22 16:48:30 2012 -0800

    Added limits.h for LONG_MAX

commit 045efbd6fc579a78e304185e480c8c15b2b932c4
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 15 22:54:14 2012 -0800

    Fixed older pattern counting mode

commit 5b53815e1f271746627bde0bfce7140109b88f14
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Dec 15 22:47:19 2012 -0800

    Made the new MOD pattern counting system optional

commit 30b178af5674b8604306885a693c2a8aa422472f
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Dec 9 23:17:38 2012 -0800

    Fixed ADPCM sample support

commit 02190e007b4967b8a546f64a3934724817ff5c3a
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Dec 9 21:59:33 2012 -0800

    Fixed MOD pattern count calculation in weird cases where the last sample is missing four bytes

commit 756ecf2ac0a2b70639193aca55627b64dac8d8d5
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Dec 9 19:53:45 2012 -0800

    Added interface for inserting extra DUH signals, and fixed searching for IT sigdata when more than one signal is present

commit d2575fcc80abf2f04e702adb60a6265cef0fcabb
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Dec 4 03:49:30 2012 -0800

    - Implemented final solution for MOD pattern count calculation
    - Fixed possible memory leak which only would have occurred with rare MOD files
    - Fixed a possible memory allocation error or crash with FLT8 MOD files

commit b17c5254eeac1bff7e4b613c151e0232c2cba646
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Nov 26 03:49:04 2012 -0800

    Remove trailing whitespace from all song, instrument, and sample names

commit 32c9bb420240cac2120e7e01c2683df88d1dc1ac
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Nov 26 03:11:49 2012 -0800

    Corrected MOD reader to only check the known number of orders when calculating the pattern count

commit 9e3012a7ce5fb52383f51c99061bc45921699f63
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu Sep 20 05:28:25 2012 -0700

    Fixed pitch slides on non-playing channels

commit e84e1824fbd0b2b690bd9beb2e25fd308e661982
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Sep 9 11:23:47 2012 -0700

    Fixed envelopes so they only carry from the same channel

commit 22e82be0a7b0a915a2669e8f4ff889a938a7bfcb
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Sep 9 09:26:00 2012 -0700

    Reverted previous failed tone portamento fix

commit 09b78300e19b5cb72d4a515c1e331800d3a6ffbd
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Sep 9 08:18:55 2012 -0700

    Fixed IT tone portamento again

commit e0917efbb9707dea88f1f4c525be7c7647bd82a4
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Sep 8 19:55:47 2012 -0700

    Fixed IT tone portamento so it can continue without a destination note on every row

commit 15b780d08f2ee6f50a9843dc7479349f4deee5a7
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Sep 2 12:56:38 2012 -0700

    Fixed most effects applying to background voices

commit 8d87ab8b9ec398cf3831b87dc969a28e278f3105
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Aug 7 00:02:03 2012 -0700

    - Fixed XM sample header size handling to always assume a size of 0x28
    - Version is now 0.9.9.56

commit 7ad496ecf2fd658a51de55df0e7f0257025038cc
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jul 8 12:57:56 2012 -0700

    - Added sanity checking to XM reader instrument and sample header sizes
    - Added footer tag checking to prevent tags from reaching the module reader
    - Version is now 0.9.9.55

commit 5bee3e5ba3d57d1b16dda6d82c18fb417781625b
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Jul 3 22:24:17 2012 -0700

    - Fixed XM reader for files with smaller than expected instrument or sample header sizes
    - Version is now 0.9.9.54

commit 0e95459562669335f7de543d063cfa57d25a8b77
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Feb 27 16:04:22 2012 -0800

    2012-02-24 19:11 UTC - kode54
    - Fixed MOD vibrato depth
    - Fixed XM tremolo ramp and square waveform tracking
    - Version is now 0.9.9.52

commit 7fc359f6c61939618b11aa2aedf42d45220609f7
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Feb 10 17:14:38 2012 -0800

    Fixed BaseClasses project name capitalization to correct version control tracking, removed TFS tracking files.

commit 149898118213ec5d5cf8bba057702ab984b8dfa3
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Feb 10 16:53:05 2012 -0800

    Added ignore lists for compiler output files

commit b85ab3ba352ea05126f6b4ebcca293f223a3988f
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Feb 10 12:28:35 2012 -0800

    All projects updated and now compile in the new git repository.

commit 8c3e510483ba1fdec19017dad4a5004d694177eb
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Aug 31 07:53:24 2011 +0000

    - Corrected old style PSM note data
    - Version is now 0.9.9.45

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C724

commit 317a6f3da95fddbdbff464d77ad47ffd0dbfdaff
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Aug 14 02:31:37 2011 +0000

    Major project file maintenance

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C717

commit 71ecdc7274a7fa33af0a0dea915eb3a294b0b04a
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Aug 2 23:31:19 2011 +0000

    - Fixed IT stereo samples
    - Version is now 0.9.9.43

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C713

commit 667b479457fd7c1e9aff4ea8301295c81762bdf5
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jun 5 22:49:29 2011 +0000

    - Fixed IT envelope reading for node counts over 25, which are invalid
    - Version is now 0.9.9.41

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C684

commit 4a268f95b7d2a116e3ea53d297c1d5a29f46bf07
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed May 25 18:42:29 2011 +0000

    - Added missing song restart position initialization to AM, AMFF, and DSM readers
    - Version is now 0.9.9.40

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C682

commit 07f761e918e8a621f64242dd1a631ceba03cc920
Author: Chris Moeller <kode54@gmail.com>
Date:   Thu May 12 12:26:57 2011 +0000

    - Fixed IT New Note Action duplicate check types for sample and instrument
    - Version is now 0.9.9.38

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C678

commit 7def196332594817f94138dce2942007d232d407
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Mar 23 05:45:50 2011 +0000

    - Corrected volume slide behavior for S3M playback, and also adjusted the slide volume level clipping range for S3M to 0-63
    - Updated S3M playback to share memory between DEFIJQRS effects
    - Adjusted S3M reader to a lower master volume level scale
    - Version is now 0.9.9.36

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C668

commit f5f34570905e87f1933a0220d71d0d48c05b9b49
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Feb 9 08:10:45 2011 +0000

    - Added a workaround for bad sample offsets in STM files
    - Disabled inserting note cut commands in STM files, as there is no such command in the format
    - Version is now 0.9.9.35

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C614

commit d78c28566689e3fca51f1fbb7208cde8b6e190a6
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Feb 8 14:11:09 2011 +0000

    - Fixed STM sample reading
    - Version is now 0.9.9.34

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C613

commit c2cb42ff918b398ec8c305ddc6574f9f8f945ad9
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Feb 8 12:03:29 2011 +0000

    - Implemented support for STM 1.x format
    - Flagged STM files as stereo, as they should be
    - Version is now 0.9.9.33

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C612

commit 33cd2c469ae9872dd0710297760bfb1dfe53a56d
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jan 19 15:20:02 2011 +0000

    - Made Oktalyzer reader more tolerant of truncated files
    - Version is now 0.9.9.30

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C562

commit e169b25f34ca140da8375a7085791447a5b8e8e8
Author: Chris Moeller <kode54@gmail.com>
Date:   Wed Jan 19 07:14:25 2011 +0000

    - Implemented Oktalyzer format loader
    - Version is now 0.9.9.29

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C555

commit e34d68685d2e5e8b45f62acdaf8157872624620c
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Jan 14 00:10:44 2011 +0000

    2011-01-13 23:11 UTC - kode54
    - Implemented ASYLUM instrument base semitone offset
    - Fixed ASYLUM effect number translation
    - Version is now 0.9.9.28

    2011-01-13 21:28 UTC - kode54
    - Quick fix for PT2 invert loop effect
    - Version is now 0.9.9.27

    2011-01-13 20:37 UTC - kode54
    - Implemented PT2 invert loop effect
    - Version is now 0.9.9.26

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C545

commit c0fc19ef2e756ef25aa44ca3775b4afed3f02c9c
Author: Chris Moeller <kode54@gmail.com>
Date:   Tue Jan 11 18:57:59 2011 +0000

    - Changed aliased resampler loop conditions a bit to fix some bugs
    - Removed resampler loop unrolling, as it actually made things slightly slower
    - Fixed a bug with songs triggering notes on the first order with instrument changes before any note commands have been triggered
    - Version is now 0.9.9.24

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C543

commit bf42c55a9ad494b3bcbee5dc2959f03c1938fdfb
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jan 9 14:18:02 2011 +0000

    Import of blip_buf and one missing header.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C540

commit 9ac6cf69758fe0db6d6e654f298cd36efdb73366
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Jan 9 14:16:37 2011 +0000

    - Replaced old aliased resampling mode with a 65536x oversampling sinc resampler
    - Version is now 0.9.9.23

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C539

commit 4c0d2d92e6cc5c607a145f9fcbc8903e39327d1f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 3 14:33:17 2011 +0000

    Add missing files to repository, delete old 7-Zip source folder

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C534

commit a9176165a2ccc56410b2004d2f5dd40b2052453a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Nov 22 01:24:37 2010 +0000

    - Changed a break to row behavior in DUMB, hopefully it doesn't break anything
    - Version is now 0.9.9.22

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C516

commit 1a9e0d4fd889dc9d17a5ebe97825be0cb2b7a273
Author: Chris Moeller <kode54@gmail.com>
Date:   Sun Oct 3 06:17:34 2010 +0000

    - Added range checking for XM global volume command
    - Version is now 0.9.9.20

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C490

commit ca554279a235b23c7f5f6ff9ce478a7aa7250dfe
Author: Chris Moeller <kode54@gmail.com>
Date:   Sat Aug 21 01:00:49 2010 +0000

    - Fixed channel muting when switching or restarting songs, or when seeking
    - Version is now 0.9.9.19

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C467

commit 6e159ab89b5df27acf8a182a1ea5bf307ba8ff95
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Mar 12 00:16:35 2010 +0000

    - Fixed two bugs with pattern loops causing songs to loop forever
    - Version is now 0.9.9.13

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C383

commit 73bec70252bbed9b127d091f6dfded8c0a31116e
Author: Chris Moeller <kode54@gmail.com>
Date:   Fri Feb 12 20:33:49 2010 +0000

    The Great Merge of 2010

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C370

commit 7c2cc8b01ae64355772be20f7d5edd4e30bd1e08
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:02:22 2010 +0000

    {12/17/2009 2:12:36 AM}Reverted sinc interpolation until I feel like fixing it

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C365

commit eff0f2541daf739f21bb0662345915f4fa60354f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:02:22 2010 +0000

    {12/17/2009 2:02:04 AM}Failed sinc interpolation for future review

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C364

commit 92fea5b475e37c39b28b88ab28b0dfbd8c899adf
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:02:16 2010 +0000

    {10/23/2009 9:27:50 PM}2009-10-24 05:13 UTC - kode54
    - Restored old sample info tag reading method and made the new style optional
    - Version is now 0.9.9.8

    2009-10-18 04:52 UTC - kode54
    - Changed sigdata flags for AMF reader
    - Version is now 0.9.9.7

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C352

commit 52da4eb628a4a0f96495b42b75aac6b3a76d101a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:02:16 2010 +0000

    {10/17/2009 6:03:36 AM}- Fixed a stupid bug in the AMF reader
    - Version is now 0.9.9.6

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C351

commit db718382dfb187fbdaa16a9dd4904c073fb8004d
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:02:15 2010 +0000

    {10/12/2009 11:53:02 AM~10/12/2009 11:53:04 AM}- Implemented DSMI AMF reader
    - Changed MO3 unpacker to use unmo3.dll
    - Version is now 0.9.9.5

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C348

commit 19527c25846226fe8d5479aaefc5bee0f3274d1a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:02:14 2010 +0000

    {9/30/2009 4:11:06 AM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C347

commit d02aa3a3a3ab05acf6908411f8ecfcb46bf06f73
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:01:37 2010 +0000

    {5/3/2009 5:29:28 PM}Underflow fix.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C262

commit da229930ce0f698c7443ae693e593d582748822f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:01:37 2010 +0000

    {4/18/2009 4:30:02 PM}- Fixed another bug in xm_note_off with potential unknown files.
    - Version is now 0.9.8.5

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C259

commit df55c420128a38d58016ef9517707c37b15e67fc
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:01:17 2010 +0000

    {1/7/2009 4:53:48 PM}Removed inherited property sheet definitions.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C214

commit 1f89a5627cfc0c48aa13a1d6bcb060847119206b
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:01:06 2010 +0000

    {10/4/2008 3:54:34 PM}Fixed xm_note_off for when instrument number is out of range.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C201

commit 1f2e7f8d46858490d0bd6a5e4855a4c168a8a31f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:01:05 2010 +0000

    {5/28/2008 5:29:34 PM}Fixed renderer for tempos greater than 255

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C198

commit 242c96c172f5203f595a4ba24f9649c2c975846f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:01:04 2010 +0000

    {5/1/2008 3:06:24 PM~5/1/2008 3:07:24 PM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C196

commit 83a79f2c29b2601d78087aaa8e8363157e0b4ecb
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:01:02 2010 +0000

    {4/28/2008 3:21:58 PM~4/28/2008 3:22:14 PM}Converted projects for Visual Studio 2008.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C193

commit a78d4c613bc37d175db2fa90fc82f4b43e0ea470
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:59 2010 +0000

    {1/27/2008 5:51:00 PM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C192

commit f230355b7f90105f13ca56343c4d2e2c1763d68f
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:56 2010 +0000

    {7/24/2007 3:48:08 PM}2007-01-26 22:50 UTC - kode54
    - Moved IT S70-2 effects alongside the rest of S7x so they all trigger after
      paired notes.
    - Integrated note on/cut ramping with volume transition ramping to reduce
      setup/cleanup overhead of calling render_playing and the resampler functions
      for single samples.
    - Note on/cut ramping scaled from 7 sample logarithmic and 256 sample linear to
      .75ms and 5ms respectively, both linear.
    - Integrated the pattern looping changes from DUMB 0.9.3, since a few files
      seemed to be broken. The XM-only features still needed to be flagged for XM
      so they won't break MOD.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C181

commit 684f4672fe54d3e82a6912a8896cf812ca0acbdb
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:42 2010 +0000

    {1/24/2007 5:58:58 AM}Reduced the warning level of the Release target to 3 and enabled project database debugging info, for when the relevant measures are enabled in foo_dumb.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C166

commit 79c6f2cb09edeebcebd3e8e6422caf38720df82a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:42 2010 +0000

    {1/24/2007 5:57:52 AM}2007-01-24 08:34 UTC - kode54
    - Implemented 669 running effects correctly.

    2007-01-22 18:54 UTC - kode54
    - Implemented 669 running effects, nasty stuff.

    2007-01-21 14:21 UTC - kode54
    - Fixed a bug in IT renderer / get_true_pan that caused it to crash on IT files with instruments enabled upon hitting an invalid instrument change.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C165

commit 885cabebbfc78ad7a3e4c4ecf80b1b6045faa139
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:42 2010 +0000

    {1/24/2007 5:56:54 AM}Corrected effects parsing and added global flag for the renderer.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C164

commit 41014790720378a31106ea18e27bcb2d45fcc2a5
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:42 2010 +0000

    {1/24/2007 5:55:02 AM}2007-01-21 17:43 UTC - kode54
    - XM reader now ignores sample header length, as Sk@le Tracker fills this with nonsense.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C163

commit a87eac09ccd72ca7257d6102835e8b94bfac6583
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:42 2010 +0000

    {1/24/2007 5:54:32 AM}Removed unused variables.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C162

commit fa3a8d1cafd0db06dc748af6755355f101978ad4
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:41 2010 +0000

    {1/24/2007 5:52:26 AM}2007-01-23 17:42 UTC - kode54
    - Fixed IT reader decompression to support compression+delta on files created with 2.15 or newer.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C161

commit 8b1e1b01ceea3d5b7cb5fa2a781a883ccfbe44af
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:26 2010 +0000

    {11/29/2006 6:01:06 AM}2006-10-12 06:28 UTC - kode54
    - STM reader checks for more values after the song name, reports the correct
      order list size, and ignores samples which are shorter than four bytes or
      have a default volume of zero.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C137

commit cfb81dff3e9a09bd943bec1a814f35c41432c356
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:26 2010 +0000

    {11/29/2006 6:00:28 AM}2006-11-01 00:50 UTC - kode54
    - IT renderer now cuts existing notes when it reaches a note where the instrument
      references an invalid sample. (jumping under trees.it)

    2006-10-14 08:33 UTC - kode54
    - IT renderer pattern loop processor now resets the rows played to clear table
      per channel regardless of whether order changed since last loop start was
      initiated. This is correct, since two pattern loop starts in a row means that
      a loop will never jump to the first loop point.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C136

commit 4f9a59e413f0cf404b136a7a1696968ecddd8372
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:25 2010 +0000

    {11/29/2006 5:59:20 AM}2006-11-01 00:50 UTC - kode54
    - Resamplers now return immediately if the fixed point delta is zero.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C135

commit 3be9ce486cf67827f18346b54d83478d487abd40
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:22 2010 +0000

    {10/6/2006 9:42:18 PM~10/6/2006 9:42:20 PM}2006-10-07 05:24 UTC - kode54
    - Simplified volume ramping update code, reducing the size of the resampler code
      considerably.
    - Bumped the volume ramping precision to 24 bits of fraction precision, which is
      needed by Sweetsin.xm.
    - Moved sample rate reporting to dynamic info as requested by Peter, since it's
      not a property of the files themselves, but user configurable.
    - Version is now 0.9.8.1

    2006-10-07 03:42 UTC - kode54
    - Changed DSMF sample loader to ignore unknown flags instead of blowing an error.

    2006-09-25 17:39 UTC - kode54
    - Added hack to MOD loader for when sample start is specified in bytes instead of
      words.

    2006-09-19 15:05 UTC - kode54
    - Shuffled finetune calculation into the correct position, immediately applied
      as delta is calculated from note.
    - Promoted IT_SAMPLE finetune property to signed short as char is insufficient
      for full semitone range. (+/- 256)
    - Changed resampler to use full 64-bit comparison for todo variable range checking
      which should hopefully eliminate any further problems with pitch slides which go
      out of range.
    - Version is now 0.9.8

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C123

commit 719dbbe38317512e9aabb2654953e9ba226caaf6
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:09 2010 +0000

    {6/16/2006 12:00:56 AM}- Changed Amiga clock rate and divisor constant
    - Added finetune property to IT_SAMPLE

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C110

commit 7b35d20e52156ddf5eb73015f43f6787f520bcf5
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:09 2010 +0000

    {6/13/2006 4:52:42 AM}Removed a line of unneeded code.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C108

commit 691d717ba6d2bee9c477e971f157f57bf051ed8b
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:08 2010 +0000

    {6/13/2006 4:52:18 AM}2006-06-10 18:10 UTC - kode54
    - Fixed volume ramping.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C107

commit bbee7ab76b3e04fa2ae1cff8a23f9a61e214c6bf
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:08 2010 +0000

    {6/9/2006 9:34:08 AM~6/9/2006 9:34:10 AM}Ported changes over from DUMB 0.9.3.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C106

commit 5ed3b0ec86820172d2cff9a19529e60a9c39a93a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:03 2010 +0000

    {6/8/2006 7:36:56 AM}2006-06-03 02:13 UTC - kode54
    - Implemented ASYLUM Music Format support.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C102

commit cf89f65a58886db9c0c274a7032a50e61911ace8
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:03 2010 +0000

    {6/8/2006 7:36:18 AM}2006-06-02 21:20 UTC - kode54
    - IT renderer now supports pattern jump and break to row on the same row.
      (coffee-blues 3.mod)

    2006-06-02 20:25 UTC - kode54
    - Empty pattern scanner now returns the correct value for completely empty
      pattern structures, and also checks for lists of empty rows.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C101

commit 14e15b8bfdf9d09e0a884d899641af5ad09de82d
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:02 2010 +0000

    {5/31/2006 8:37:04 PM}2006-05-31 23:15 UTC - kode54
    - Implemented STM support.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C96

commit 82f65ee68c0d49d7419769992da22131ac6d48ec
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:01 2010 +0000

    {5/31/2006 8:36:40 PM}2006-05-30 00:04 UTC - kode54
    - XM reader now truncates instrument envelope lengths to 12, and performs
      some basic envelope loop checking, similar to Open ModPlug Tracker.
      (revive_nimnone.xm)

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C95

commit 1dbeaf67c98af889a5a71fec6ad1e14e470461ac
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:01 2010 +0000

    {5/31/2006 8:36:12 PM}2006-05-30 03:57 UTC - kode54
    - IT reader works around a broken file that has several of the instruments
      offset by two bytes from their indicated file offsets. Since the hack
      only checks for offset by two null bytes, it also assumes that the two
      bytes it can't read from the end are also zero. (bz_ult9.it)
    - IT reader treats null instrument/sample/pattern offsets as empty items.
      (flight2.it, sherri.it)

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C94

commit 2b2f154894d691a18ede7740a2c319d90b47a14d
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:01 2010 +0000

    {5/31/2006 8:35:22 PM}2006-06-01 00:47 UTC - kode54
    - STM reader reads effects properly now.

    2006-05-31 23:15 UTC - kode54
    - Implemented STM support.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C93

commit 9d44f7d96637019c3d9ff0f2186a7886fac466b5
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:01 2010 +0000

    {5/31/2006 8:34:58 PM}2006-05-31 23:15 UTC - kode54
    - Implemented STM support.

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C92

commit d8680ee4bdafc15a97bab686bb61597289fedec1
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 09:00:00 2010 +0000

    {5/27/2006 1:41:32 PM}2006-05-27 22:40 UTC - kode54
    - S3M reader defaults to maximum (128) global volume when the header value is
      either zero or greater than 64. (darkness2.s3m)

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C88

commit 4e1db2adb05e53c50fe38102676889c22a4f2e66
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:59:57 2010 +0000

    {5/26/2006 10:58:10 PM~5/26/2006 10:58:12 PM}2006-05-22 21:44 UTC - kode54
    - XM reader now supports up to 256 instruments, even though FT2 only
      supports up to 128. ModPlug Tracker again.

    2006-05-22 18:43 UTC - kode54
    - S3M reader was using the incorrect index into component for sample packing
      when reading sample data. Was using n, should have been m.

    2006-05-22 17:26 UTC - kode54
    - IT renderer may have a bug with its time_lost / loop handling. Switchover
      from sustain loop would compound time_lost onto itself for every note-off.
      I'm not sure if this crap is even doing the right thing, especially in the
      case of a sample with a sustain loop, but no main loop. Working around for
      now by zeroing time_lost after note-off. (hall8.it)
    - S3M reader ignores effects outside of 1-25 range so nothing can hit
      internal effects which are XM or PTM only. (N4.S3M)
    - IT reader now supports ModPlug Tracker extensions for up to 4000 samples
      and mapping them with instruments. (hallowe.it.it)
    - XM reader now supports instrument vibrato 4, random. Yet another ModPlug
      extension. (hcw-st.xm)

    2006-05-21 02:11 UTC - kode54
    - S3M reader correctly reads all 24 bits of the sample memory segment
      offset, fixing at least one file with >1MB of sample data (d-t-x_x.s3m)
    - XM reader stops reading instruments when it has at least one valid
      instrument and encounters an error, fixing at least one file with
      too high instrument count in the header (drx-chri.xm)
    - IT reader ignores instrument header signatures, since there seem to
      be files with bad signatures on unused/filler instruments (dsouls.it)
    - MOD reader can now be restricted to handling 31 sample files with
      legal/known signatures only, so frontend can fall back on restricted
      MOD loading for files with incorrect extensions (dreamer_0g.s3m)

    2006-05-20 xx:xx UTC - kode54
    - Modified silence skipping to hack around some "S L O W" effects crap
      and a misused break to row effect

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C84

commit 3527875388468d5343c7958d4781f250d4c333d6
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:59:17 2010 +0000

    {11/28/2005 4:51:00 AM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C54

commit 95afd4ca875c3f3983de167afcc7deda682a8c8d
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:59:11 2010 +0000

    {11/20/2005 7:14:42 PM~11/20/2005 7:14:44 PM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C50

commit dae50fa2a1a66a8658827483bdc8a7aae48e019b
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:59:05 2010 +0000

    {11/6/2005 9:04:04 PM}Added generic RIFF module handler and AM/AMFF format readers

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C46

commit 8b2fadaf5a88171d9d94782c9a28e45f4ed10c92
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:59:03 2010 +0000

    {10/30/2005 1:56:28 AM~10/30/2005 1:56:40 AM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C43

commit 9db1273c6431216946c2c30e71e2c90859635744
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:58:43 2010 +0000

    {10/13/2005 2:19:30 AM~10/13/2005 2:22:22 AM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C22

commit b844f7ce65c15ee70426640de1802ba97d409dec
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:58:42 2010 +0000

    {10/13/2005 1:58:16 AM}Arpeggio fix for FastTracker 2 bug

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C21

commit ef97e29d06fdf5c3b9584eeacee58fd0914a0007
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:58:42 2010 +0000

    {10/12/2005 5:04:42 PM}Emit format version info

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C20

commit f9fef91057834185b03a4cf8418bdf859b72b092
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:58:42 2010 +0000

    {10/12/2005 4:52:14 PM}XM format v1.02 and v1.03 support

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C19

commit 9acd29b47bd6aaae698e958bc1f4906ead27e2cb
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:58:41 2010 +0000

    {10/11/2005 4:36:06 PM}Partial XM format v1.02 implementation ( incomplete )

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C15

commit 00b26550e65da3350f684ebc19be57050a2cca1a
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:58:41 2010 +0000

    {10/11/2005 4:16:34 PM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C14

commit 61d10a21c142cb717bc25f03d5772b3cb4e09529
Author: Chris Moeller <kode54@gmail.com>
Date:   Mon Jan 11 08:58:33 2010 +0000

    {10/11/2005 3:57:38 PM~10/11/2005 3:58:38 PM}

    git-tfs-id: [http://localhost:8080/tfs/DefaultCollection/]$/foobar2000/files/plugins.root;C13
2015-03-07 23:10:08 -06:00
Edoardo Prezioso
d880b84ea0 - Fixed build with FMOD 4.40.x-4.42.x.
The 'Prologic' speakermode enumeration is removed since 4.40, not 4.44.
This makes possible to build it on linux x64, as the latest version of FMOD which has the dedicated linux64 download link is 4.42.
2015-02-27 15:24:22 +01:00
Randy Heit
a69a06c249 Enable underwater effect for FMOD 4.36+
- The FMOD_DSP_TYPE_REVERB unit was removed in FMOD 4.36. It has been
  replaced by a FMOD_DSP_TYPE_SFXREVERB unit, which is what should have
  been used in the first place.
2015-02-26 21:52:03 -06:00
Randy Heit
410d3007d3 Allow building with FMOD 4.34 2015-02-26 18:49:10 -06:00
Randy Heit
775e33ede7 Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/g_doom/a_archvile.cpp
	src/g_shared/a_morph.cpp
	src/p_enemy.h
	src/p_local.h
	src/p_mobj.cpp
	src/sc_man_tokens.h
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_exp.h
	src/thingdef/thingdef_expression.cpp
	src/thingdef/thingdef_states.cpp
	wadsrc/static/actors/actor.txt
2015-01-29 20:53:08 -06:00
Chris Robinson
1d20152aee Fix an errant use of FMODMIDIDevice 2015-01-15 13:25:02 -08:00
Chris Robinson
a8348b13de Merge remote-tracking branch 'zdoom/master' into openal
Conflicts:
	output_sdl/CMakeLists.txt
	src/namedef.h
2015-01-15 13:08:05 -08:00
Randy Heit
b5e4153c78 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/b_think.cpp
	src/g_doom/a_doomweaps.cpp
	src/g_hexen/a_clericstaff.cpp
	src/g_hexen/a_fighterplayer.cpp
	src/namedef.h
	src/p_enemy.cpp
	src/p_local.h
	src/p_mobj.cpp
	src/p_teleport.cpp
	src/sc_man_tokens.h
	src/thingdef/thingdef_codeptr.cpp
	src/thingdef/thingdef_function.cpp
	src/thingdef/thingdef_parse.cpp
	wadsrc/static/actors/actor.txt
	wadsrc/static/actors/constants.txt
	wadsrc/static/actors/shared/inventory.txt

- Added register reuse to VMFunctionBuilder for FxPick's code emitter.
- Note to self: Need to reimplement IsPointerEqual and CheckClass, which
  were added to thingdef_function.cpp over the past year, as this file no
  longer exists in this branch.
2014-12-21 21:15:11 -06:00
Randy Heit
2d87eb0ba2 Merge branch 'master' into gonesolong
Conflicts:
	src/CMakeLists.txt
	src/actor.h
	src/g_heretic/a_hereticmisc.cpp
	src/g_heretic/a_hereticweaps.cpp
	src/g_heretic/a_ironlich.cpp
	src/info.h
	src/namedef.h
	src/p_buildmap.cpp
	src/p_enemy.cpp
	src/p_map.cpp
	src/p_mobj.cpp
	src/thingdef/thingdef_codeptr.cpp
	zdoom.vcproj
2014-12-20 19:13:14 -06:00
alexey.lysiuk
7d231c3008 Removed unnecessary SDL #include's 2014-12-16 22:56:09 +02:00
alexey.lysiuk
fd85e116e5 Fixed another potential crash in word expansion API
Calling wordfree() may lead to a crash when wordexp_t instance is not zero-initialized
This happened usually on older OS X like 10.5 or 10.6
2014-11-16 10:29:03 +02:00
Christoph Oelckers
e662e4321a - fixed: Creating an OPL MIDI device can fail if no GENMIDI lump is found, and an exception is thrown. We need to handle this exception to prevent an abort. 2014-10-24 22:56:10 +02:00
Chris Robinson
b8e3f99ce6 Merge remote-tracking branch 'zdoom/master' into openal
Conflicts:
	src/s_sound.cpp
2014-09-22 18:24:55 -07:00
Christoph Oelckers
4be9a71636 - fixed: The VOC reader didn't advance the read index correctly. 2014-09-15 11:32:40 +02:00
Chris Robinson
4b68891de7 Rename 'near', because microsoft 2014-09-14 11:15:32 -07:00
Chris Robinson
ce678caab6 Include algorithm for std::min/max 2014-09-13 11:51:53 -07:00
Chris Robinson
1baf355ecd Use the properly-sized type for ssize_t 2014-09-12 19:36:13 -07:00
Chris Robinson
713846f27a Fix use of ssize_t with MSVC 2014-09-12 04:26:54 -07:00
Chris Robinson
ca22f2dd3f Fix a PrintMidiDevice call 2014-09-11 14:16:56 -07:00
Chris Robinson
ff6eb6df5c Merge remote-tracking branch 'zdoom/master' into openal
Conflicts:
	src/s_sound.cpp
2014-09-09 14:45:53 -07:00
alexey.lysiuk
51d7340288 Fixed crash on music volume change when no track is played using FluidSynth device 2014-08-23 16:35:05 +03:00
Chris Robinson
e8233d7e87 Merge remote-tracking branch 'zdoom/master' into openal 2014-07-16 08:31:12 -07:00
Chris Robinson
d43226631d Set reverb density based on the environment size 2014-07-15 23:04:53 -07:00
Braden Obrzut
fa5dfe79ae - Disable cubic and spline resamplers on 64-bit with fmod 4.26 since they crash. 2014-07-15 21:07:07 -04:00
Chris Robinson
90fa215da2 Replace another std::vector with a TArray 2014-06-28 23:30:58 -07:00
Chris Robinson
ae95a2d5cf Fix creating effect map entries
TMap apparently doesn't clear the memory for new entries like std::map...
2014-06-28 05:41:11 -07:00
Chris Robinson
7f3be7bf14 Show the name of unsupported sound formats with OpenAL 2014-06-28 01:25:25 -07:00
Chris Robinson
afcada4a3b Remove an unused field 2014-06-28 00:46:45 -07:00
Chris Robinson
7908116fef Use a separate function to update an openal stream's volume 2014-06-28 00:37:12 -07:00
Chris Robinson
c73d97af44 Use TArray and TMap instead of std::vector and std::map 2014-06-28 00:33:15 -07:00
Chris Robinson
6f8545e694 Use a TArray for SoundDecoder::readAll 2014-06-27 21:51:05 -07:00
Chris Robinson
a16f9d061c Work around a libsndfile bug related to converting float samples to shorts
Do the conversion ourselves to ensure it's properly clamped.
2014-06-27 01:29:34 -07:00
Chris Robinson
1a40c95f84 Rename some FMOD references to be generic sound system
Since they relates to other sound backends as well, there's no need to single
out FMOD in these places.
2014-06-26 16:58:18 -07:00
Chris Robinson
0adfdf31dd Fix calling SetPosition when not playing 2014-06-25 21:50:52 -07:00
Chris Robinson
a6900b48ba Use AL_SOFT_deferred_updates to sync updates when availeble 2014-06-25 21:48:13 -07:00
Chris Robinson
c6bb52c866 Get the length from sounds when possible 2014-06-25 21:14:35 -07:00
Chris Robinson
fd25ec2a62 Implement GetPosition for OpenAL streams, and display it in the stats 2014-06-25 20:03:24 -07:00
Chris Robinson
3d33f565a4 Use a proper, more unique, pointer formatter for the open callback 2014-06-25 17:10:17 -07:00
Chris Robinson
7f5b538110 Implement SetPosition for OpenAL streams 2014-06-25 04:59:18 -07:00
Chris Robinson
9c12abeb2d Better report the amount buffered in an OpenAL stream 2014-06-25 04:53:08 -07:00
Chris Robinson
0017e1e6e8 Use a FileReader to handle music resources and audio decoding
Instead of the previous method where there'd be a filename and offset, and/or a
memory pointer, this uses a class to access resource data regardless of its
underlying form.
2014-06-25 04:25:36 -07:00
Chris Robinson
075c5d872d Always use the pitch multiplier when underwater 2014-06-22 22:22:45 -07:00
Chris Robinson
b2f9430fb1 Use the correct diffusion value for reverb
I don't know what the Density and Diffusion values correspond to, but
EnvDiffusion is the actual diffusion setting.
2014-06-22 19:38:47 -07:00
Chris Robinson
a434af92ee Handle sounds marked as 'area sounds'
Note, the area radius is 128 units for it to actually do something, unlike FMOD
where it's only 32.
2014-06-22 19:35:09 -07:00
Chris Robinson
845e369b87 Don't set a room rolloff factor
The reverb engine already handles an initial attenuation based on the
attenuation of the dry path.
2014-06-20 05:03:20 -07:00
Chris Robinson
f0c9aae670 Rework manual rolloff handling
For distance models OpenAL doesn't handle, alter the source's distance to get
the appropriate attenuation instead of the source's gain.
2014-06-20 04:38:48 -07:00
Chris Robinson
ef7ce41d07 Don't purge sources in an initial state 2014-06-20 01:17:48 -07:00
Chris Robinson
fb07f7ef07 Cast OpenAL IDs to/from void* 2014-06-20 01:12:47 -07:00
Chris Robinson
906b828d87 Partially implement OpenALSoundRenderer::SetInactive 2014-06-20 00:41:19 -07:00
Chris Robinson
42fdc3c059 Use structs to store available extensions 2014-06-19 23:49:46 -07:00
Chris Robinson
0f234fb36d Remove an unused function 2014-06-19 23:10:36 -07:00
Chris Robinson
4f6861d798 Move specific decoder classes to separate headers 2014-06-19 23:03:13 -07:00
Chris Robinson
e2708c8b3e Cleanup creating decoders 2014-06-19 22:46:46 -07:00
Chris Robinson
9f493fca5f Move the generic DecodeSample implementation to the base class 2014-06-19 22:42:12 -07:00
Chris Robinson
72ddc0d935 Remove a non-existent friend class 2014-06-19 22:33:39 -07:00
Chris Robinson
a661797aa8 Be less noisey about loop points 2014-06-19 22:31:19 -07:00
Chris Robinson
73d8659f23 Remove an unnecessary cast 2014-06-19 22:21:05 -07:00
Chris Robinson
07a50c604e Use the correct formatter type 2014-06-19 22:13:20 -07:00
Chris Robinson
e39165655d Don't call the sfx volume cvar callback in the OpenALSoundRenderer constructor
I_InitSound already does that after creating it.
2014-06-19 21:51:16 -07:00
Chris Robinson
364065f121 Handle file sources with mpg123 2014-06-19 20:14:16 -07:00
Chris Robinson
1310a4a814 Fix libsndfile file handler 2014-06-19 18:35:12 -07:00
Chris Robinson
eeae36fbf7 Rename the decoder sources 2014-06-19 17:53:37 -07:00
Chris Robinson
b1c98acf33 Close the file handle in the sndfile decoder 2014-06-19 17:50:03 -07:00
Chris Robinson
73d51a4446 Check for ID3 tags in MPG123Decoder::open 2014-06-19 17:19:59 -07:00
Chris Robinson
77b1febd0e Add an mp3 decoder using libmpg123
Does not currently handle direct file sources
2014-06-19 06:40:27 -07:00
Chris Robinson
14618cbf30 Remove use of SDL_sound 2014-06-19 04:33:00 -07:00
Chris Robinson
b38589e2dc Implement and use a libsndfile decoder 2014-06-19 04:13:42 -07:00
Chris Robinson
5370a1cb46 Add a SoundDecoder base class and a stub method to create one 2014-06-19 01:00:46 -07:00
Chris Robinson
b94a2949e5 Don't use air absorption for being underwater 2014-06-18 23:41:45 -07:00
Chris Robinson
34c9a47435 Fix some typos 2014-06-17 23:11:19 -07:00
Chris Robinson
7ff7c151a8 Merge remote-tracking branch 'origin/master' into openal
Conflicts:
	src/CMakeLists.txt
2014-06-15 12:04:15 -07:00
Chris Robinson
0e21057a2a Merge remote-tracking branch 'origin/openal' into openal
Conflicts:
	src/sound/fmodsound.cpp
	src/sound/oalsound.cpp
	src/sound/oalsound.h
2014-06-15 09:59:24 -07:00
Chris Robinson
160e70f8f2 Fix getting the actual device name 2014-06-15 09:27:00 -07:00
Randy Heit
8b02bb55aa Fix compiling with FMOD 4.36
- That stuff I thought that went poof in FMOD Ex 4.37 was apparently
  already gone in 4.36.
2014-01-30 20:30:40 -06:00
Braden Obrzut
d8ff4ec281 - Fixed: All clang 5.0 warnings.
- Renamed autostart/autozend since Xcode’s build process links in strictly alphabetical order.
2014-01-05 19:50:09 -05:00
Christoph Oelckers
7cb70f60b3 - removed duplicate #define warning in fmodsound.cpp.
- commented out output of Cr0NpxState for floating point state because this variable was renamed in most recent Windows headers.
- added CMAKE option to generate assembly output for release builds.
- added my CMake-based project directory to .gitignore.
2013-11-28 11:03:19 +01:00
Braden Obrzut
f0b946c3cf - Allow use of system GME library. It defaults to forcing the use of the internal library at least for now though. 2013-11-06 13:37:34 -05:00
Braden Obrzut
2142e857a9 - Applied VoidMage's OpenAL patch. 2013-10-23 19:41:58 -04:00
Braden Obrzut
97d7b1e59e Merge branch 'origin/maint'
Conflicts:
	src/sound/fmodsound.cpp
2013-10-23 19:39:22 -04:00
Christoph Oelckers
bba092cc0b Merge branch 'master' into scripting
Conflicts:
	src/d_player.h
	src/g_doom/a_archvile.cpp
	src/thingdef/thingdef.h
	src/thingdef/thingdef_properties.cpp
2013-08-09 13:03:28 +02:00
Edoardo Prezioso
4ce0574b3f - Use a more conformant C++ preprocessor macro identifier for Unix systems.
The 'unix' identifier isn't defined when '-std' is passed to the compiler (tested with gcc and clang), so use '__unix__' which is well enough documented.
2013-07-30 11:46:14 +02:00
Randy Heit
9c86f1c220 Merge branch 'master' into scripting for plugged userinfo memory leak
Conflicts:
	src/d_player.h
	src/p_interaction.cpp
	src/thingdef/thingdef_codeptr.cpp
2013-07-23 21:01:13 -05:00
Christoph Oelckers
db562142f0 - Fix c++11 literal suffix warnings / patch by Edward-san. 2013-07-22 22:25:44 +02:00
Chris Robinson
665d685a44 Implement GetStats for OpenAL streams 2013-06-30 20:31:41 -07:00
Chris Robinson
68988ab93c Handle S8 and U16 samples from SDL_sound 2013-06-30 08:16:49 -07:00
Chris Robinson
c4492f88ee Make sure streams are "pumped" 2013-06-30 08:04:41 -07:00
Chris Robinson
ba3cc38d09 Support float stream callbacks with AL_EXT_FLOAT32 2013-06-30 08:04:08 -07:00
Chris Robinson
69af01d629 Use SDL_sound when available to decode files 2013-06-30 07:45:57 -07:00
Chris Robinson
99209c4a2a Remove an unnecessary function 2013-06-30 04:47:10 -07:00
Chris Robinson
5d1cd7b7fe Small fixups
find -> std::find
AL_EXT_loop_points -> AL_SOFT_loop_points
2013-06-30 01:32:48 -07:00
Chris Robinson
4f2e367ec6 Remove GStreamer support 2013-06-30 01:07:09 -07:00
Chris Robinson
b31a729ab8 Fix compilation with OpenAL 2013-06-29 22:44:46 -07:00
Chris Robinson
18597a93a7 Merge remote-tracking branch 'origin' into openal
Conflicts:
	src/sound/fmodsound.cpp
2013-06-29 19:02:04 -07:00
Randy Heit
4deeb8d8ae Merge branch 'master' into scripting
Conflicts:
	src/actor.h
	src/g_doom/a_doomweaps.cpp
	src/p_local.h
	src/p_map.cpp
	src/sdl/i_main.cpp
	src/thingdef/thingdef_codeptr.cpp
2013-06-25 19:28:25 -05:00
Christoph Oelckers
a6ba2ce8b9 - added DavidPH's patch for compiling with FModEx 4.44.01. 2013-06-23 18:47:39 +02:00
Randy Heit
459ad5abff - Updated scripting branch to latest version in trunk.
SVN r4337 (scripting)
2013-06-07 03:31:30 +00:00
Randy Heit
1b9c71b252 - Added S_ChangeSoundVolume() to change the volume of an already playing sound, accessible
through the new ACS function SoundVolume.

SVN r4318 (trunk)
2013-06-01 17:46:50 +00:00
Randy Heit
612d16e11c - Added Oktalyzer loading support to ZDoom.
SVN r4081 (trunk)
2013-02-08 00:25:30 +00:00
Randy Heit
f45c624769 - Changed default FluidSynth reverb and chorus parameters to the ones suggested here: http://forums.scummvm.org/viewtopic.php?p=72972&sid=d139e99a13359541ead07073112e3888#72972
SVN r3995 (trunk)
2012-12-21 23:59:55 +00:00
Randy Heit
3123925fa8 - Fixed: Changing fluid_chorus and fluid_reverb did not take effect until the next song started.
SVN r3994 (trunk)
2012-12-21 23:58:33 +00:00
Randy Heit
849f30daab - Changed synth.chorus.active and synth.reverb.active settings to use fluid_settings_setint(),
since they're int and not string settings.
- Fixed: FluidSynthMIDIDevice::FluidSettingInt() interpreted the return value from fluid_settings_setint() wrongly.

SVN r3993 (trunk)
2012-12-21 23:22:59 +00:00
Randy Heit
93bd380fee - Optimize the Java-based OPL3 emulator some by not calling expensive math functions liberally during the rendering loop.
SVN r3968 (trunk)
2012-11-16 06:27:03 +00:00
Randy Heit
e59d7bc8b8 - Since we have two OPL cores now, what's one more? Added a straight, (highly) unoptimized port
of the Java OPL3 emulator.

SVN r3967 (trunk)
2012-11-15 05:23:24 +00:00
Randy Heit
3ec387ac32 - Renamed opl_stereo to opl_fullpan, since DOSBox's core is emulating an OPL3, which is stereo
but only supports three pan positions and not the full 127 MIDI pan positions.
- Added opl_core cvar to select emulator core. 0 is MAME and 1 is DOSBox.
- Added DOSBox's LGPL OPL core, distantly related to one adlibemu.c written by Ken Silverman
  (not to be confused with the ancient MAME-derived and GPL-licensed core also found in DOSBox).
  I believe this corresponds to their "compat" emulator, but I'm not sure.

SVN r3946 (trunk)
2012-11-08 05:45:58 +00:00
Randy Heit
12ee3271c4 - Replaced the opl_onechip cvar with opl_numchips. You can now emulate up to 8 of them for MIDI
playback. (Raw OPL playback will still clamp it to 2, since there's no use for more than that
  with any of the raw OPL formats.)

SVN r3945 (trunk)
2012-11-06 06:10:04 +00:00
Randy Heit
3b0ad55285 - Since our OPL chips are emulated, we can give them a feature that real OPL2 chips lacked:
Full stereo panning for the MIDI player. (The raw OPL players are unaffected.) To get the
  mono output back, you can set opl_stereo to false.
- Changed SoftSynthMIDIDevice::OpenStream() to allocate the same number of samples for stereo
  and mono streams.

SVN r3929 (trunk)
2012-11-02 03:25:50 +00:00
Randy Heit
4f71176ed6 - Support loading either fluidsynth.dll or libfluidsynth.dll on Windows.
SVN r3927 (trunk)
2012-11-01 03:01:04 +00:00
Randy Heit
e7efa1d802 - Update to latest version in trunk.
SVN r3890 (scripting)
2012-10-17 04:24:54 +00:00
Randy Heit
3ddac32b4f - Because setting a DSP unit inactive completely ceases all processing on it, including timing,
sounds queued up while the Channel Group Target Unit is inactive will all play at the same time
  once the unit is made active. To avoid this, it is now only deactivated when the gamestate is
  GS_LEVEL. Otherwise, it just gets muted. Fixes http://forum.zdoom.org/viewtopic.php?f=2&t=33592 "Strife voices overlap"

SVN r3818 (trunk)
2012-08-10 03:49:50 +00:00
Randy Heit
6e81216bbd - Fixed: The softsynths did not reset the tempo to its initial value when restarting a song.
SVN r3804 (trunk)
2012-08-04 02:14:32 +00:00
Randy Heit
26f9540d3c - Fixed: I missed a nuance of the MIDI spec when writing MIDIStreamer::CreateSMF(): Running status
is supposed to be canceled by sysex events and meta events. This confused FMOD when the
  resulting song used used running status right after these events.

SVN r3803 (trunk)
2012-08-04 01:42:49 +00:00
Randy Heit
12ef53a2ff - snd_midipatchset and fluid_patchset are now processed through NicePath() for variable
substitution. In addition, on Windows, if they contain no path separator, they will
  automatically have $PROGDIR prepended to them.

SVN r3781 (trunk)
2012-07-21 03:46:36 +00:00
Randy Heit
562cf04db2 - Update scripting branch to trunk.
SVN r3758 (scripting)
2012-07-14 03:04:41 +00:00
Randy Heit
fd784b05c2 - Fix some GCC 4.7.1 warnings.
SVN r3747 (trunk)
2012-07-07 03:43:11 +00:00
Randy Heit
a85b751f7a - Fix warnings warned by GCC.
SVN r3552 (trunk)
2012-04-11 04:44:12 +00:00
Randy Heit
d6c3d77a38 - Fixed: Stereo sound volume reduction should only be done for stereo sounds played in 3D. Head-
relative ones should remain full volume.

SVN r3540 (trunk)
2012-04-08 04:57:59 +00:00
Randy Heit
bff5a9b8d8 - Fixed: Trying to init FMOD with profiling enabled when the network socket was in use would fail.
We now fallback to no profiling when this happens.

SVN r3468 (trunk)
2012-03-22 22:40:30 +00:00
Randy Heit
cd122f944b - Similar fix to the previous: The child TiMidity++ process quitting would not necessarily be
detected, so S_ChangeMusic() would not restart one-shot songs that had finished if it was
  the MIDI device.

SVN r3463 (trunk)
2012-03-22 21:23:18 +00:00
Randy Heit
78d28dedda - Fixed: S_ChangeMusic() would not necessarily restart non-looping songs that had finished playing.
SVN r3462 (trunk)
2012-03-22 21:09:20 +00:00
Randy Heit
ce43552ebb - Use _exit() instead of exit() when Timidity++ cannot be execed, because
exit() can (and does) make the process hang. (It sure would be nice if
  POSIX-land had a simple CreateProcess API, but I guess that would be too
  easy, huh?)



SVN r3432 (trunk)
2012-03-12 04:05:15 +00:00
Randy Heit
162ad601ba - Fixed bug introduced in r3412: The SetStyle() call needs to come after the scissoring check,
because the latter can flush the quads, including the one SetStyle() just set a style for.

SVN r3429 (trunk)
2012-03-12 01:22:19 +00:00
Randy Heit
f94b38fd7f - Fixed: The softsynths could get stuck on the last notes of nonlooping songs.
SVN r3426 (trunk)
2012-03-11 04:30:35 +00:00
Randy Heit
957f67f7cc - Fixed: FMOD as MIDI device always looped the song, even when it shouldn't (such as the title music).
SVN r3425 (trunk)
2012-03-11 03:56:20 +00:00
Randy Heit
9457a1b3f8 - So, apparently the XMIDI library uses a fixed 120 Hz clock for MIDI events. As a result, we
should ignore any tempo events in XMIDI songs that were left over from the original MIDI
  files, since the converter didn't remove them.

SVN r3384 (trunk)
2012-02-23 02:22:56 +00:00
Randy Heit
c3dba9ca9a - Added writemidi console command. If the currently playing song is a MIDI variant, this will
write it to disk.

SVN r3383 (trunk)
2012-02-22 03:28:33 +00:00
Randy Heit
d3ad8ca3d8 - Fixed: XMISong::ProcessInitialMetaEvents() did not set the Division for tempo events. (Why
does XMI modify the division based on the tempo?)

SVN r3382 (trunk)
2012-02-22 02:05:12 +00:00
Randy Heit
170284ad57 - Added Gez's HMI/XMI division fixes, and partially the XMI tempo fix (not currently used).
SVN r3377 (trunk)
2012-02-21 20:19:25 +00:00
Randy Heit
ebd115e7ca - Removed snd_3dspread, because it totally does not do what I want. I was using it to preserve
some of the stereoness of stereo sounds played in 3D. My testing was done only with stereo
  speakers, however, and I did not realize that it was moving the perceived physical location
  of the sound itself (because it sounded fine with my two speakers). So when 3D spread started
  working with mono sounds as well in FMOD 4.28, sound positioning was completely broken for
  everything when outputting to more than two speakers, because sounds were being spread
  across a 180 degree arc.

  Whoops!

  Stereo sounds are now completely mono when not played by you, the listener.

SVN r3357 (trunk)
2012-02-14 03:15:13 +00:00
Randy Heit
68fbd75897 - Fixed compilation with FMOD 4.38+. The removal of hardware voices and EAX was a fairly
major change, so I'm making no provisions for using older FMOD DLLs when compiled with the
  4.38 API. However, sound positioning is still broken like in 4.28, so you are recommended
  to continue building with 4.26. Also, the Freeverb-based DSP unit is no longer present in
  FMOD, so the underwater effect is currently unavailable when using 4.38 until I can figure
  out how to make it work with the SFX Reverb unit instead. (And on that topic, the Freeverb
  DSP was officially only for stereo outputs, so I really shouldn't have been using it in the
  first place.)
- Since I would like to eventually figure out the sound positioning issues with the newer
  FMODs, the following have been added:
  * snd_drawoutput now labels its outputs with the speakers they represent.
  * DCanvas::DrawTextA was added as an alias for DrawText, since the Windows headers #define
    DrawText to a Unicode/non-Unicode variant.
  * The loopsound console command was added to spawn an actor at the player's location and
    have it loop a sound infinitely.
  Hopefully I can figure it out. FMOD's 3D example works, so I assume the problem lies with
  my code, though I don't really know where to begin looking for the problem.

SVN r3350 (trunk)
2012-02-10 00:53:50 +00:00
Randy Heit
c12538c346 - Fixed crash when trying to play a MIDI file with no notes.
SVN r3294 (trunk)
2011-09-14 23:34:28 +00:00
Braden Obrzut
5c81cf20ba - Merged r1236, r1237, and r1240 of GZDoom.
SVN r3279 (trunk)
2011-08-14 23:53:20 +00:00
Braden Obrzut
f42358ad08 - Backported FMOD Ex 4.34 fixes from gzdoom-macosx. (With changes to continue to allow compilation with 4.22-4.28.)
SVN r3278 (trunk)
2011-08-13 21:11:09 +00:00
Christoph Oelckers
f84368677a - updated OpenAL branch.
SVN r3269 (openal)
2011-07-08 22:00:23 +00:00
Randy Heit
1579fd1c1c - Fixed: Selecting TiMidity++ as a MIDI device without a working timidity.exe, then switching to a different MIDI device would leave music silent until a new song was started.
(The discrepancy between mus_playing.handle and currSong is one which should probably be handled properly at some point.)

SVN r3212 (trunk)
2011-05-20 00:26:22 +00:00
Randy Heit
37b7595db7 - Oh my goodness, maybe I need to try compiling things before committing them!
SVN r3181 (trunk)
2011-04-14 21:48:48 +00:00
Randy Heit
dd5e8e9333 - Add fix for MUS volume controller changes with 8-bit values.
SVN r3180 (trunk)
2011-04-14 16:29:57 +00:00
Randy Heit
d3b44a4172 - Fix errors/warnings from MinGW 4.5.0 (tdm-1).
- Disable the missing field initializers warnings that -Wextra produces from GCC.

SVN r3173 (trunk)
2011-03-29 05:20:33 +00:00
Christoph Oelckers
1993e969b7 - GCC warning fixes (GCC stupidity for the most part.)
SVN r3154 (trunk)
2011-02-19 08:59:43 +00:00
Randy Heit
869b9c9ccc - Fixed: FMODSoundRenderer::DrawWaveDebug() only allocated enough space for the wavearray based
on the window_size, so for large numbers of output channels, it would not allocate enough
  space for the spectrum data (which is definied by SPECTRUM_SIZE, not the window_size) and
  write junk on the stack when drawing the spectrums, causing a crash.

SVN r3087 (trunk)
2011-01-02 18:11:48 +00:00
Christoph Oelckers
dff4553663 - fixed: When playing non-looping songs GMESong::Read could return without releasing the critical section.
SVN r2988 (trunk)
2010-11-07 14:25:08 +00:00
Christoph Oelckers
f3d05e2699 - applied Chriss OpenAL patch to make it uzable without GStreamer.
SVN r2984 (openal)
2010-11-07 07:17:57 +00:00
Randy Heit
4a9892725d - Use the so-called SafeTerminateProcess() function to kill the child TiMidity++ process instead
of signaling an event. I would have preferred to use GenerateConsoleCtrlEvent(), but since it
  requires the caller be attached to the same console as the process it wants to kill, it's
  pretty much worthless. We will continue to look for the presence of the event name in the
  TiMidity++ binary despite no longer using it, because standard TiMidity++ builds do not write
  to stdout in binary mode on Windows systems.

SVN r2980 (trunk)
2010-11-04 03:47:49 +00:00
Christoph Oelckers
7068c1df48 - added a ResetEvent call in case that Timidity++ did not react to signalling the KillerEvent.
SVN r2942 (trunk)
2010-10-14 14:40:26 +00:00
Braden Obrzut
394a37421a - NULL pointer checks in music_pseudo_mididevice.cpp to prevent crashes on startup if fmod fails to play a midi.
SVN r2927 (trunk)
2010-10-09 04:37:31 +00:00
Christoph Oelckers
0490c35347 - added Edward-san's improvements for changemus command.
SVN r2902 (trunk)
2010-10-05 22:35:59 +00:00
Christoph Oelckers
5ff3b3f329 - added Gez's VOC loader.
SVN r2901 (trunk)
2010-10-05 22:31:22 +00:00
Braden Obrzut
f26e65e550 - Fixed Linux compilation errors. (I'm not too sure what I was supposed to do with PrepTimidity() though.)
SVN r2882 (trunk)
2010-10-02 16:49:44 +00:00
Christoph Oelckers
d3ca1fddcc - added new action special Ceiling_LowerAndCrushDist. It's similar to Ceiling_LowerAndCrush but allows to explicitly set the distance from the floor where the ceiling stops moving. This is used to remove the special behavior for Strife from the code that unlike the other games moved the ceiling to the floor, not to 8 units above it.
SVN r2881 (trunk)
2010-10-02 16:26:10 +00:00
Christoph Oelckers
6d78ff3469 - Backported GZDoom revisions 1018-1019: Fixed spelling of "pseudo" because it bugged me too much. ;)
SVN r2880 (trunk)
2010-10-02 13:49:33 +00:00
Randy Heit
b2b84ad11f - Fixed snd_mididevice so that changing it immediately restarts the song for all devices, not
just Windows system devices.
- Remove SMF generation from i_music.cpp, since the psuedo-MIDI devices do this now.

SVN r2875 (trunk)
2010-10-02 04:12:21 +00:00
Randy Heit
90dd40c58f - Reimplemented TiMidity++ playback so that it also can handle XMI subsongs.
SVN r2874 (trunk)
2010-10-02 03:36:19 +00:00
Randy Heit
fa429ad844 - Fix incorrect parameters to PrintMidiDevice().
- Add music_psuedo_mididevice.cpp to CMakeLists.txt.

SVN r2873 (trunk)
2010-10-02 02:23:42 +00:00
Randy Heit
b6941be55f - Reimplemented FMOD MIDI playback as a psuedo-MIDI device so that it can take advantage of XMI subsongs.
SVN r2872 (trunk)
2010-10-02 02:19:50 +00:00
Christoph Oelckers
5464676603 - cleaned up i_music.cpp.
SVN r2866 (trunk)
2010-09-29 19:29:14 +00:00
Randy Heit
bc08502132 - Pass SMF files through the MIDI conversion process too, to give TiMidity++ and FMOD some
degree of support for songs that use loop controllers to loop the song back to a point after
  the very beginning of the song.
- Enable loops during SMF generation. Infinite loops will be clamped to some finite amount. (This is currently 30, so a 3 minute song will still restart from the very beginning after 90 minutes)
- Fixed: The SMF, HMI, and XMI readers all generated invalid MEVT_NOP events.
- Fixed: SMF generation died on songs that set their tempo during the initial beat.


SVN r2864 (trunk)
2010-09-29 03:35:53 +00:00
Christoph Oelckers
e2c105b447 - fixed: XMI music files were not converted for playback with FMod or Timidity++.
- Was there any reason why the MIDI_GUS device was so well hidden from the user? It sure does not sound broken. Added it to MIDI menu and $mididevice.


SVN r2862 (trunk)
2010-09-29 00:35:47 +00:00
Randy Heit
5a3b3631c3 - Added XMIDI support (including subsongs).
- Moved unaligned accessors into m_swap.h.

SVN r2859 (trunk)
2010-09-28 03:58:41 +00:00
Christoph Oelckers
2d5755a80e - fix GCC warning.
SVN r2858 (trunk)
2010-09-27 22:42:35 +00:00
Randy Heit
4397ef3323 - Added HMP file support.
SVN r2849 (trunk)
2010-09-24 02:46:48 +00:00
Randy Heit
46eebe29a4 - Update the HMI player to use the division information stored in the song and check the full file signature.
SVN r2848 (trunk)
2010-09-23 22:37:25 +00:00
Randy Heit
5871712fd4 - Fixed incorrect definition of FLUID_FAILED when building with DYN_FLUIDSYNTH enabled.
SVN r2818 (trunk)
2010-09-18 02:12:49 +00:00
Randy Heit
99670b708c - Sync scripting branch with what was in trunk on Sunday. I believe that would be revision 2739.
SVN r2790 (scripting)
2010-09-16 03:14:32 +00:00
Christoph Oelckers
d64fcbd01e - applied Chris's latest OpenAL patch.
SVN r2781 (openal)
2010-09-15 13:45:08 +00:00
Christoph Oelckers
5e824ba0e0 - sync OpenAL branch with trunk.
SVN r2780 (openal)
2010-09-15 12:31:18 +00:00
Christoph Oelckers
579502ab74 - merged menu branch back into trunk.
SVN r2768 (trunk)
2010-09-14 17:28:18 +00:00
Braden Obrzut
3dbf807345 - Applied Chris's patch to fix hmi compilation error on Linux.
SVN r2689 (trunk)
2010-09-04 18:21:51 +00:00
Randy Heit
84b9de8c14 - Make sure Tempo is initialized before creating SMFs.
SVN r2684 (trunk)
2010-09-04 02:57:36 +00:00
Randy Heit
070ec75785 - Cleaned up the ugly MIDI song creating code a little.
- Added a generic Standard MIDI File creator that works with any of the sequencers. mus2midi.cpp
  is no longer used but is kept around as a reference.

SVN r2677 (trunk)
2010-09-03 05:08:05 +00:00
Randy Heit
81e21b0688 - Renamed music_midi_midiout.cpp to music_smf_midiout.cpp.
- Moved MIDI precaching logic into MIDIStreamer so that SMF and HMI files can both use the
  same implementation.
- Added a player for HMI midi files.

SVN r2675 (trunk)
2010-09-02 23:17:58 +00:00
Christoph Oelckers
1dd3ecd6e2 - fixed: -nosfx deactivated the entire sound system which also made music inoperable. Changed it so that all it does is block sound effects from being started.
SVN r2621 (trunk)
2010-08-28 13:36:41 +00:00
Christoph Oelckers
eed5812799 - added 'fluidsynth' option for $mididevice command.
SVN r2598 (trunk)
2010-08-26 16:46:01 +00:00
Randy Heit
c058c644a4 - MinGW did not like this assignment in the FluidSynth loader.
SVN r2573 (trunk)
2010-08-24 02:35:10 +00:00
Randy Heit
6f82db47b8 - Merge the shared code for the softsynths into a common base class.
SVN r2560 (trunk)
2010-08-20 04:21:53 +00:00
Randy Heit
eafb0ab7cf - Expose more FluidSynth settings through these cvars:
* fluid_samplerate
  * fluid_threads
  * fluid_reverb_roomsize
  * fluid_reverb_damping
  * fluid_reverb_width
  * fluid_reverb_level
  * fluid_chorus_voices
  * fluid_chorus_level
  * fluid_chorus_speed
  * fluid_chorus_depth
  * fluid_chorus_type

SVN r2559 (trunk)
2010-08-19 23:11:16 +00:00
Randy Heit
a68e9c8fa6 - Added a dlopen() version of on-demand FluidSynth loading and exposed it
to CMake through the DYN_FLUIDSYNTH option.



SVN r2558 (trunk)
2010-08-19 20:46:19 +00:00
Randy Heit
f389cd8b0f - Add on-demand loading for fluidsynth.dll. This also lets you build with FluidSynth support
without actually having the FluidSynth development files installed.

SVN r2557 (trunk)
2010-08-19 16:49:43 +00:00
Randy Heit
2136ef2aba - Also check for CT2MGM.SF2 if CT4MGM.SF2 is not found.
SVN r2556 (trunk)
2010-08-19 15:51:07 +00:00
Randy Heit
2c397b1aac - Add a default search for Creative's CT4MGM.SF2 on Windows if fluid_patchset is unspecified.
- Use fluid_patchset to specify the SoundFont(s) for FluidSynth instead of doubling up with
  snd_midipatchset, which is already used by FMOD.

SVN r2555 (trunk)
2010-08-19 15:46:49 +00:00
Randy Heit
576e597d2b - Increase the fluid_voices default to 128. It apparently has a poor voice cutting algorithm
which is painfully apparent on hexen.wad MAP01's music, which hits around 90 voices.
- Patch from Chris:
  * Add FluidSynth to the menu.
  * Enable FluidSynth for MIDI as well as MUS.
  * Fix CmakeLists.txt.


SVN r2554 (trunk)
2010-08-19 15:31:44 +00:00
Randy Heit
d53ef3f38a - Oops. These changes didn't belong in the repository.
SVN r2547 (trunk)
2010-08-15 20:05:35 +00:00
Randy Heit
ea4ac390d9 - Forgot to include this music_fluidsynth_mididevice.cpp.
SVN r2546 (trunk)
2010-08-15 19:55:40 +00:00
Randy Heit
1fa4bbf69c - Added FluidSynth support as snd_mididevice -5. Only tested with Linux. I will have
to try compiling it myself on Windows to see if it's really that slow or if
  Ubuntu just ships an unoptimized version, because performance is pretty pathetic
  when compared to the other options. (I understand that it's a complete SoundFont2
  renderer, so it is understandably slower than something like TiMidity++, but still.
  Does it really need to be around 10x slower? I played with the chorus, reverb, and
  interpolation settings, and none of them seemed to make much difference in
  performance.)



SVN r2545 (trunk)
2010-08-15 19:54:59 +00:00
Christoph Oelckers
5603c70574 [OpenAL branch]
- apply Chris's latest patch.




SVN r2534 (openal)
2010-08-13 07:07:26 +00:00
Randy Heit
3416a7fc47 - Fix compilation with MinGW + w32api and clean up warnings.
SVN r2505 (trunk)
2010-08-11 03:56:31 +00:00
Randy Heit
c29639426f - Sounds that define a loop no longer play looped by default. They must be started with
CHAN_LOOP so that the higher level sound code knows they loop and can handle them accordingly.
- Added support for a LOOP_BIDI tag. Set it to "1", "On", "True", or "Yes" to use a
  bidirectional loop. This only works with sounds and not music, because music is streamed
  so does not support them.
- Extended custom loop support to work with samples as well as music.

SVN r2434 (trunk)
2010-07-15 23:07:41 +00:00
Randy Heit
99a2014ead - Added support for custom loop points for songs. This does not work with MP3 because of the
way MP3 obfuscates custom tags. Vorbis and FLAC are fine. (I could make it work with MP3,
  but you should be using Vorbis instead.) They are:
  * LOOP_START: Start time for the loop. If omitted, the song repeats from the beginning.
  * LOOP_END: End time for the loop. If omitted, the song loops at the end. (If you need to specify this, why aren't you using a shorter song.)
  You only need to specify one of these tags to set the custom loop. Naturally, you can set
  them both, as well. The format for each tag is the same:
  * If it contains a colon (:), it specifies by time. This may be of the form 00:00:00.00
    (HH:MM:SS.ss) to specify by play. Various parts may be left off. e.g. To start the loop
    at 20 seconds in, you can use ":20", 0:20", "00:00:20", ":20.0", etc. Values after the
    decimal are fractions of a second and accurate to one millisecond.
  * If you don't include a colon but just have a raw number, then it's the number of PCM
    samples at which to loop.
  * Any characters other than digits (0-9), colons (:), or a single decimal point for the
    seconds portion will result in the tag being ignored.

SVN r2424 (trunk)
2010-07-10 02:59:34 +00:00
Randy Heit
503b934938 - Added better error messages for MIDI playback failure than just "MIDI playback failure".
SVN r2383 (trunk)
2010-06-20 04:41:23 +00:00
Randy Heit
08b931006f - Reverted accidental change to fmodsound.cpp from revision 2273.
SVN r2282 (trunk)
2010-04-17 01:55:33 +00:00
Randy Heit
2772786a7e - Added MUS header scan to mus2midi.
- Fixed buffer overflow when reading a MUS song from a compressed file.

SVN r2274 (trunk)
2010-04-07 02:02:53 +00:00
Randy Heit
114412d5a2 - Search for the MUS header within the first 32 bytes of the song so that the music in
diescum.wad works.

SVN r2273 (trunk)
2010-04-06 03:12:32 +00:00
Randy Heit
7bd741a644 - Fixed compiling with FMOD Ex 4.30.00. I get no 3D sound effects, and it's crashing on me, too.
Am I doing something wrong?

SVN r2271 (trunk)
2010-04-04 17:48:26 +00:00
Randy Heit
42ac75e894 - Sync scriptbranch with trunk.
SVN r2269 (scripting)
2010-04-04 04:09:24 +00:00
Christoph Oelckers
a6a303f438 - fix division by 0.
SVN r2243 (trunk)
2010-03-25 23:29:41 +00:00
Randy Heit
6c63ce51e4 - Fixed: The listener used a different coordinate system than sounds, which meant that sounds
were never made head-relative, so stereo effects would disappear if they were played by
  the listener.

SVN r2231 (trunk)
2010-03-18 21:54:24 +00:00
Randy Heit
740d52cf5b - Added support for Blood's SFX loop start markers.
SVN r2221 (trunk)
2010-03-18 04:26:22 +00:00
Randy Heit
758327f4b3 - Fixed: snd_musicvolume needs to check GSnd for NULL, since somebody might have set an
atexit for it, which gets executed after the sound system shuts down.
- Fixed: FPlayList::Backup() failed to wrap around below entry 0 because Position is
  unsigned now.

SVN r2188 (trunk)
2010-03-05 03:11:10 +00:00
Randy Heit
913555aa4e - Synced the scripting branch with trunk.
SVN r2166 (scripting)
2010-02-17 04:46:11 +00:00
Randy Heit
739e684549 - Converted all action functions be directly callable by the VM (though they are not yet
usable).

SVN r2154 (scripting)
2010-02-12 06:04:57 +00:00
Randy Heit
5125e11d25 - Do not call midiOutSetVolume() when playing with the "Microsoft GS Wavetable Synth" on
Vista and above, because it doesn't do what you expect.

SVN r2136 (trunk)
2010-01-26 05:11:04 +00:00
Christoph Oelckers
9aa1e20c77 - Added Blzut3's Solaris patch.
SVN r2070 (trunk)
2010-01-01 09:21:04 +00:00
Randy Heit
51eb6465a2 - Fixed two bugs in FMODSoundRenderer::HandleChannelDelay():
* Looping sounds that have been playing for a very long time, were evicted,
    and then were restarted need to have their positions clamped to lie
    within the bounds of the sounds. If we try to set a start position very
    far beyond the end, it will overflow inside FMOD and not work.
  * A start time of 0 is not actually valid and means the sound was never
    assigned a start time.
- The latter bug also reveals a problem with starting looped sounds evicted:
  They need to be assigned a start time so if they should have the opportunity
  to start later, they will be properly synchronized.


SVN r1987 (trunk)
2009-11-18 04:45:20 +00:00
Randy Heit
de8ec46c06 - Fixed: R_GetOneSkyColumn() and R_GetTwoSkyColumns are mulscaling an
unsigned integer that can use all 32 bits. They must therefore use
  the unsigned mul instruction rather than the signed imul instruction.
- Fixed several signed/unsigned comparison and possibly uninitialized
  variable warnings flagged by GCC.


SVN r1965 (trunk)
2009-11-08 02:51:22 +00:00
Randy Heit
fb74d9b1ec - Added virtual status and audibility to the noise debug display.
SVN r1961 (trunk)
2009-11-04 02:07:39 +00:00
Randy Heit
50b0340a56 - Fixed: S_EvictAllChannels() must replace the channel's start time with its
position when evicting sounds, because restarting the sound system causes
  the DSP clock to restart at 0, so start times that were recorded before
  the reset are no longer applicable after the reset.
- Fixed: S_StopChannel() always set the channel's actor to NULL, eliminating
  origin information when resetting the sound system.


SVN r1949 (trunk)
2009-10-30 02:18:07 +00:00
Randy Heit
33a397c04b - Basic Mac support: Everything compiles but does not yet link.
SVN r1780 (trunk)
2009-09-01 02:08:53 +00:00
Randy Heit
732a44b338 - Fixed: M_QuitResponse() tried to play a sound even when none was specified
in the gameinfo.
- Added Yes/No selections for Y/N messages so that you can answer them
  entirely with a joystick.
- Fixed: Starting the menu at the title screen with a key other than Escape
  left the top level menu out of the menu stack.
- Changed the save menu so that cancelling input of a new save name only
  deactivates that control and does not completely close the menus.
- Fixed "any key" messages to override input to menus hidden beneath them and
  to work with joysticks.
- Removed the input parameter from M_StartMessage and the corresponding
  messageNeedsInput global, because it was redundant. Any messages that want
  a Y/N response also supply a callback, and messages that don't care which
  key you press don't supply a callback.
- Changed MKEY_Back so that it cancels out of text entry fields before
  backing to the previous menu, which it already did for the keyboard.
- Changed the menu responder so that key downs always produce results,
  regardless of whether or not an equivalent key is already down.


SVN r1753 (trunk)
2009-08-07 03:30:51 +00:00
Randy Heit
00a6293952 - Fixed: Trying to run with the same FMOD version you compiled with no longer produced
sound. (But compiling with 4.26.xx and using an older DLL was fine.)

SVN r1718 (trunk)
2009-07-15 22:27:38 +00:00
Randy Heit
f74f6a1659 - Split the joystick menu into two parts: A top level with general options
and a list of all attached controllers, and a second level for configuring
  an individual controller.
- Fixed: Pressing Up at the top of a menu with more lines than fit on screen
  would find an incorrect bottom position if the menu had a custom top height.
- Added the cvars joy_dinput, joy_ps2raw, and joy_xinput to enable/disable
  specific game controller input systems independant of each other.
- Device change broadcasts are now sent to the Doom event queue, so
  device scanning can be handled in one common place.
- Added a fast version of IsXInputDevice that uses the Raw Input device
  list, because querying WMI for this information is painfully slow.
- Added support for compiling with FMOD Ex 4.26+ and running the game
  with an older DLL. This combination will now produce sound.


SVN r1717 (trunk)
2009-07-15 05:53:06 +00:00
Randy Heit
ae2c4a6dbc - Relaxed the FMOD version check. Anything from 4.20.00 through 4.26.xx should work
for both building and running now.

SVN r1712 (trunk)
2009-07-06 23:42:00 +00:00
Randy Heit
17418316ea - Added support for FMOD Ex 4.25.01+, which added a geometry parameter to getCPUUsage().
SVN r1710 (trunk)
2009-07-06 03:51:43 +00:00
Randy Heit
397c1eda26 - Fixed: Adding GME support accidentally removed DUMB support.
SVN r1665 (trunk)
2009-06-11 03:48:53 +00:00
Randy Heit
64b7468bf4 - Fixed: The initial play of a GME song always started track 0.
SVN r1655 (trunk)
2009-06-08 23:37:39 +00:00
Randy Heit
5300572b88 - Moved USE_WINDOWS_DWORD definition out of music_gme.cpp and into i_musicinterns.h.
SVN r1632 (trunk)
2009-06-04 00:58:42 +00:00
Randy Heit
a8de4fc2da - Fixed compilation of i_keyboard.cpp with MinGW, because w32api still doesn't have
everything that was new for XP.
- Swapped snes_spc out for the full Game Music Emu library.

SVN r1631 (trunk)
2009-06-03 03:05:02 +00:00
Randy Heit
5db6a5516b - I guess music_mus_midiout.cpp isn't Win32-only, is it?
SVN r1530 (trunk)
2009-04-08 04:58:36 +00:00
Randy Heit
993fcd233a - Fixed: MinGW needs malloc.h for alloca().
SVN r1529 (trunk)
2009-04-08 04:57:17 +00:00
Christoph Oelckers
a908834a11 - added some default definitions for constants that may miss in some headers.
- replaced __va_copy with va_copy per Chris's suggestion.
- replaced #include <malloc.h> with #include <stdlib.h> where possible.


SVN r1524 (trunk)
2009-04-07 07:06:07 +00:00
Randy Heit
35fe9ae690 - Made fmodex.dll delay-loaded so the game should be runnable on Windows 95
again, though without sound.



SVN r1506 (trunk)
2009-03-26 02:33:37 +00:00
Randy Heit
301a554a69 - Added an OutputVolume() call after the MusicVolumeChanged() call in
MIDIStreamer::Play(). Since the state isn't playing yet when
  MusicVolumeChanged() is called, it doesn't do this itself.


SVN r1491 (trunk)
2009-03-20 01:58:33 +00:00
Randy Heit
aee99c2bd0 - Added an SDL output plugin, so FMOD can produce sound using SDL's audio
support instead of its own OSS/ALSA/ESD support. This is selectable by
  setting snd_output to "sdl".



SVN r1473 (trunk)
2009-03-11 04:56:43 +00:00
Randy Heit
47abeec7d9 - Fixed: On Linux systems with ALSA but no OSS support, trying to start
the sound system with snd_output default would fail instead of trying
  to use ALSA.



SVN r1472 (trunk)
2009-03-11 01:12:51 +00:00
Randy Heit
75b7db858f - Added support for zip/pk3 files with LZMA and bzip2 compression to ZDoom.
- Added more output to zipdir and a -q option to turn it off.
- Added -u option to zipdir to only recompress those files in a zip that have
  changed. 
- Added -d and -f options to zipdir. -d forces deflate compression, and -f
  forces a write of the zip, even if it's newer than all the files it contains.
- Added support for bzip2 and LZMA compression to zipdir.


SVN r1468 (trunk)
2009-03-10 23:07:37 +00:00
Randy Heit
4535382031 - The SFX Reverb unit is now moved so that it serves as an input to the water
effect rather than as an input to the ChannelGroup Target Unit. This means
  the water effect is now applied after any room reverb, rather than in
  parallel with it.
- Fixed: UI sounds should not have reverb applied to them.


SVN r1450 (trunk)
2009-02-26 06:23:05 +00:00
Randy Heit
a18018f607 - Removed the delay for starting all sounds from one tic at exactly the same
DSP position. Without also synchronizing the stopping of sounds, it can
  cause problems with things like the chainsaw where the sound is stopped and
  immediately restarted, causing occasional gaps between the stopping of the
  sound and the starting of the new one. (I added the start synchronization to
  combat flanging of paired moving polyobjects when moving around, but I think
  just removing velocity from the player for sound calculations takes care of
  that well enough.)


SVN r1447 (trunk)
2009-02-25 21:31:14 +00:00
Randy Heit
07a2da40f1 - Changed FMOD init() to allocate some virtual channels.
SVN r1387 (trunk)
2009-02-01 04:10:36 +00:00
Christoph Oelckers
987c878a9a - Fixed: FMOD calls for setting the water reverb must check the return code
for errors.
- Fixed: Hexen's dual attack weapons must check distance to targets in 3D,
  not 2D.


SVN r1336 (trunk)
2008-12-30 23:27:27 +00:00
Randy Heit
f435576f1d - Increased maximum number of per-pattern rows for the XM loader from
256 to 1024 to deal with a module that otherwise would not load.
- Removed the artificial restriction on not supporting Vorbis-compressed
  samples in XMs if they are stereo, since it turns out that OggMod does
  support them.


SVN r1316 (trunk)
2008-12-16 00:59:20 +00:00
Randy Heit
3b4479df44 - Removed GC barriers from the sound channels. If we must, we can always
do it the old way and scan every channel to see if it matches an actor/
  entchannel pair.
- Fixed: S_RelinkSounds() did not move the SoundChans bitfield to the new
  actor.
- Fixed: Stolen channels could be kept around by the high-level channels
  indefinitely.


SVN r1289 (trunk)
2008-11-15 01:01:04 +00:00
Randy Heit
c1cefee2f4 - Made sdl/i_system.cpp:I_GetTimePolled() functionally equivalent to the
Win32 version.
- Updated fmod_wrap.h and fmodsound.cpp for FMOD 4.20.
- GCC warning removal.


SVN r1286 (trunk)
2008-11-09 05:50:54 +00:00
Randy Heit
738e8ca7ad - GCC warning removal.
* This may or may not be a problem, but GCC warned that FStateDefinitions::
    AddStateDefines() does not initialize def.FStateDefine::DefineFlags, so
    I fixed that.


SVN r1262 (trunk)
2008-10-14 03:21:53 +00:00
Randy Heit
cb159b26c2 - Fixed: SDL builds did not shutdown the sound system at exit.
- Fixed: ThingCountSector and ThingCountNameSector did not remove enough
  entries from the stack, and did not put the result in the right slot.
- Fixed: Teleport lines were prioritized over secret lines when deciding what
  color to draw them on the automap.
- Fixed: Death-reverting morphs did not remove the morph item from the
  player's inventory when death caused the morph to revert.
- Updated fmod_wrap.h for FMOD Ex 4.18.


SVN r1259 (trunk)
2008-10-14 01:24:27 +00:00
Christoph Oelckers
71dd0d0269 - another #include fix for Linux.
- Added a 'logarithmic' parameter to S_GetRolloff.


SVN r1235 (trunk)
2008-09-18 21:00:12 +00:00
Randy Heit
00b21e4b96 - Apparently, YASM is not a suitable substitute for NASM when doing Win32 builds.
- Removed extraneous printf parameter for Texman.Init startup message.
- Added newlines to the ends of a few headers that were missing them.
- Fixed more GCC errors/warnings.

SVN r1232 (trunk)
2008-09-17 20:24:08 +00:00
Christoph Oelckers
d1f8518a79 - Separated low level sound code from all high level dependencies.
SVN r1228 (trunk)
2008-09-15 18:18:04 +00:00
Christoph Oelckers
5d9483b632 - Moved some more high level sound logic out of FMODSoundRenderer:
The rolloff and channel ended callbacks now call functions in s_sound.cpp
  instead of working on the data itself and GSnd->StopSound has been replaced
  with S_StopChannel.


SVN r1227 (trunk)
2008-09-15 16:02:05 +00:00
Christoph Oelckers
760f70d3f1 - Changed compilation for g_doom, g_heretic, g_hexen and g_strife folders
so that all files are included by a central one instead of compiling 
  each one separately. This speeds up the compilation process by 25%
  when doing a complete rebuild in Visual C.
- Cleaned up more header dependencies.

SVN r1226 (trunk)
2008-09-15 14:11:05 +00:00
Christoph Oelckers
b07542ddd6 More header cleanup.
SVN r1225 (trunk)
2008-09-15 00:47:31 +00:00
Christoph Oelckers
db5723997c - Cleaned up some include dependencies.
SVN r1224 (trunk)
2008-09-14 23:54:38 +00:00
Randy Heit
d22f3ebfa6 - Added a check for D3DLINECAPS_ANTIALIAS, but this is complicated by the
fact that NVidia's don't report it, even though they support it. If there
  are any cards that no longer have antialised lines on the automap, please
  let me know.
- Added vid_hwaalines cvar to force antialiased lines off for the
  Direct3D renderer, in case it doesn't really support them.


SVN r1210 (trunk)
2008-09-10 03:33:02 +00:00
Christoph Oelckers
d02097976e - Fixed: The new rolloff values being stored in FSoundChan need to be serialized
for savegames.


SVN r1209 (trunk)
2008-09-09 21:23:09 +00:00
Christoph Oelckers
e033cbf9f8 - Since loading of the sound lump is now done in S_LoadSound I added an IsNull
method to the SoundRenderer class so that this function doesn't need to 
  load the sound for the NullSoundRenderer.
- Took some more non-FMOD related code out of fmodsound.cpp, including the
  code that checks for raw and Doom sounds. This means that sfxinfo_t is no
  longer needed in the SoundRenderer class so I took out all references to it.


SVN r1208 (trunk)
2008-09-09 20:49:53 +00:00
Christoph Oelckers
3b35ad2db2 - Fixed: FMODSoundRenderer::StartSound3D must set the static variable pointing
to the rolloff information back to NULL when starting the sound fails.
- Fixed: Rolloff information was taken from the sfxinfo that contained the
  actual sound data, not the one that was used for starting the sound.



SVN r1206 (trunk)
2008-09-09 09:22:47 +00:00
Christoph Oelckers
2df65c70cb - Fixed: GetMSLength didn't resolve random and player sounds.
- Moved sound aliasing code out of fmodsound.cpp into S_LoadSound.


SVN r1203 (trunk)
2008-09-07 14:45:50 +00:00
Christoph Oelckers
87f0ba0bd2 - Changed listener structure to directly contain the sound environment instead
of getting it from the zone in the low level code.


SVN r1201 (trunk)
2008-09-06 13:00:23 +00:00
Christoph Oelckers
bcbd2162b7 - Changed sound interface so that all references to game data like actors
and sectors are done in s_sound.cpp and not in fmodsound.cpp. Also removed
  several 'sector' parameters because they were never used inside the sound code.


SVN r1200 (trunk)
2008-09-06 11:07:27 +00:00
Randy Heit
9f21b22cc5 - Fixed spurious warnings on 32-bit VC++ debug builds.
- Made the subsong (order) number a proper parameter to MusInfo::Play()
  instead of requiring a separate SetPosition() call to do it.



SVN r1104 (trunk)
2008-08-03 03:54:48 +00:00
Randy Heit
bb0759f575 - Fixed: Attempting to load 0-length sounds caused a crash.
SVN r1100 (trunk)
2008-07-31 23:09:58 +00:00
Randy Heit
fb50df2c63 About a week's worth of changes here. As a heads-up, I wouldn't be
surprised if this doesn't build in Linux right now. The CMakeLists.txt
were checked with MinGW and NMake, but how they fair under Linux is an
unknown to me at this time.

- Converted most sprintf (and all wsprintf) calls to either mysnprintf or
  FStrings, depending on the situation.
- Changed the strings in the wbstartstruct to be FStrings.
- Changed myvsnprintf() to output nothing if count is greater than INT_MAX.
  This is so that I can use a series of mysnprintf() calls and advance the
  pointer for each one. Once the pointer goes beyond the end of the buffer,
  the count will go negative, but since it's an unsigned type it will be
  seen as excessively huge instead. This should not be a problem, as there's
  no reason for ZDoom to be using text buffers larger than 2 GB anywhere.
- Ripped out the disabled bit from FGameConfigFile::MigrateOldConfig().
- Changed CalcMapName() to return an FString instead of a pointer to a static
  buffer.
- Changed startmap in d_main.cpp into an FString.
- Changed CheckWarpTransMap() to take an FString& as the first argument.
- Changed d_mapname in g_level.cpp into an FString.
- Changed DoSubstitution() in ct_chat.cpp to place the substitutions in an
  FString.
- Fixed: The MAPINFO parser wrote into the string buffer to construct a map
  name when given a Hexen map number. This was fine with the old scanner
  code, but only a happy coincidence prevents it from crashing with the new
  code
- Added the 'B' conversion specifier to StringFormat::VWorker() for printing
  binary numbers.
- Added CMake support for building with MinGW, MSYS, and NMake. Linux support
  is probably broken until I get around to booting into Linux again. Niceties
  provided over the existing Makefiles they're replacing:
  * All command-line builds can use the same build system, rather than having
    a separate one for MinGW and another for Linux.
  * Microsoft's NMake tool is supported as a target.
  * Progress meters.
  * Parallel makes work from a fresh checkout without needing to be primed
    first with a single-threaded make.
  * Porting to other architectures should be simplified, whenever that day
    comes.
- Replaced the makewad tool with zipdir. This handles the dependency tracking
  itself instead of generating an external makefile to do it, since I couldn't
  figure out how to generate a makefile with an external tool and include it
  with a CMake-generated makefile. Where makewad used a master list of files
  to generate the package file, zipdir just zips the entire contents of one or
  more directories.
- Added the gdtoa package from netlib's fp library so that ZDoom's printf-style
  formatting can be entirely independant of the CRT.

SVN r1082 (trunk)
2008-07-23 04:57:26 +00:00
Christoph Oelckers
448b8955c5 - Changed: AInventory::Tick now only calls the super method if the item is not
owned. Having owned inventory items interact with the world is not supposed
  to happen.
- Fixed: case PCD_SECTORDAMAGE in p_acs.cpp was missing a terminating 'break'.
- Fixed: When a weapon is destroyed, its sister weapon must also be destroyed.


SVN r1068 (trunk)
2008-07-05 19:06:30 +00:00
Randy Heit
78890d57bc - Fixed: Screenwipes now pause sounds, since there can be sounds playing
during it.
- UI sounds are now omitted from savegames.
- Fixed: Menu sounds had been restricted to one at a time again.
- Moved the P_SerializeSounds() call to the end of G_SerializeLevel() so that
  it will occur after the players are loaded.
- Added fixes from FreeBSD for 0-length and very large string buffers
  passed to myvsnprintf.


SVN r1063 (trunk)
2008-07-05 03:32:44 +00:00
Randy Heit
7ed0311221 - Polyobject sounds now play from their lines, similar to the way sector
sounds are handled.
- Why do polyobjects have a 3D start spot? Flattened it to 2D.
- Moved the sector sound origin calculation out of fmodsound.cpp and into
  s_sound.cpp so that the near sound limiting will use the correct sound
  location for deciding on neighbors.


SVN r1061 (trunk)
2008-07-02 03:50:17 +00:00
Randy Heit
a3e8a0cefd - Removed the S_Sound() variant that allows for pointing the origin at an
arbitrary point. It has been replaced with a variant that takes a polyobject
  as a source, since that was the only use that couldn't be rewritten with the
  other variants. This also fixes the bug that polyobject sounds were not
  successfully saved and caused a crash when reloading the game. Note that
  this is a significant change to how equality of sound sources is determined,
  so some things may not behave quite the same as before. (Which would be a
  bug, but hopefully everything still sounds the same.)


SVN r1059 (trunk)
2008-07-01 04:06:56 +00:00
Randy Heit
601a6ad04c - Adjusted the noise debug table so that fractional volume levels do not
run into the adjacent columns.
- Added a NullSoundRenderer so that most of the checks against a NULL GSnd
  can be removed.
- Fixed: Looping sounds must always successfully allocate a channel, even if
  it's only a pre-evicted channel.


SVN r1058 (trunk)
2008-07-01 01:28:22 +00:00
Randy Heit
d0b2c41270 - The sound code now handles restarting looping sounds itself. As far as
the rest of the game is concerned, these sounds will never stop once they
  have been started until they are explicitly stopped. If they are evicted
  from their channels, the sound code will restart them as soon as possible.
  This means that instead of this:
	if (!S_IsActorPlayingSomething(actor, CHAN_WEAPON, -1))
	{
		S_Sound(actor, CHAN_WEAPON|CHAN_LOOP, soundid, 1, ATTN_NORM);
	}
  The following is now just as effective:
	S_Sound(actor, CHAN_WEAPON|CHAN_LOOP, soundid, 1, ATTN_NORM);
  There are also a couple of other ramifications presented by this change:
    * The full state of the sound system (sans music) is now stored in save
      games. Any sounds that were playing when you saved will still be
      playing when you load. (Try saving while Korax is making a speech in
      Hexen to hear it.)
    * Using snd_reset will also preserve any playing sounds.
    * Movie playback is disabled, probably forever. I did not want to 
      update the MovieDisable/ResumeSound stuff for the new eviction
      tracking code. A properly updated movie player will use the VMR,
      which doesn't need these functions, since it would pipe the sound
      straight through the sound system like everything else, so I decided
      to dump them now, which leaves the movie player in a totally unworkable
      state.

June 26, 2008
- Changed S_Sound() to take the same floating point attenuation that the
  internal S_StartSound() uses. Now ambient sounds can use the public
  S_Sound() interface.
- Fixed: S_RelinkSound() compared the points of the channels against the
  from actor's point, rather than checking the channels' mover.
- Changed Strife's animated doors so that their sounds originate from the
  interior of the sector making them and not from the entire vertical height
  of the map.


SVN r1055 (trunk)
2008-06-29 04:19:38 +00:00
Randy Heit
bb689ba3c9 - Fixed all the new warnings tossed out by GCC 4.3.
SVN r1047 (trunk)
2008-06-25 22:16:04 +00:00
Christoph Oelckers
8ca7c05e9d - Changed FImageCollection to return translated texture indices so
that animated icons can be done with it.
- Changed FImageCollection to use a TArray to hold its data.
- Fixed: SetChanHeadSettings did an assignment instead of comparing
  the channel ID witg CHAN_CEILING.
- Changed sound sequence names for animated doors to FNames.
- Automatically fixed: DCeiling didn't properly serialize its texture id.
- Replaced integers as texture ID representation with a specific new type
  to track down all potentially incorrect uses and remaining WORDs used
  for texture IDs so that more than 32767 or 65535 textures can be defined.


SVN r1036 (trunk)
2008-06-15 18:36:26 +00:00
Randy Heit
9e42cdaf08 - Replaced the naive area sound implementation with one that takes into
consideration the size and shape of the sector producing the sound. See
  the lifts on Doom 2 MAP30 and compare with previous versions.
- Fixed: The stop sound for sector-based sound sequences was not played with
  the CHAN_AREA flag.
- Removed the distinction between S_Sound() and S_SoundID() functions. Use
  S_Sound() for both names and IDs from now on.


SVN r1034 (trunk)
2008-06-15 02:25:09 +00:00
Randy Heit
4a1cb412f1 - Add environment 255, 255 as a way to get the software underwater effect in
any zone you want.
- Using a too-recent version of FMOD now gives an error, since there may be
  breaking changes to the API from one version to the next (excluding
  revisions in stable branches, which only represent bug fixes).
- Updated fmod_wrap.h for FMOD 4.16 and corrected a bug that had gone
  unnoticed before: The delayhi and delaylo parameters for Channel::setDelay()
  and getDelay() were swapped.


SVN r1032 (trunk)
2008-06-12 23:47:27 +00:00
Randy Heit
d657e31a8c - Fixed: Deactivating the game no longer allows reverb effects to continue
playing while the sound is paused.


SVN r1005 (trunk)
2008-05-31 02:18:09 +00:00
Randy Heit
db0b93d40f Forgot to add music_dumb.cpp for previous commit.
SVN r996 (trunk)
2008-05-30 00:31:13 +00:00
Randy Heit
01f59fa85f - Added an alternate module replay engine that uses foo_dumb's replayer, a
heavily customized version of DUMB (Dynamic Universal Music Bibliotheque).
  It has been slightly modified by me:
  * Added support for Ogg Vorbis-compressed samples in XM files ala FMOD.
  * Removed excessive mallocs from the replay core.
  * Rerolled the loops in resample.c. Unrolling them made the object file
    ~250k large while providing little benefit. Even at ~100k, I think it's
    still larger than it ought to be, but I'll live with it for now.
  Other than that, it's essentially the same thing you'd hear in foobar2000,
  minus some subsong detection features. Release builds of the library look
  like they might even be slightly faster than FMOD, which is a plus.
- Fixed: Timidity::font_add() did not release the file reader it created.
- Fixed: The SF2 loader did not free the sample headers in its destructor.


SVN r995 (trunk)
2008-05-29 23:33:07 +00:00
Randy Heit
317710e9c4 - Added volume reduction for stereo sounds played in 3D to obtain levels
closer to FMOD 3, which downmixed all stereo sounds to mono before
  playing them in 3D. Also added experimental 3D spread for stereo sounds
  so that you can actually hear them in stereo.


SVN r989 (trunk)
2008-05-23 01:45:47 +00:00
Randy Heit
5a066788b5 - Revised underwater effect now uses a lowpass filter in combination with an
optional freeverb unit.
- Removed ResetEnvironment hack, since with software reverb, losing the
  existing reverb when focus is lost isn't a problem.
- Commented out the TiMidity FIXME messages.


SVN r973 (trunk)
2008-05-15 04:51:57 +00:00
Christoph Oelckers
1f3e1ba31c - Reverted fmodsound because it got converted to UTF-8 resulting in broken output for the copyright sign.
SVN r971 (trunk)
2008-05-14 17:10:32 +00:00
Randy Heit
a0d5463b49 - Added the C99 printf size specifiers 't' (ptrdiff_t) and 'z' (size_t) to
FString::Format() so that I can fix all the problem printf strings that a
  64-bit GCC compile finds.



SVN r968 (trunk)
2008-05-14 03:39:30 +00:00
Randy Heit
e64586d86f - Reduced volume, expression, and panning controllers back to 7 bits.
- Added very basic Soundfont support to the internal TiMidity. Things missing:
  filter, LFOs, modulation envelope, chorus, reverb, and modulators. May or
  may not be compatible with TiMidity++'s soundfont extensions.
- Added support for quoted strings to the TiMidity config parser.


SVN r957 (trunk)
2008-05-09 03:54:06 +00:00
Christoph Oelckers
9a410f864f - Separated the linedef activation types into a bit mask that allows combination
of all types on the same linedef. Also added a 'first side only' flag. This
  is not usable from Hexen or Doom format maps though but in preparation of
  the UDMF format discussed here:
  http://www.doomworld.com/vb/source-ports/43145-udmf-v0-99-specification-draft-aka-textmap/
- Changed linedef's alpha property from a byte to fixed point after seeing that
  255 wasn't handled to be fully opaque.
- fixed a GCC warning in fmodsound.cpp 

SVN r954 (trunk)
2008-05-02 10:55:48 +00:00
Randy Heit
c86d7e0afd - Fixed: FString::StripRight() stripped the final character of the string if
there were no designated characters to strip at the end of it.
- Added support for Shoutcast/Icecast playlists.
- Added an error message when a playlist could not be opened.
- Added support for PLS format playlists, in addition to M3U.
- Changed FPlayList to use an array of FStrings.
- Fixed: Playlists required every song to be specified by an absolute path.


SVN r951 (trunk)
2008-04-30 05:36:24 +00:00
Randy Heit
de85314234 - Added dynamic recentering for the OPL synth. The chip has four basic
waveforms, and three of them are non-negative. This can cause a tendency
  for the resulting output waveform to go into very high ranges depending on
  the timbres used, and Heretic's exemplify this problem.
- Reduced the OPL volume level slightly.
- Fixed: The waveform view from snd_drawoutput was upside-down.


SVN r949 (trunk)
2008-04-29 04:33:43 +00:00
Randy Heit
bc5f49dd49 - Various fixes for compiling working 64-bit binaries with Visual C++. The
number of changes was pleasantly small, and a cursory check seems to show
  everything working alright.


SVN r948 (trunk)
2008-04-29 02:43:42 +00:00
Randy Heit
0bb92662d3 - Fixed: Any MIDI ticks that contain only events that are interpreted by
the MIDI parser and not passed on to the MIDI device would mess up timing
  for future events.


SVN r945 (trunk)
2008-04-26 17:12:37 +00:00
Randy Heit
ab5c981b10 - Changed EMIDI controller 110-113 handling to more accurately match the
EMIDI specs: Track designations and exclusions should be ignored past
  the initial beat, and EMIDI program change and volume events should be
  ignored unless they were used in the initial beat.


SVN r944 (trunk)
2008-04-26 17:03:53 +00:00
Randy Heit
b192762bc1 - Fixed: When FMOD::System::init() returns FMOD_ERR_OUTPUT_CREATEBUFFER, it
could also be because the user selected PCM-Float output, but the driver
  doesn't support it (even if it claims to *cough*Audigy XP drivers*cough*).


SVN r943 (trunk)
2008-04-26 16:20:26 +00:00
Randy Heit
52f6549aa0 - Fixed: When playing a MIDI file with EMIDI track designations to turn a
track off, any ticks that had only events on the disabled track would cause
  the delay for that track to be thrown away, and the following notes on
  enabled tracks would play too soon. This could be heard quite clearly in
  xplasma.mid, where track 4 (FMGlass Drone 1) would interfere with the timing
  of tracks 13 and 14 (EP1 Melody and EP1 Echo).

SVN r937 (trunk)
2008-04-24 23:00:25 +00:00
Randy Heit
16d18c707a - Fixed: When note_on() is called and another copy of the same note is
already playing on the channel, it should stop it with finish_note(), not
  kill_note(). This can be clearly heard in the final cymbal crashes of
  D_DM2TTL where TiMidity cuts them off because the final cymbals are played
  with a velocity of 1 before the preceding cymbals have finished. (I wonder
  if I should be setting the self_nonexclusive flag for GUS patches to
  disable even this behavior, though, since gf1note.c doesn't turn off
  duplicate notes.)
- Changed envelope handling to hopefully match the GUS player's. The most
  egregious mistake TiMidity makes is to treat bit 6 as an envelope enable
  bit. This is not what it does; every sample has an envelope. Rather, this
  is a "no sampled release" flag. Also, despite fiddling with the
  PATCH_SUSTAIN flag during instrument loading, TiMidity never actually
  used it. Nor did it do anything at all with the PATCH_FAST_REL flag.


SVN r934 (trunk)
2008-04-24 04:18:49 +00:00
Christoph Oelckers
2a7ff45829 - Linux and GCC fixes
SVN r931 (trunk)
2008-04-20 19:39:08 +00:00
Randy Heit
816ea09cc4 - Added missing getDSPClock definition to fmod_wrap.h.
SVN r930 (trunk)
2008-04-20 03:17:00 +00:00
Randy Heit
03b4f71edf - Reduced the range that area sounds require to interpolate between 2D and
3D panning.
- The listener's velocity is now set at 0 for the sound engine. The player
  moves so fast that you can hear the doppler shift just by running around,
  otherwise.
- Changed the sound code so that all sounds that start playing on a single
  tic actually start playing at the exact same sample position.


SVN r927 (trunk)
2008-04-19 22:47:54 +00:00
Randy Heit
effe9427fd - Added the writewave command to write the internal TiMidity's output to a
wave file.
- Changed the default channel velocity for MUS files from 64 to 100 to
  better match apparent MIDI practice. (Would like to know what this is
  supposed to be.)
- Changed the mus2midi channel assignments to match the internal player's.
- Fixed: apply_envelope_to_amp() should clamp the mix levels to 0.


SVN r926 (trunk)
2008-04-19 21:36:53 +00:00
Randy Heit
f6866df0e6 - Made the maximum number of TiMidity voices configurable through the
timidity_voices cvar.
- Added stats lines for the OPL and Timidity MIDI devices.
- Completely changed the way TiMidity volume calculations are done. It
  should now be extremely close to the output a real GUS would produce with
  its official MIDI player (excepting where TiMidity normalizes sample
  volumes). The new equations more closely match what is specified by the DLS
  and SF2 specs (but not quite), so I presume it's also more musically
  correct than what TiMidity (and TiMidity++) do.


SVN r925 (trunk)
2008-04-19 05:57:09 +00:00
Randy Heit
eb1e17db06 - Fixed: The music stream needs to zero the FMOD_REVERB_CHANNELPROPERTIES
before sending it to Channel::getReverbProperties().
- Fixed: The earthquake effect did not play its sound as an actual looping
  sound. I'm a bit surprised this only recently started causing problems.


SVN r923 (trunk)
2008-04-18 03:26:48 +00:00
Randy Heit
87a480041c - Fixed: The FMOD::System object was never released, only closed, so
snd_reset would eventually run into the hard limit on the total number
  of FMOD::System objects that can be created concurrently (currently 15).
- Added proper error checks to the FMOD initialization process.


SVN r921 (trunk)
2008-04-16 20:56:46 +00:00
Randy Heit
42c80b3ee5 - Updated fmod_wrap.h for FMOD 4.14.
- Set note velocity back to using a linear sounding volume curve, although
  it's now used to scale channel volume and expression, so recompute_amp()
  is still only doing one volume curve lookup.
- Fixed: TimidityMIDIDevice caused a crash at the end of a non-looping song.


SVN r920 (trunk)
2008-04-16 20:02:16 +00:00
Christoph Oelckers
a53bfa7113 - Fixed a few bufs in the parser for composite textures.
- Changed: When loading Zips all patches in the patches/ directory should
  be loaded, not only those used by a texture in TEXTUREx. 
- Disabled timidity_mastervolume for the internal Timidity again because
  with the altered volume calculation it is no longer needed and the default
  volume is on the same level as OPL and FMOD.


SVN r909 (trunk)
2008-04-13 11:40:53 +00:00
Randy Heit
e7ff22457e - Changed FMOD_INIT_ENABLE_DSPNET use to its replacement from 4.14.00,
FMOD_INIT_ENABLE_PROFILE. Renamed the corresponding cvar to snd_profile.
- Removed the normalize parameter from SoundStream::Play().
- Disabled the chorus and reverb effects added to SDL_mixer's Timidity,
  because they were probably never tested well, either. Thanks to the bug
  in vc_alloc(), they were never even activated.
- Restored the exact frequency range search that was missing from SDL_mixer's
  verion of select_sample().
- Fixed: vc_alloc(), kill_others(), and note_on() treated Voice::status as a
  bit mask, when it's not. These were changes made to SDL_mixer's Timidity.
- Restored the original Timidity volume equation. The other louder one was
  put in when I didn't realize all channels were mono and many notes sounded
  too quiet because they never completed their attack phase.
- Fixed: FileReader::Gets() acted as if fgets() always read the maximum
  number of characters.
- Fixed: FileReader::Open() did not set FilePos and StartPos to 0.


SVN r908 (trunk)
2008-04-13 03:23:33 +00:00
Christoph Oelckers
96b72f2e33 - Changed the internal Timidity player so that it uses timidity_mastervolume
because it has the same sound volume issues as the external one.
- Replaced use of stdio in Timidity with FileReader and added the option to read
  from the lump directory. If the main config file is inside the lump directory
  it will assume that everything else is as well. If it is a real file it will be
  assumed that the rest is real files as well.
- Fixed: None of the error returns in Timidity::read_config_file closed the file being read.


SVN r906 (trunk)
2008-04-12 21:36:10 +00:00
Randy Heit
b340f9c762 - Removed some GCC warnings.
- Fixed: MinGW doesn't have _get_pgmptr(), so it couldn't compile i_main.cpp.
- Fixed: MOD_WAVETABLE and MOD_SWSYNTH are not defined by w32api, so MinGW
  failed compiling the new MIDI code.
- Fixed: LocalSndInfo and LocalSndSeq in S_Start() need to be const char
  pointers, since "" is a constant.
- Fixed: parsecontext.h was missing a newline at the end of the file.


SVN r904 (trunk)
2008-04-12 05:33:20 +00:00
Randy Heit
0d18580ff0 - Fixed: Timidity::Channel::mono, rpn, and nrpn were not initialized. In
particular, this meant that every channel was almost certainly in mono mode,
  which can sound pretty bad if the song isn't meant to be played that way.
- Added bank numbers to the MIDI precaching for Timidity, since I guess I do
  need to care about banks, if even the Duke MIDIs use various banks.
- Fixed: snd_midiprecache only exists in Win32 builds, so gameconfigfile.cpp
  shouldn't unconditionally link against it.
- Fixed: pre_resample() was still disabled, and it left two samples at the end
  of the new wave data uninitialized.


SVN r903 (trunk)
2008-04-12 05:04:37 +00:00
Randy Heit
10c0d67b78 - Changed the MIDIStreamer to send the all notes off controller to each
channel when restarting the song, rather than emitting a single note off
  event which only has a 1 in 127 chance of being for a note that's playing
  on that channel. Then I decided it would probably be a good idea to reset
  all the controllers as well.
- Increasing the size of the internal Timidity stream buffer from 1/14 sec
  (copied from the OPL player) improved its sound dramatically, so apparently
  Timidity has issues with short stream buffers. It's now at 1/2 sec in
  length. However, there seems to be something weird going on with
  corazonazul_ff6boss.mid near the beginning where it stops and immediately
  restarts a guitar on the exact same note.
- Added a new sound debugging cvar: snd_drawoutput, which can show various
  oscilloscopes and spectrums.
- Internal TiMidity now plays music.
- Changed the progdir global variable into an FString.

SVN r900 (trunk)
2008-04-11 04:59:23 +00:00
Randy Heit
6535283ff1 - Added the FCriticalSection class in critsec.h to make it easier to
use critical sections in other places besides the OPL player.


SVN r896 (trunk)
2008-04-09 04:17:13 +00:00
Randy Heit
68e4b3d946 - Reimplemented snd_midiprecache, now for MIDI as well as MUS, and
defaulting to false.


SVN r895 (trunk)
2008-04-09 03:55:04 +00:00
Randy Heit
de485ec662 - Changed the Makefiles that are used by both Linux and MinGW so that msys
detection occurs only if $OS is Windows_NT. Otherwise, spurious nul files
  are created when compiling on Linux.


SVN r878 (trunk)
2008-04-03 23:16:07 +00:00
Christoph Oelckers
935764e8c1 - Added Jim's latest Linux patch
SVN r877 (trunk)
2008-04-03 22:34:52 +00:00
Randy Heit
799a4ea1bb - Switched sounds local to the listener from head-relative 3D sounds to 2D
sounds so stereo sounds have full separation. I tried using set3DSpread,
  but that still caused some blending of the channels.


SVN r875 (trunk)
2008-04-03 03:43:41 +00:00
Randy Heit
b430977adf - Rearranged MIDIStreamer constructors to remove GCC warnings.
SVN r873 (trunk)
2008-04-03 02:36:01 +00:00
Randy Heit
3a5afd1418 - Added support for dumping from RAW/DRO/IMF files, so now anything that
can be played as OPL can also be dumped.
- Removed the opl_enable cvar, since OPL playback is now selectable as just
  another MIDI device.
- Added support for DRO playback and dual-chip RAW playback.
- Removed MUS support from OPLMUSSong, since using the OPLMIDIDevice with
  MUSSong2 works just as well. There are still lots of leftover bits in
  the class that should probably be removed at some point, too.
- Added dual-chip dumping support for the RAW format.
- Added DosBox Raw OPL (.DRO) dumping support. For whatever reason,
  in_adlib calculates the song length for this format wrong, even though
  the exact length is stored right in the header. (But in_adlib seems buggy
  in general; too bad it's the only Windows version of Adplug that seems to
  exist.)
- Rewrote the OPL dumper to work with MIDI as well as MUS.


SVN r872 (trunk)
2008-04-03 02:31:39 +00:00
Randy Heit
f23e9df084 - Fixed: OPLMIDIDevice sent the wrong pitch wheel value to the player code.
Missimp.mid sounds a lot better now, though still a little off.
- Fixed: MIDI files that had ticks with nothing but meta-events did not play
  properly. (fixes sonic3_finalboss.mid)


SVN r868 (trunk)
2008-03-30 02:51:34 +00:00
Randy Heit
f72635ac69 - Fixed broken compiling on Windows introduced by previous commit.
SVN r867 (trunk)
2008-03-30 00:34:09 +00:00
Randy Heit
930de248fd - Applied Const's Makefile.linux changes.
- Made the OPL MIDI synth available from Linux.



SVN r866 (trunk)
2008-03-30 00:04:09 +00:00
Randy Heit
cd70087ed5 - Moved sound sample rate, buffer size, and buffer count to the
advanced sound options menu. Removed opl_enable from the menu.
- Added OPL synth as MIDI device -3. Since this is based on the MUS player
  code, it only supports those events and controllers supported by MUS.
  Some of Duke's MIDIs sound awful, but I think that may be more because
  it's using different instruments... There's a thread in the MIDI streamer
  class that could be taken out for Linux, since it doesn't need to deal
  with the Windows Multimedia API, but for now, this is still Windows-only.


SVN r864 (trunk)
2008-03-29 05:01:38 +00:00
Randy Heit
8f49ea7f48 - Changed the output of the OPL emulator from 32-bit integers to 32-bit
floats, so I can write its output directly to the stream buffer. In
  addition, this lets me bring the OPL volume level much closer to the
  standard MIDI volume.


SVN r863 (trunk)
2008-03-29 01:30:37 +00:00
Randy Heit
938ae1767b - Did some restructuring of the OPL code in preparation for turning it
into a general MIDI player.
- Fixed: Passing false for a stream callback did not stop the stream.
- Removed opl_frequency, since the only time the emulation sounds good is
  when it plays at the exact frequency of a real chip.
- Music no longer plays at all when snd_musicvolume is 0.
- Bumped up snd_sfxvolume and snd_musicvolume default values.

SVN r862 (trunk)
2008-03-28 03:19:18 +00:00
Randy Heit
776d89428d - Changed D3DFB to explicitly request double buffering instead of assuming
that the drivers will treat a BackBufferCount of 0 as a request for
  double buffering.
- Fixed: Unsetting a cvar did not remove it from the list of tab
  completions.
- Added "" as a synonym for "nullimage" in SBARINFO.
- Fixed: MAKESAVESIG's stringifier in version.h did not work as expected.
  It stringified the passed macro name, not the value of the macro.
- Moved DCajunMaster off the DObject hierarchy.
- Changed DCajunMaster::getspawned into a TArray of FStrings. It was
  mysteriously being left pointing to uninitialized memory during the
  final GC at exit and crashing.
- Fixed: The code that removed hexdd.wad from the list of IWADs when
  hexen.wad was not present did not work.


SVN r861 (trunk)
2008-03-28 00:38:17 +00:00
Randy Heit
39940fe20a - Added FMOD_OPENONLY to the callback version of CreateStream() to prevent it
from doing prebuffering of the song. This was causing the Linux version to
  hang while waiting for input from the pipe, since Timidity hadn't been
  started yet. I tried using a select call in the FillStream() method, but it
  always seems to return the pipe as having nothing available. Unfortunately,
  the game still falls all over itself if Timidity isn't available. Instead
  of execvp failing nicely, X errors kill the game. I don't know why it's
  doing that. My advice for Linux music: Skip Timidity++ and get a DLS patch
  set (/WINDOWS/system32/drivers/gm.dls is probably the most common by far)
  and set the snd_midipatchset cvar to point to it. It's faster and also
  sounds a whole lot better than the crappy freepats Ubuntu wants to install
  with Timidity++.
- GCC fixes.



SVN r858 (trunk)
2008-03-27 04:25:52 +00:00
Christoph Oelckers
6420d82a58 - Fixed: After starting new music the music volume has to be reset so that
the song's relative volume takes effect.
- Removed the arbitrary 1024 bytes limit when the file being played is a MIDI
  file. I had a D_DM2TTL that's only 990 bytes.
- Restructured I_RegisterSong so that $mididevice works again and also supports
  selecting FMOD.


SVN r857 (trunk)
2008-03-27 00:05:32 +00:00
Christoph Oelckers
670edb2356 - Added Jim' Linux fix.
- Added MartinHowe's fix for mugshot display in status bars.


SVN r856 (trunk)
2008-03-26 08:50:54 +00:00
Randy Heit
8d0c48bf81 - The garbage collector is now run one last time just before exiting the game.
- Removed movie volume from the sound menu and renamed some of the other
  options to give the MIDI device name more room to display itself.
- Moved the midi device selection into the main sound menu.
- Added FMOD as MIDI device -1, to replace the MIDI mapper. This is still the
  default device. By default, it uses exactly the same DLS instruments as the
  Microsoft GS Wavetable Synth. If you have another set DLS level 1 patch set
  you want to use, set the snd_midipatchfile cvar to specify where it should
  load the instruments from.
- Changed the ProduceMIDI function to store its output into a TArray<BYTE>.
  An overloaded version wraps around it to continue to supply file-writing
  support for external Timidity++ usage.
- Added an FMOD credits banner to comply with their non-commercial license.
- Reimplemented the snd_buffersize cvar for the FMOD Ex sound system. Rather
  than a time in ms, this is now the length in samples of the DSP buffer.
  Also added the snd_buffercount cvar to offer complete control over the
  call to FMOD::System::setDSPBufferSize(). Note that with any snd_samplerate
  below about 44kHz, you will need to set snd_buffersize to avoid long
  latencies.
- Reimplemented the snd_output cvar for the FMOD Ex sound system.
- Changed snd_samplerate default to 0. This now means to use the default
  sample rate.
- Made snd_output, snd_output_format, snd_speakermode, snd_resampler, and
  snd_hrtf available through the menu.
- Split the HRTF effect selection into its own cvar: snd_hrtf.
- Removed 96000 Hz option from the menu. It's still available through the
  cvar, if desired.
- Fixed: If Windows sound init failed, retry with DirectSound. (Apparently,
  WASAPI doesn't work with more than two speakers and PCM-Float output at the
  same time.)
- Fixed: Area sounds only played from the front speakers once you got within
  the 2D panning area.


SVN r854 (trunk)
2008-03-26 04:27:07 +00:00
Randy Heit
aef34f9aa5 - Removed xlat_parser.h from the repository. Lemon was always being run on
xlat_parser.y because both files had the same time stamp after an update,
  and Lemon only rewrites the header file if it's changed.
- Added $volume SNDINFO command. This is multiplied with the volume the sound
  is played at to arrive at the final volume (before distance attenuation).
- Added the CHAN_AREA flag to disable 3D panning within the min distance of a
  sound. Sector sound sequences (except doors) use this flag.
- Added the CHAN_LOOP flag to replace the S_Looped* sound functions.
- Restored the sound limiting.


SVN r849 (trunk)
2008-03-25 04:42:26 +00:00
Randy Heit
3237c6b4e8 - Changed MIDI playback to not bother playing super short songs that don't
contain enough music to fill the initial output buffers.
- Removed the read barrier around ADehackedPickup::RealPickup. If the real
  pickup is picked up, it may very well destroy itself before the dehacked
  wrapper's stubs that use it are called.
- Reverted revision 840. For a file we don't want end users to be touching,
  making DEHSUPP plain text sends out mixed messages: "Don't mess with this.
  Oh, by the way, it's plain text now to make it easier for you to edit."
  Is there some reason other than a desire to do away with binary lumps to
  make the distributed lump text?
- Added a new speakermode for Stereo + HRTF: "Headphones". This is the only
  way to get the HRTF low pass filter effect now.
- Fixed: No more than one sector could make noise at once.
- Trying out sound without varying priorities again. 
- Fixed: Need to use setSpeakerMix to let 2D sounds (aka streamed music) use
  their full volume range.


SVN r842 (trunk)
2008-03-23 05:24:40 +00:00
Randy Heit
84d125cf21 - Fixed: Actor-less sounds that aren't played on CHAN_AUTO should still be
subject to channel overriding.
- Re-added priority selection based on sound usage.
- Reduced the number of virtual channels to match the number of real
  channels.
- Added customizable rolloff, including Doom's standard linear gain rolloff.
  SNDINFO commands are:
    $rolloff <sound> <min distance> <max distance>          -- linear gain (like Doom)
    $rolloff <sound> linear <min distance> <max distance>   -- linear volume
    $rolloff <sound> log <min distance> <rolloff factor>    -- logarithmic
    $rolloff <sound> custom <min distance> <max distance>   -- use SNDCURVE lump
  Anything closer than min distance is full volume and anything further than
  max distance is inaudible. Logarithmic rolloff does not have a maximum
  distance; it has a scalar that controls how quickly the volume drops off
  instead.


SVN r834 (trunk)
2008-03-22 03:33:41 +00:00
Randy Heit
10920ffe75 - Removed some debug output from SBarInfo::ParseSBarInfo().
- Fixed: Heretic linetype translations included the wrong file.
- Removed all 2D sound positioning code from s_sound.cpp. Everything uses
  FMOD's 3D engine now.
- Removed all the channel selection code from s_sound.cpp. FMOD has code to
  handle this sort of thing, so let's use it.
- Replaced S_StopSoundID() with S_CheckSingular(). There is no longer a limit
  on the number of copies of a particular sound that can be playing at once,
  aside from Strife's special singular sounds. (Sorry, Heretic and Hexen.)
  Consequently, the SNDINFO $limit command is now ignored.
- Removed ATTN_SURROUND, since FMOD Ex doesn't exactly support it, and it
  only worked as intended on stereo speakers anyway.
- Cleaned out ancient crud from i_sound.cpp.


SVN r826 (trunk)
2008-03-21 05:13:59 +00:00
Randy Heit
087e34bbb3 - Fixed: The source no longer built with GCC.
- Added a cheap pitch shifting for underwater environments that should be fairly
  close to Duke's. It sounds okay for some sounds, but others like the BFG, where
  the timing of the sound actually matters, don't sound good. I shall have to
  replace it with a real pitch shifter DSP unit.


SVN r819 (trunk)
2008-03-19 23:03:14 +00:00
Randy Heit
ce811319a7 - Fixed: If an object is flagged for euthanization while it's in the gray
list, it should just be ignored during the propagation stage.
- After sleeping on it and realizing what was really going in, I generalized
  the inventory fix from the 13th: The actor is flagged by Destroy(), then it
  is later inserted into the thinker list by DThinker::SerializeAll(). So
  rather than unlinking the skipped player from their inventory, just make
  sure any flagged thinkers aren't inserted into a list.
- Fixed: FCanvasTextureInfo::Viewpoint needed a read barrier, and the whole
  list should serve as a root.
- Reimplemented SPC playback as a custom codec for FMOD.
- Removed spc_frequency, because snes_spc only supports the SPC's native
  frequency of 32000 Hz.


SVN r806 (trunk)
2008-03-16 00:54:53 +00:00
Randy Heit
f2660dc336 - Merged the GC branch back into the trunk, so now it can receive more
testing from the people who download SVN trunk builds.

SVN r795 (trunk)
2008-03-12 02:56:11 +00:00
Randy Heit
3bfcc5c09c - Removed lots of spc_* cvars that are no longer meaningful and changed
spc_amp from a x.4 fixed point number to a normal float.
- Switched SPC playback from the external SNESAPU.DLL to Blargg's LGPL
  snes_spc library. I've compiled it with the fast DSP rather than the
  highly accurate one, since I didn't notice a meaningful difference between
  the two in my limited testing. In short: SPC playback is now built in to
  ZDoom. You don't need to download anything extra to make it work, and it
  also works on Linux as well as Windows (though building with Linux is
  currently untested).
- Fixed: Stereo separation was calculated very wrongly when in 2D sound mode.


SVN r794 (trunk)
2008-03-11 22:17:57 +00:00
Randy Heit
5f746bea5e - Fixed: Sounds apparently don't default to location 0,0,0 so I need to set
that explicitly for 2D sounds in 3D mode.
- Fixed: I had forgotten to actually set the head relative flag for 2D sounds
  played in 3D.
- Fixed: Reverb was applied to digital music in software 3D mode.

SVN r793 (trunk)
2008-03-11 03:19:16 +00:00
Christoph Oelckers
9b6d764512 - fixed: timidity_mastervolume didn't notify the song if the volume had to be clamped.
SVN r792 (trunk)
2008-03-09 16:30:36 +00:00
Christoph Oelckers
1e418576da - fixed: StreamSong::SetPosition required a NULL pointer check.
SVN r791 (trunk)
2008-03-09 13:39:50 +00:00
Christoph Oelckers
4576022c8d - fixed: The release build still linked to the old FMOD version.
- fixed: SPCSong only works for Win32 so its definition must be excluded for Linux.



SVN r790 (trunk)
2008-03-09 11:05:25 +00:00
Randy Heit
2b721975dd VERY IMPORTANT NOTE FOR ANYBODY BUILDING FROM THE TRUNK: This commit adds support
for FMOD Ex while at the same time removing support for FMOD 3. Be sure to update
your SDKs. GCC users, be sure to do a "make cleandep && make clean" before
building, or you will likely get inexplicable errors.

- Fixed: If you wanted to make cleandep with MinGW, you had to specifically
  specify Makefile.mingw as the makefile to use.
- Added a normalizer to the OPL synth. It helped bring up the volume a little,
  but not nearly as much as I would have liked.
- Removed MIDI Mapper references. It doesn't work with the stream API, and
  it doesn't really exist on NT kernels, either.
- Reworked music volume: Except for MIDI, all music volume is controlled
  through GSnd and not at the individual song level.
- Removed the mididevice global variable.
- Removed snd_midivolume. Now that all music uses a linear volume scale,
  there's no need for two separate music volume controls.
- Increased snd_samplerate default up to 48000.
- Added snd_format, defaulting to "PCM-16".
- Added snd_speakermode, defaulting to "Auto".
- Replaced snd_fpu with snd_resampler, defaulting to "Linear".
- Bumped the snd_channels default up from a pitiful 12 to 32.
- Changed snd_3d default to true. The new cvar snd_hw3d determines if
  hardware 3D support is used and default to false.
- Removed the libFLAC source, since FMOD Ex has native FLAC support.
- Removed the altsound code, since it was terribly gimped in comparison to
  the FMOD code. It's original purpose was to have been as a springboard for
  writing a non-FMOD sound system for Unix-y systems, but that never
  happened.
- Finished preliminary FMOD Ex support.


SVN r789 (trunk)
2008-03-09 03:13:49 +00:00
Randy Heit
68f726e422 - The full master volume SysEx is now always sent to the MIDI device, even if
it seems to have a working volume control.
- Renamed music_midi_stream.cpp to music_midi_base.cpp.
- Moved the WinMM MIDI code into a new container class.


SVN r787 (trunk)
2008-03-07 00:43:05 +00:00
Randy Heit
68a8ea2189 - Moved the identical code between the MUS and MIDI streamers into a new base
class so they all the low-level details of MIDI streaming are kept in
  one place.
- Converted the SMF MIDI playback to use the same MIDI streams as MUS
  playback.
- Moved MUS playback back into its own thread so that it can continue
  uninterrupted if the main thread is too busy to service it in a timely
  manner.
- Fixed: The MEVT_* values are not defined shifted into their spot for a
  MIDIEVENT, so I need to do it myself.
- Fixed: Pausing a MUS and the changing snd_midivolume caused the paused
  notes to become audible.


SVN r784 (trunk)
2008-03-05 03:10:31 +00:00
Randy Heit
69cebb7e57 - Changed MUS playback to use MIDI streams, like it did during the early days
of ZDoom, except now the entire song isn't prebuffered in large chunks, so
  I can insert MIDI events into the playback with fairly low latency. This
  should offer more precise timing than the combination of low-level MIDI and
  WaitForSingleObject timeouts.


SVN r783 (trunk)
2008-03-04 06:36:23 +00:00
Randy Heit
ef99d9c057 - Fixed: PTR_BounceTraverse only checked for projectiles that were too
high to pass through two-sided lines, but not ones that were too low.
- Fixed: SBARINFO couldn't detect the extreme death damage type for the
  player face animation.


SVN r782 (trunk)
2008-03-04 00:56:22 +00:00
Christoph Oelckers
2695a4360a - Forgot to add changes to i_musicinterns.h for last commit.
SVN r720 (trunk)
2008-01-27 18:09:06 +00:00
Christoph Oelckers
a37c437588 - added a mastervolume CVAR for Timidity because for me its output is considerably louder than everything else.
- reverted removal of AddPatch call in crosshair initialization.
- Modified makewad.c so that it doesn't write file names with '[]^' to the dependency file. Apparenly make
  can't handle these names and an incomplete list is still better than something that doesn't work at all.


SVN r719 (trunk)
2008-01-27 16:56:25 +00:00
Randy Heit
2e56925c36 - Fixed: The Linux makefile should use the include files for the system FLAC
installation, not the bundled copies which might not match what is installed.
- Upgraded bundled FLAC from version 1.1.2 to version 1.2.1.


SVN r575 (trunk)
2007-12-06 04:10:26 +00:00
Christoph Oelckers
912f8666d7 November 11, 2007 (Changes by Graf Zahl)
- Fixed: The FMOD stream player must specify whether it wants to play the
  sound looped or not when playback is started, not when the stream is created.
- Fixed: A_Saw didn't use the puff's damage type.
- Fixed: The AxeBlood's death state was using the wrong sprite frame.
- Fixed: The Mancubus had an attack sound defined even though it shouldn't.


SVN r565 (trunk)
2007-11-11 09:02:04 +00:00
Christoph Oelckers
333ef105f7 - Fixed: The DECORATE expression evaluator was reading the operator token
from the wrong variable in a few places resulting in incorrect calculations.
- Fixed: MP3/OGG music always looped because the looping flag was always
  set when FMOD was called to play it.
- Removed upper limit of 1 for an actor's gravity factor.
- Fixed: A_VileTarget spawned the fire at coordinate (target->x, target->x)
  instead of (target->x, target->y). (Old vanilla bug.)


SVN r550 (trunk)
2007-09-27 11:30:23 +00:00
Christoph Oelckers
e8875041ca - fixed: THe Timidity player didn't close its temporary files and left them
behind because it couldn't delete them.
- added a $MidiDevice option to SNDINFO which can either set the preferred
  MIDI device for a song to Timidity or Windows' standard MIDI device.
  The reason for this: About 80% of my MIDI music collection sounds better
  with Timidity and the other 20% with Windows' standard synth and I'd like
  to be able to use each with the one that sounds better. For MUS files you
  can also force the use of OPL playback.
- added telefrag option to A_SpawnItemEx.


SVN r545 (trunk)
2007-09-12 00:20:11 +00:00
Randy Heit
f6dd9be993 - Fixed some const char * -> char * conversions flagged by GCC 4.2.0 in the
Win32-specific code.


SVN r508 (trunk)
2007-03-29 01:03:50 +00:00
Randy Heit
58d4c4f9ae - Fixed: S_ClearSoundData() did not stop any channels before freeing the
samples, a problem for the alternate sound renderer if it happened to be
  playing any sounds at the time, since it would try to keep on playing them.

SVN r483 (trunk)
2007-02-14 20:18:22 +00:00
Randy Heit
26b886b960 - Fixed: The changecamera special should remove "past viewer" information
from the renderer in case the camera changed position or direction since
  the last time it was looked through. Otherwise, the renderer will
  interpolate from its previous view for one frame when it is switched to.
- Fixed non-POD parameter passing for GCC introduced in the previous commit.

SVN r476 (trunk)
2007-02-04 01:12:50 +00:00
Randy Heit
de18276b24 - Changed the default snd_output under Linux to OSS.
- Fixed the behavior of the "Don't ask" checkbox for the GTK+ version of
  the IWAD dialog.



SVN r452 (trunk)
2007-01-16 02:19:25 +00:00