mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-11 07:11:54 +00:00
- some minor cleanup, including renaming some data structutrd in the OPL code.
This commit is contained in:
parent
ba5721f98a
commit
79ed1f73e7
7 changed files with 33 additions and 24 deletions
|
@ -87,7 +87,7 @@ OPLMIDIDevice::OPLMIDIDevice(const char *args)
|
||||||
uint8_t filehdr[8];
|
uint8_t filehdr[8];
|
||||||
data.Read(filehdr, 8);
|
data.Read(filehdr, 8);
|
||||||
if (memcmp(filehdr, "#OPL_II#", 8)) I_Error("Corrupt GENMIDI lump");
|
if (memcmp(filehdr, "#OPL_II#", 8)) I_Error("Corrupt GENMIDI lump");
|
||||||
data.Read(OPLinstruments, sizeof(genmidi_instr_t) * GENMIDI_NUM_TOTAL);
|
data.Read(OPLinstruments, sizeof(GenMidiInstrument) * GENMIDI_NUM_TOTAL);
|
||||||
SampleRate = (int)OPL_SAMPLE_RATE;
|
SampleRate = (int)OPL_SAMPLE_RATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ struct genmidi_op_t
|
||||||
uint8_t level;
|
uint8_t level;
|
||||||
} FORCE_PACKED;
|
} FORCE_PACKED;
|
||||||
|
|
||||||
struct genmidi_voice_t
|
struct GenMidiVoice
|
||||||
{
|
{
|
||||||
genmidi_op_t modulator;
|
genmidi_op_t modulator;
|
||||||
uint8_t feedback;
|
uint8_t feedback;
|
||||||
|
@ -21,12 +21,12 @@ struct genmidi_voice_t
|
||||||
} FORCE_PACKED;
|
} FORCE_PACKED;
|
||||||
|
|
||||||
|
|
||||||
struct genmidi_instr_t
|
struct GenMidiInstrument
|
||||||
{
|
{
|
||||||
uint16_t flags;
|
uint16_t flags;
|
||||||
uint8_t fine_tuning;
|
uint8_t fine_tuning;
|
||||||
uint8_t fixed_note;
|
uint8_t fixed_note;
|
||||||
genmidi_voice_t voices[2];
|
GenMidiVoice voices[2];
|
||||||
} FORCE_PACKED;
|
} FORCE_PACKED;
|
||||||
|
|
||||||
#pragma pack(pop)
|
#pragma pack(pop)
|
||||||
|
|
|
@ -90,11 +90,11 @@ int musicBlock::replaceExistingVoice()
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
void musicBlock::voiceKeyOn(uint32_t slot, uint32_t channo, genmidi_instr_t *instrument, uint32_t instrument_voice, uint32_t key, uint32_t volume)
|
void musicBlock::voiceKeyOn(uint32_t slot, uint32_t channo, GenMidiInstrument *instrument, uint32_t instrument_voice, uint32_t key, uint32_t volume)
|
||||||
{
|
{
|
||||||
struct OPLVoice *voice = &voices[slot];
|
struct OPLVoice *voice = &voices[slot];
|
||||||
auto &channel = oplchannels[channo];
|
auto &channel = oplchannels[channo];
|
||||||
genmidi_voice_t *gmvoice;
|
GenMidiVoice *gmvoice;
|
||||||
|
|
||||||
voice->index = channo;
|
voice->index = channo;
|
||||||
voice->key = key;
|
voice->key = key;
|
||||||
|
@ -159,7 +159,7 @@ void musicBlock::noteOn(uint32_t channel, uint8_t key, int volume)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint32_t note;
|
uint32_t note;
|
||||||
genmidi_instr_t *instrument;
|
GenMidiInstrument *instrument;
|
||||||
|
|
||||||
// Percussion channel is treated differently.
|
// Percussion channel is treated differently.
|
||||||
if (channel == CHAN_PERCUSSION)
|
if (channel == CHAN_PERCUSSION)
|
||||||
|
|
|
@ -10,8 +10,8 @@ struct OPLVoice
|
||||||
unsigned int key; // The midi key that this voice is playing.
|
unsigned int key; // The midi key that this voice is playing.
|
||||||
unsigned int note; // The note being played. This is normally the same as the key, but if the instrument is a fixed pitch instrument, it is different.
|
unsigned int note; // The note being played. This is normally the same as the key, but if the instrument is a fixed pitch instrument, it is different.
|
||||||
unsigned int note_volume; // The volume of the note being played on this channel.
|
unsigned int note_volume; // The volume of the note being played on this channel.
|
||||||
genmidi_instr_t *current_instr; // Currently-loaded instrument data
|
GenMidiInstrument *current_instr; // Currently-loaded instrument data
|
||||||
genmidi_voice_t *current_instr_voice;// The voice number in the instrument to use. This is normally set to the instrument's first voice; if this is a double voice instrument, it may be the second one
|
GenMidiVoice *current_instr_voice;// The voice number in the instrument to use. This is normally set to the instrument's first voice; if this is a double voice instrument, it may be the second one
|
||||||
bool sustained;
|
bool sustained;
|
||||||
int8_t fine_tuning;
|
int8_t fine_tuning;
|
||||||
int pitch;
|
int pitch;
|
||||||
|
@ -21,13 +21,10 @@ struct musicBlock {
|
||||||
musicBlock();
|
musicBlock();
|
||||||
~musicBlock();
|
~musicBlock();
|
||||||
|
|
||||||
uint8_t *score;
|
|
||||||
uint8_t *scoredata;
|
|
||||||
int playingcount;
|
|
||||||
OPLChannel oplchannels[NUM_CHANNELS];
|
OPLChannel oplchannels[NUM_CHANNELS];
|
||||||
OPLio *io;
|
OPLio *io;
|
||||||
|
|
||||||
struct genmidi_instr_t OPLinstruments[GENMIDI_NUM_TOTAL];
|
struct GenMidiInstrument OPLinstruments[GENMIDI_NUM_TOTAL];
|
||||||
|
|
||||||
void changeModulation(uint32_t id, int value);
|
void changeModulation(uint32_t id, int value);
|
||||||
void changeSustain(uint32_t id, int value);
|
void changeSustain(uint32_t id, int value);
|
||||||
|
@ -50,9 +47,18 @@ protected:
|
||||||
|
|
||||||
int findFreeVoice();
|
int findFreeVoice();
|
||||||
int replaceExistingVoice();
|
int replaceExistingVoice();
|
||||||
void voiceKeyOn(uint32_t slot, uint32_t channo, genmidi_instr_t *instrument, uint32_t instrument_voice, uint32_t, uint32_t volume);
|
void voiceKeyOn(uint32_t slot, uint32_t channo, GenMidiInstrument *instrument, uint32_t instrument_voice, uint32_t, uint32_t volume);
|
||||||
int releaseVoice(uint32_t slot, uint32_t killed);
|
int releaseVoice(uint32_t slot, uint32_t killed);
|
||||||
|
|
||||||
friend class Stat_opl;
|
friend class Stat_opl;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ExtCtrl {
|
||||||
|
ctrlRPNHi,
|
||||||
|
ctrlRPNLo,
|
||||||
|
ctrlNRPNHi,
|
||||||
|
ctrlNRPNLo,
|
||||||
|
ctrlDataEntryHi,
|
||||||
|
ctrlDataEntryLo,
|
||||||
|
};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "critsec.h"
|
#include "critsec.h"
|
||||||
#include "muslib.h"
|
#include "musicblock.h"
|
||||||
|
|
||||||
class FileReader;
|
class FileReader;
|
||||||
|
|
||||||
|
@ -18,6 +18,9 @@ protected:
|
||||||
virtual int PlayTick() = 0;
|
virtual int PlayTick() = 0;
|
||||||
void OffsetSamples(float *buff, int count);
|
void OffsetSamples(float *buff, int count);
|
||||||
|
|
||||||
|
uint8_t *score;
|
||||||
|
uint8_t *scoredata;
|
||||||
|
int playingcount;
|
||||||
double NextTickIn;
|
double NextTickIn;
|
||||||
double SamplesPerTick;
|
double SamplesPerTick;
|
||||||
int NumChips;
|
int NumChips;
|
||||||
|
|
|
@ -353,7 +353,7 @@ static uint8_t volumetable[128] = {
|
||||||
120, 121, 121, 122, 122, 123, 123, 123,
|
120, 121, 121, 122, 122, 123, 123, 123,
|
||||||
124, 124, 125, 125, 126, 126, 127, 127};
|
124, 124, 125, 125, 126, 126, 127, 127};
|
||||||
|
|
||||||
void OPLio::WriteVolume(uint32_t channel, struct genmidi_voice_t *voice, uint32_t vol1, uint32_t vol2, uint32_t vol3)
|
void OPLio::WriteVolume(uint32_t channel, struct GenMidiVoice *voice, uint32_t vol1, uint32_t vol2, uint32_t vol3)
|
||||||
{
|
{
|
||||||
if (voice != nullptr)
|
if (voice != nullptr)
|
||||||
{
|
{
|
||||||
|
@ -392,7 +392,7 @@ void OPLio::WriteVolume(uint32_t channel, struct genmidi_voice_t *voice, uint32_
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
void OPLio::WritePan(uint32_t channel, struct genmidi_voice_t *voice, int pan)
|
void OPLio::WritePan(uint32_t channel, struct GenMidiVoice *voice, int pan)
|
||||||
{
|
{
|
||||||
if (voice != 0)
|
if (voice != 0)
|
||||||
{
|
{
|
||||||
|
@ -418,7 +418,7 @@ void OPLio::WritePan(uint32_t channel, struct genmidi_voice_t *voice, int pan)
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
void OPLio::WriteTremolo(uint32_t channel, struct genmidi_voice_t *voice, bool vibrato)
|
void OPLio::WriteTremolo(uint32_t channel, struct GenMidiVoice *voice, bool vibrato)
|
||||||
{
|
{
|
||||||
int val1 = voice->modulator.tremolo, val2 = voice->carrier.tremolo;
|
int val1 = voice->modulator.tremolo, val2 = voice->carrier.tremolo;
|
||||||
if (vibrato)
|
if (vibrato)
|
||||||
|
@ -478,7 +478,7 @@ void OPLio::LoadOperatorData(uint32_t channel, int op_index, genmidi_op_t *data,
|
||||||
//
|
//
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
void OPLio::WriteInstrument(uint32_t channel, struct genmidi_voice_t *voice, bool vibrato)
|
void OPLio::WriteInstrument(uint32_t channel, struct GenMidiVoice *voice, bool vibrato)
|
||||||
{
|
{
|
||||||
bool modulating = (voice->feedback & 0x01) == 0;
|
bool modulating = (voice->feedback & 0x01) == 0;
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@ enum
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct genmidi_voice_t;
|
struct GenMidiVoice;
|
||||||
|
|
||||||
struct OPLio
|
struct OPLio
|
||||||
{
|
{
|
||||||
|
@ -64,10 +64,10 @@ struct OPLio
|
||||||
void LoadOperatorData(uint32_t channel, int op_index, genmidi_op_t *op_data, bool maxlevel, bool vibrato);
|
void LoadOperatorData(uint32_t channel, int op_index, genmidi_op_t *op_data, bool maxlevel, bool vibrato);
|
||||||
void WriteValue(uint32_t regbase, uint32_t channel, uint8_t value);
|
void WriteValue(uint32_t regbase, uint32_t channel, uint8_t value);
|
||||||
void WriteFrequency(uint32_t channel, uint32_t freq, uint32_t octave, uint32_t keyon);
|
void WriteFrequency(uint32_t channel, uint32_t freq, uint32_t octave, uint32_t keyon);
|
||||||
void WriteVolume(uint32_t channel, genmidi_voice_t *voice, uint32_t v1, uint32_t v2, uint32_t v3);
|
void WriteVolume(uint32_t channel, GenMidiVoice *voice, uint32_t v1, uint32_t v2, uint32_t v3);
|
||||||
void WritePan(uint32_t channel, genmidi_voice_t *voice, int pan);
|
void WritePan(uint32_t channel, GenMidiVoice *voice, int pan);
|
||||||
void WriteTremolo(uint32_t channel, genmidi_voice_t *voice, bool vibrato);
|
void WriteTremolo(uint32_t channel, GenMidiVoice *voice, bool vibrato);
|
||||||
void WriteInstrument(uint32_t channel, genmidi_voice_t *voice, bool vibrato);
|
void WriteInstrument(uint32_t channel, GenMidiVoice *voice, bool vibrato);
|
||||||
void WriteInitState(bool opl3);
|
void WriteInitState(bool opl3);
|
||||||
void MuteChannel(uint32_t chan);
|
void MuteChannel(uint32_t chan);
|
||||||
void StopPlayback();
|
void StopPlayback();
|
||||||
|
|
Loading…
Reference in a new issue