LMMS
Loading...
Searching...
No Matches
cmfmcsop.h
Go to the documentation of this file.
1/*
2 * SoundFX Macs Opera CMF Player -- Copyright (c) 2017 Sebastian Kienzl <seb@knzl.de>
3 *
4 * Part of Adplug - Replayer for many OPL2/OPL3 audio file formats.
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21#ifndef H_ADPLUG_CMFMACSOPERAPLAYER
22#define H_ADPLUG_CMFMACSOPERAPLAYER
23
24#include <vector>
25#include <stdint.h>
26#include "player.h"
27
29{
30public:
31 static CPlayer* factory(Copl* newopl);
32
34
35 bool load(const std::string& filename, const CFileProvider& fp);
36 bool update();
37 void rewind(int subsong);
38 float getrefresh() { return speedRowsPerSec; };
39
40 virtual std::string gettype();
41 virtual unsigned int getpatterns() { return nrOfPatterns; }
42 virtual unsigned int getpattern() { return patternOrder[currentOrderIndex]; }
43 virtual unsigned int getorders() { return nrOfOrders; }
44 virtual unsigned int getorder() { return currentOrderIndex; }
45 virtual unsigned int getrow() { return currentRow; }
46 virtual unsigned int getspeed() { return 1; }
47 virtual unsigned int getinstruments() { return instruments.size(); }
48 virtual std::string getinstrument(unsigned int n) { return instruments[n].name; }
49
50 protected:
65
72
73 struct NoteEvent {
76 uint8_t note; // 4: release, 1: end of pattern, 24: C-0, 119: H-7/B#7
80 };
81
82 typedef std::vector<NoteEvent> Pattern;
83
87
91
92 std::vector<Instrument> instruments;
93 std::vector<Pattern> patterns;
94
98
102
103
104 bool loadInstruments(binistream* f, int nrOfInstruments);
105 bool loadPatterns(binistream* f);
106
107 bool isValidChannel(int channelNr) const;
108 bool isRhythmChannel(int channelNr) const;
109
110 void setSlot(int slotNr, const SlotSettings& settings);
111 bool setInstrument(int channelNr, const Instrument& inst);
112 void setAxBx(int channelNr, int Ax, int Bx);
113 bool setNote(int channelNr, int note);
114 void setVolume(int channelNr, int vol);
115
116 void keyOn(int channelNr);
117 void keyOff(int channelNr);
118
119 bool advanceRow();
120 void processNoteEvent(const NoteEvent &n);
121
122 void resetPlayer();
123};
124
125#endif
Definition fprovide.h:29
CPlayer(Copl *newopl)
Definition player.cpp:34
void processNoteEvent(const NoteEvent &n)
Definition cmfmcsop.cpp:439
void resetPlayer()
Definition cmfmcsop.cpp:492
int currentPatternIndex
Definition cmfmcsop.h:97
virtual unsigned int getorders()
Definition cmfmcsop.h:43
void rewind(int subsong)
Definition cmfmcsop.cpp:499
virtual std::string gettype()
Definition cmfmcsop.cpp:98
virtual unsigned int getrow()
Definition cmfmcsop.h:45
void setAxBx(int channelNr, int Ax, int Bx)
Definition cmfmcsop.cpp:333
bool songDone
Definition cmfmcsop.h:86
virtual unsigned int getpattern()
Definition cmfmcsop.h:42
bool loadInstruments(binistream *f, int nrOfInstruments)
Definition cmfmcsop.cpp:160
int current0xBD
Definition cmfmcsop.h:101
const Instrument * channelCurrentInstrument[11]
Definition cmfmcsop.h:99
bool update()
Definition cmfmcsop.cpp:460
virtual unsigned int getspeed()
Definition cmfmcsop.h:46
virtual std::string getinstrument(unsigned int n)
Definition cmfmcsop.h:48
bool setInstrument(int channelNr, const Instrument &inst)
Definition cmfmcsop.cpp:265
bool setNote(int channelNr, int note)
Definition cmfmcsop.cpp:343
CcmfmacsoperaPlayer(Copl *newopl)
Definition cmfmcsop.cpp:94
bool isValidChannel(int channelNr) const
Definition cmfmcsop.cpp:242
bool advanceRow()
Definition cmfmcsop.cpp:403
std::vector< Instrument > instruments
Definition cmfmcsop.h:92
virtual unsigned int getpatterns()
Definition cmfmcsop.h:41
bool isRhythmChannel(int channelNr) const
Definition cmfmcsop.cpp:247
std::vector< NoteEvent > Pattern
Definition cmfmcsop.h:82
virtual unsigned int getorder()
Definition cmfmcsop.h:44
float getrefresh()
Definition cmfmcsop.h:38
float speedRowsPerSec
Definition cmfmcsop.h:84
void setVolume(int channelNr, int vol)
Definition cmfmcsop.cpp:371
bool rhythmMode
Definition cmfmcsop.h:85
void setSlot(int slotNr, const SlotSettings &settings)
Definition cmfmcsop.cpp:257
virtual unsigned int getinstruments()
Definition cmfmcsop.h:47
void keyOn(int channelNr)
Definition cmfmcsop.cpp:301
std::vector< Pattern > patterns
Definition cmfmcsop.h:93
int current0xBx[9]
Definition cmfmcsop.h:100
int currentOrderIndex
Definition cmfmcsop.h:95
bool loadPatterns(binistream *f)
Definition cmfmcsop.cpp:214
int nrOfPatterns
Definition cmfmcsop.h:88
bool load(const std::string &filename, const CFileProvider &fp)
Definition cmfmcsop.cpp:109
int nrOfOrders
Definition cmfmcsop.h:90
int16_t patternOrder[99]
Definition cmfmcsop.h:89
int currentRow
Definition cmfmcsop.h:96
static CPlayer * factory(Copl *newopl)
Definition cmfmcsop.cpp:32
void keyOff(int channelNr)
Definition cmfmcsop.cpp:317
Definition opl.h:26
unsigned f
Definition inflate.c:1572
static char filename[]
Definition features.c:5
short int16_t
Definition mid.cpp:96
unsigned char uint8_t
Definition mid.cpp:98
Definition cmfmcsop.h:66
SlotSettings op[2]
Definition cmfmcsop.h:67
char name[14]
Definition cmfmcsop.h:70
int16_t connection
Definition cmfmcsop.h:69
int16_t feedback
Definition cmfmcsop.h:68
Definition cmfmcsop.h:73
uint8_t row
Definition cmfmcsop.h:74
uint8_t col
Definition cmfmcsop.h:75
uint8_t instrument
Definition cmfmcsop.h:77
uint8_t volume
Definition cmfmcsop.h:78
uint8_t note
Definition cmfmcsop.h:76
uint8_t pitch
Definition cmfmcsop.h:79
Definition cmfmcsop.h:51
int16_t decayRate
Definition cmfmcsop.h:57
int16_t releaseRate
Definition cmfmcsop.h:58
int16_t ksr
Definition cmfmcsop.h:62
int16_t attackRate
Definition cmfmcsop.h:54
int16_t totalLevel
Definition cmfmcsop.h:59
int16_t egType
Definition cmfmcsop.h:56
int16_t ampMod
Definition cmfmcsop.h:60
int16_t ksl
Definition cmfmcsop.h:52
int16_t waveSelect
Definition cmfmcsop.h:63
int16_t vib
Definition cmfmcsop.h:61
int16_t sustainLevel
Definition cmfmcsop.h:55
int16_t multiple
Definition cmfmcsop.h:53
int n
Definition crypt.c:458