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)
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)
- 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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
while and killing centaurs with the flechette.
- Fixed: Moving to an old level in a hub caused the old player's inventory to
spawn owned by the current player (but still hanging off the old player), so
the game would hang when trying to delete it.
- Modified re2c so that it doesn't add a date to the file it generates. Thus,
if it regenerates a file during a full rebuild, SVN won't see it as a change.
Also updated it to 0.10.5.
- Fixed: SC_GetString() did not properly terminate sc_String when the last
token in the file had no white space after it. Since I could not actually
find the problem (it works fine in debug mode and I saw no logic errors),
I decided to take this opportunity to reimplement it using an re2c-generated
scanner. Now it's 1.6x faster than before and correctness is easier to
verify.
- Fixed: FMODSoundRenderer::Shutdown() also needs to reset NumChannels.
- Added back the Manifest to zdoom.rc for non-VC8 Windows compilers.
- Fixed MinGW compilation again. Now it uses the same method as Makefile.linux
to find all the source files so that it doesn't need to be manually updated
each time source files are added or removed.
- Added the SVN revision number to the version string. A new tool is used to
obtain this information from the svnversion command and write it into a
header file. If you don't have the svn command line tools installed or didn't
check it out from the repository, you can still build. I added some rules for
this to Makefile.linux, and I assume they work because they do for
Makefile.mingw.
- Fixed: MIDISong2 did not delete MusHeader in its destructor.
SVN r200 (trunk)