comparison Plugins/Input/adplug/core/fmc.h @ 359:8df427a314a8 trunk

[svn] Adlib synthesizer (AdPlug) support.
author chainsaw
date Fri, 30 Dec 2005 16:31:39 -0800
parents
children f12d7e208b43
comparison
equal deleted inserted replaced
358:70075730e187 359:8df427a314a8
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 };