aboutsummaryrefslogtreecommitdiff
path: root/backends/midi/mt32/part.h
diff options
context:
space:
mode:
authorEugene Sandulenko2004-11-06 01:41:32 +0000
committerEugene Sandulenko2004-11-06 01:41:32 +0000
commit805b21181ab7138da6960ade703b25716120fc29 (patch)
tree8a8b04662d7e25f0b6d3675452cd50fc589b5ee6 /backends/midi/mt32/part.h
parentab7c30e4ed59004f311fd068746d1537c9da5f50 (diff)
downloadscummvm-rg350-805b21181ab7138da6960ade703b25716120fc29.tar.gz
scummvm-rg350-805b21181ab7138da6960ade703b25716120fc29.tar.bz2
scummvm-rg350-805b21181ab7138da6960ade703b25716120fc29.zip
Major MT-32 emu overhaul based on KingGuppy's code.
o added configure option o mi2 intro doesn't freeze anymore and has no sound glitches o missing instruments in many titles are fixed o numerous memory overwrite bugs are fixed o code is cleaned a lot and splitted into many smaller files o mt32.cpp went to backends/midi o synced with upstream code o reverberation fixed * don't complain about File class wrapper :) * all custom types are back * #pragmas are to do * maybe some indentation is wrong too I prefer smaller commits, but this thing came in one piece. svn-id: r15715
Diffstat (limited to 'backends/midi/mt32/part.h')
-rw-r--r--backends/midi/mt32/part.h90
1 files changed, 90 insertions, 0 deletions
diff --git a/backends/midi/mt32/part.h b/backends/midi/mt32/part.h
new file mode 100644
index 0000000000..302ca4d2fb
--- /dev/null
+++ b/backends/midi/mt32/part.h
@@ -0,0 +1,90 @@
+/* Copyright (c) 2003-2004 Various contributors
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#ifndef MT32EMU_PART_H
+#define MT32EMU_PART_H
+
+#define AMPENV 0
+#define FILTENV 1
+#define PITCHENV 2
+
+#define MAXPOLY 64
+
+namespace MT32Emu {
+
+class PartialManager;
+class Synth;
+
+class Part {
+private:
+ Synth *synth; // Only used for sending debug output
+
+ // Pointers to the areas of the MT-32's memory dedicated to this part (for parts 1-8)
+ MemParams::PatchTemp *patchTemp;
+ TimbreParam *timbreTemp;
+ //... and for rhythm
+ MemParams::RhythmTemp *rhythmTemp;
+
+ bool isRhythm;
+ bool init;
+ int partNum;
+
+ char name[8]; // "Part 1".."Part 8", "Rhythm"
+ char currentInstr[11];
+
+ bool holdpedal;
+
+ volset volumesetting;
+
+ PatchCache patchCache[4];
+
+ Bit32u bend;
+ Bit32s volume;
+
+ dpoly polyTable[MAXPOLY];
+
+ void AbortPoly(dpoly *poly);
+
+public:
+ Part(Synth *synth, int usePartNum);
+ char *getName();
+ void PlayNote(PartialManager *partialManager, int f, int vel);
+ void StopNote(int f);
+ void AllStop();
+ void SetVolume(int vol);
+ void SetPan(int vol);
+ void SetBend(int vol);
+ void SetModulation(int vol);
+ void SetPatch(int patchnum);
+ void SetHoldPedal(bool pedalval);
+ void StopPedalHold();
+ void RefreshPatch();
+ void RefreshDrumCache();
+ void setPatch(PatchParam *patch);
+ void setTimbre(TimbreParam *timbre);
+ unsigned int getAbsTimbreNum();
+
+ int FixKeyfollow(int srckey, int *dir);
+ int FixBiaslevel(int srcpnt, int *dir);
+};
+
+}
+#endif