]> 4ch.mooo.com Git - 16.git/blob - 16/adplug/adplug/src/fmc.h
wwww~
[16.git] / 16 / adplug / adplug / src / fmc.h
1 /*
2   Adplug - Replayer for many OPL2/OPL3 audio file formats.
3   Copyright (C) 1999 - 2003 Simon Peter, <dn.tlp@gmx.net>, et al.
4
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   This library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with this library; if not, write to the Free Software
17   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
19   fmc.h - FMC loader by Riven the Mage <riven@ok.ru>
20 */
21
22 #include "protrack.h"
23
24 class CfmcLoader: public CmodPlayer
25 {
26         public:
27                 static CPlayer *factory(Copl *newopl);
28
29                 CfmcLoader(Copl *newopl) : CmodPlayer(newopl) { };
30
31                 bool    load(const std::string &filename, const CFileProvider &fp);
32                 float   getrefresh();
33
34                 std::string     gettype();
35                 std::string     gettitle();
36                 std::string     getinstrument(unsigned int n);
37                 unsigned int    getinstruments();
38
39         private:
40
41                 struct fmc_event
42                 {
43                         unsigned char   byte0;
44                         unsigned char   byte1;
45                         unsigned char   byte2;
46                 };
47
48                 struct fmc_header
49                 {
50                         char            id[4];
51                         char            title[21];
52                         unsigned char   numchan;
53                 } header;
54
55                 struct fmc_instrument
56                 {
57                         unsigned char   synthesis;
58                         unsigned char   feedback;
59
60                         unsigned char   mod_attack;
61                         unsigned char   mod_decay;
62                         unsigned char   mod_sustain;
63                         unsigned char   mod_release;
64                         unsigned char   mod_volume;
65                         unsigned char   mod_ksl;
66                         unsigned char   mod_freq_multi;
67                         unsigned char   mod_waveform;
68                         unsigned char   mod_sustain_sound;
69                         unsigned char   mod_ksr;
70                         unsigned char   mod_vibrato;
71                         unsigned char   mod_tremolo;
72                         unsigned char   car_attack;
73                         unsigned char   car_decay;
74                         unsigned char   car_sustain;
75                         unsigned char   car_release;
76                         unsigned char   car_volume;
77                         unsigned char   car_ksl;
78                         unsigned char   car_freq_multi;
79                         unsigned char   car_waveform;
80                         unsigned char   car_sustain_sound;
81                         unsigned char   car_ksr;
82                         unsigned char   car_vibrato;
83                         unsigned char   car_tremolo;
84
85                         signed char     pitch_shift;
86
87                         char            name[21];
88                 } instruments[32];
89
90                 void            buildinst(unsigned char i);
91 };