mirror of
https://github.com/ZDoom/ZMusic.git
synced 2024-11-15 00:41:36 +00:00
180 lines
5.4 KiB
C++
180 lines
5.4 KiB
C++
/*
|
|
TiMidity++ -- MIDI to WAVE converter and player
|
|
Copyright (C) 1999-2002 Masanao Izumo <mo@goice.co.jp>
|
|
Copyright (C) 1995 Tuukka Toivonen <tt@cgs.fi>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
|
|
/*
|
|
* Historical issues: This file once was a huge header file, but now is
|
|
* devided into some smaller ones. Please do not add things to this
|
|
* header, but consider put them on other files.
|
|
*/
|
|
|
|
|
|
#ifndef TIMIDITY_H_INCLUDED
|
|
#define TIMIDITY_H_INCLUDED 1
|
|
|
|
#include "controls.h"
|
|
#include "mblock.h"
|
|
#include "../../../source/zmusic/critsec.h"
|
|
#include <mutex>
|
|
#include <stdint.h>
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma warning(disable:4244) // double->float truncation occurs so often in here that it's pointless to fix it all.
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
Table of contents:
|
|
(1) Flags and definitions to customize timidity
|
|
(3) inportant definitions not to customize
|
|
(2) #includes -- include other headers
|
|
*/
|
|
|
|
/*****************************************************************************\
|
|
section 1: some customize issues
|
|
\*****************************************************************************/
|
|
|
|
|
|
/* How many bits to use for the fractional part of sample positions.
|
|
This affects tonal accuracy. The entire position counter must fit
|
|
in 32 bits, so with FRACTION_BITS equal to 12, the maximum size of
|
|
a sample is 1048576 samples (2 megabytes in memory). The GUS gets
|
|
by with just 9 bits and a little help from its friends...
|
|
"The GUS does not SUCK!!!" -- a happy user :) */
|
|
#define FRACTION_BITS 12
|
|
/* change FRACTION_BITS above, not this */
|
|
#define FRACTION_MASK (~(0xFFFFFFFF << FRACTION_BITS))
|
|
|
|
|
|
/* The number of samples to use for ramping out a dying note. Affects
|
|
click removal. */
|
|
#define MAX_DIE_TIME 20
|
|
|
|
|
|
/* Define the pre-resampling cache size.
|
|
* This value is default. You can change the cache saze with
|
|
* command line option.
|
|
*/
|
|
#define DEFAULT_CACHE_DATA_SIZE (2*1024*1024)
|
|
|
|
|
|
/*****************************************************************************\
|
|
section 2: some important definitions
|
|
\*****************************************************************************/
|
|
/*
|
|
Anything below this shouldn't need to be changed unless you're porting
|
|
to a new machine with other than 32-bit, big-endian words.
|
|
*/
|
|
|
|
|
|
/* Audio buffer size has to be a power of two to allow DMA buffer
|
|
fragments under the VoxWare (Linux & FreeBSD) audio driver */
|
|
#define AUDIO_BUFFER_SIZE (1<<12)
|
|
|
|
/* These affect general volume */
|
|
#define GUARD_BITS 3
|
|
#define AMP_BITS (15-GUARD_BITS)
|
|
|
|
#define MAX_AMPLIFICATION 800
|
|
#define MAX_CHANNELS 32
|
|
|
|
/* Vibrato and tremolo Choices of the Day */
|
|
#define SWEEP_TUNING 38
|
|
#define VIBRATO_AMPLITUDE_TUNING 1.0L
|
|
#define VIBRATO_RATE_TUNING 38
|
|
#define TREMOLO_AMPLITUDE_TUNING 1.0L
|
|
#define TREMOLO_RATE_TUNING 38
|
|
|
|
#define SWEEP_SHIFT 16
|
|
#define RATE_SHIFT 5
|
|
|
|
#define VIBRATO_SAMPLE_INCREMENTS 32
|
|
|
|
#define MODULATION_WHEEL_RATE (1.0/6.0)
|
|
/* #define MODULATION_WHEEL_RATE (midi_time_ratio/8.0) */
|
|
/* #define MODULATION_WHEEL_RATE (current_play_tempo/500000.0/32.0) */
|
|
|
|
#define VIBRATO_DEPTH_TUNING (1.0/4.0)
|
|
|
|
/* malloc's limit */
|
|
#define MAX_SAFE_MALLOC_SIZE (1<<23) /* 8M */
|
|
|
|
#define DEFAULT_SOUNDFONT_ORDER 0
|
|
|
|
|
|
/*****************************************************************************\
|
|
section 3: include other headers
|
|
\*****************************************************************************/
|
|
|
|
namespace TimidityPlus
|
|
{
|
|
|
|
extern FCriticalSection ConfigMutex;
|
|
extern int timidity_modulation_wheel;
|
|
extern int timidity_portamento;
|
|
extern int timidity_reverb;
|
|
extern int timidity_chorus;
|
|
extern int timidity_surround_chorus;
|
|
extern int timidity_channel_pressure;
|
|
extern int timidity_lpf_de;
|
|
extern int timidity_temper_control;
|
|
extern int timidity_modulation_envelope;
|
|
extern int timidity_overlap_voice_allow;
|
|
extern int timidity_drum_effect;
|
|
extern int timidity_pan_delay;
|
|
extern float timidity_drum_power;
|
|
extern int timidity_key_adjust;
|
|
extern float timidity_tempo_adjust;
|
|
extern float min_sustain_time;
|
|
extern int timidity_lpf_def;
|
|
|
|
extern int32_t playback_rate;
|
|
extern int32_t control_ratio; // derived from playback_rate
|
|
|
|
enum play_system_modes
|
|
{
|
|
DEFAULT_SYSTEM_MODE,
|
|
GM_SYSTEM_MODE,
|
|
GM2_SYSTEM_MODE,
|
|
GS_SYSTEM_MODE,
|
|
XG_SYSTEM_MODE
|
|
};
|
|
|
|
|
|
const int DEFAULT_VOICES = 256;
|
|
|
|
// These were configurable in Timidity++ but it doesn't look like this is really needed.
|
|
// In case it becomes necessary, they can be turned into CVARs.
|
|
const int default_tonebank = 0;
|
|
const int special_tonebank = -1;
|
|
const int effect_lr_mode = -1;
|
|
const int effect_lr_delay_msec = 25;
|
|
const int adjust_panning_immediately = 1;
|
|
const int antialiasing_allowed = 0;
|
|
const int fast_decay = 0;
|
|
const int cutoff_allowed = 0;
|
|
const int opt_force_keysig = 8;
|
|
const int max_voices = DEFAULT_VOICES;
|
|
const int temper_type_mute = 0;
|
|
const int opt_preserve_silence = 0;
|
|
const int opt_init_keysig = 8;
|
|
|
|
}
|
|
#endif /* TIMIDITY_H_INCLUDED */
|