forked from len0rd/rockbox
Port of Duke Nukem 3D
This ports Fabien Sanglard's Chocolate Duke to run on a version of SDL for Rockbox. Change-Id: I8f2c4c78af19de10c1633ed7bb7a997b43256dd9
This commit is contained in:
parent
01c6dcf6c7
commit
a855d62025
994 changed files with 336924 additions and 15 deletions
160
apps/plugins/sdl/SDL_mixer/timidity/playmidi.h
Normal file
160
apps/plugins/sdl/SDL_mixer/timidity/playmidi.h
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
TiMidity -- Experimental MIDI to WAVE converter
|
||||
Copyright (C) 1995 Tuukka Toivonen <toivonen@clinet.fi>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the Perl Artistic License, available in COPYING.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
int32 time;
|
||||
uint8 channel, type, a, b;
|
||||
} MidiEvent;
|
||||
|
||||
/* Midi events */
|
||||
#define ME_NONE 0
|
||||
#define ME_NOTEON 1
|
||||
#define ME_NOTEOFF 2
|
||||
#define ME_KEYPRESSURE 3
|
||||
#define ME_MAINVOLUME 4
|
||||
#define ME_PAN 5
|
||||
#define ME_SUSTAIN 6
|
||||
#define ME_EXPRESSION 7
|
||||
#define ME_PITCHWHEEL 8
|
||||
#define ME_PROGRAM 9
|
||||
#define ME_TEMPO 10
|
||||
#define ME_PITCH_SENS 11
|
||||
|
||||
#define ME_ALL_SOUNDS_OFF 12
|
||||
#define ME_RESET_CONTROLLERS 13
|
||||
#define ME_ALL_NOTES_OFF 14
|
||||
#define ME_TONE_BANK 15
|
||||
|
||||
#define ME_LYRIC 16
|
||||
#define ME_TONE_KIT 17
|
||||
#define ME_MASTERVOLUME 18
|
||||
#define ME_CHANNEL_PRESSURE 19
|
||||
|
||||
#define ME_HARMONICCONTENT 71
|
||||
#define ME_RELEASETIME 72
|
||||
#define ME_ATTACKTIME 73
|
||||
#define ME_BRIGHTNESS 74
|
||||
|
||||
#define ME_REVERBERATION 91
|
||||
#define ME_CHORUSDEPTH 93
|
||||
|
||||
#define ME_EOT 99
|
||||
|
||||
|
||||
#define SFX_BANKTYPE 64
|
||||
|
||||
typedef struct {
|
||||
int
|
||||
bank, program, volume, sustain, panning, pitchbend, expression,
|
||||
mono, /* one note only on this channel -- not implemented yet */
|
||||
/* new stuff */
|
||||
variationbank, reverberation, chorusdepth, harmoniccontent,
|
||||
releasetime, attacktime, brightness, kit, sfx,
|
||||
/* end new */
|
||||
pitchsens;
|
||||
FLOAT_T
|
||||
pitchfactor; /* precomputed pitch bend factor to save some fdiv's */
|
||||
char transpose;
|
||||
char *name;
|
||||
} Channel;
|
||||
|
||||
/* Causes the instrument's default panning to be used. */
|
||||
#define NO_PANNING -1
|
||||
/* envelope points */
|
||||
#define MAXPOINT 7
|
||||
|
||||
typedef struct {
|
||||
uint8
|
||||
status, channel, note, velocity, clone_type;
|
||||
Sample *sample;
|
||||
Sample *left_sample;
|
||||
Sample *right_sample;
|
||||
int32 clone_voice;
|
||||
int32
|
||||
orig_frequency, frequency,
|
||||
sample_offset, loop_start, loop_end;
|
||||
int32
|
||||
envelope_volume, modulation_volume;
|
||||
int32
|
||||
envelope_target, modulation_target;
|
||||
int32
|
||||
tremolo_sweep, tremolo_sweep_position, tremolo_phase,
|
||||
lfo_sweep, lfo_sweep_position, lfo_phase,
|
||||
vibrato_sweep, vibrato_sweep_position, vibrato_depth, vibrato_delay,
|
||||
starttime, echo_delay_count;
|
||||
int32
|
||||
echo_delay,
|
||||
sample_increment,
|
||||
envelope_increment,
|
||||
modulation_increment,
|
||||
tremolo_phase_increment,
|
||||
lfo_phase_increment;
|
||||
|
||||
final_volume_t left_mix, right_mix, lr_mix, rr_mix, ce_mix, lfe_mix;
|
||||
|
||||
FLOAT_T
|
||||
left_amp, right_amp, lr_amp, rr_amp, ce_amp, lfe_amp,
|
||||
volume, tremolo_volume, lfo_volume;
|
||||
int32
|
||||
vibrato_sample_increment[VIBRATO_SAMPLE_INCREMENTS];
|
||||
int32
|
||||
envelope_rate[MAXPOINT], envelope_offset[MAXPOINT];
|
||||
int32
|
||||
vibrato_phase, vibrato_control_ratio, vibrato_control_counter,
|
||||
envelope_stage, modulation_stage, control_counter,
|
||||
modulation_delay, modulation_counter, panning, panned;
|
||||
} Voice;
|
||||
|
||||
/* Voice status options: */
|
||||
#define VOICE_FREE 0
|
||||
#define VOICE_ON 1
|
||||
#define VOICE_SUSTAINED 2
|
||||
#define VOICE_OFF 3
|
||||
#define VOICE_DIE 4
|
||||
|
||||
/* Voice panned options: */
|
||||
#define PANNED_MYSTERY 0
|
||||
#define PANNED_LEFT 1
|
||||
#define PANNED_RIGHT 2
|
||||
#define PANNED_CENTER 3
|
||||
/* Anything but PANNED_MYSTERY only uses the left volume */
|
||||
|
||||
/* Envelope stages: */
|
||||
#define ATTACK 0
|
||||
#define HOLD 1
|
||||
#define DECAY 2
|
||||
#define RELEASE 3
|
||||
#define RELEASEB 4
|
||||
#define RELEASEC 5
|
||||
#define DELAY 6
|
||||
|
||||
extern Channel channel[16];
|
||||
extern Voice voice[MAX_VOICES];
|
||||
extern signed char drumvolume[MAXCHAN][MAXNOTE];
|
||||
extern signed char drumpanpot[MAXCHAN][MAXNOTE];
|
||||
extern signed char drumreverberation[MAXCHAN][MAXNOTE];
|
||||
extern signed char drumchorusdepth[MAXCHAN][MAXNOTE];
|
||||
|
||||
extern int32 control_ratio, amp_with_poly, amplification;
|
||||
extern int32 drumchannels;
|
||||
extern int adjust_panning_immediately;
|
||||
extern int voices;
|
||||
|
||||
#define ISDRUMCHANNEL(c) ((drumchannels & (1<<(c))))
|
||||
|
||||
extern int GM_System_On;
|
||||
extern int XG_System_On;
|
||||
extern int GS_System_On;
|
||||
|
||||
extern int XG_System_reverb_type;
|
||||
extern int XG_System_chorus_type;
|
||||
extern int XG_System_variation_type;
|
||||
|
||||
extern int play_midi(MidiEvent *el, int32 events, int32 samples);
|
||||
extern int play_midi_file(const char *fn);
|
||||
extern void dumb_pass_playing_list(int number_of_files, char *list_of_files[]);
|
||||
Loading…
Add table
Add a link
Reference in a new issue