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 CfmcLoader(Copl * newopl)29 CfmcLoader(Copl *newopl) : CmodPlayer(newopl) { }; 30 31 bool load(const char *filename, const CFileProvider &fp); 32 float getrefresh(); 33 34 const char * gettype(); 35 const char * gettitle(); 36 const char * 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 }; 92