1 2#ifndef _SYNTH_H 3#define _SYNTH_H 4 5#include <BeBuild.h> 6#include <Entry.h> 7#include <MidiDefs.h> 8#include <OS.h> 9 10typedef enum interpolation_mode 11{ 12 B_DROP_SAMPLE = 0, 13 B_2_POINT_INTERPOLATION, 14 B_LINEAR_INTERPOLATION 15} 16interpolation_mode; 17 18typedef enum reverb_mode 19{ 20 B_REVERB_NONE = 1, 21 B_REVERB_CLOSET, 22 B_REVERB_GARAGE, 23 B_REVERB_BALLROOM, 24 B_REVERB_CAVERN, 25 B_REVERB_DUNGEON 26} 27reverb_mode; 28 29typedef void (*synth_controller_hook) ( 30 int16 channel, int16 controller, int16 value); 31 32class BMidiSynth; 33class BMidiSynthFile; 34 35namespace BPrivate { class BSoftSynth; } 36 37class BSynth 38{ 39public: 40 41 BSynth(); 42 BSynth(synth_mode synth); 43 virtual ~BSynth(); 44 45 status_t LoadSynthData(entry_ref* instrumentsFile); 46 status_t LoadSynthData(synth_mode synth); 47 synth_mode SynthMode(void); 48 49 void Unload(void); 50 bool IsLoaded(void) const; 51 52 status_t SetSamplingRate(int32 sample_rate); 53 int32 SamplingRate() const; 54 55 status_t SetInterpolation(interpolation_mode interp_mode); 56 interpolation_mode Interpolation() const; 57 58 void SetReverb(reverb_mode rev_mode); 59 reverb_mode Reverb() const; 60 61 status_t EnableReverb(bool reverb_enabled); 62 bool IsReverbEnabled() const; 63 64 status_t SetVoiceLimits( 65 int16 maxSynthVoices, int16 maxSampleVoices, 66 int16 limiterThreshhold); 67 68 int16 MaxSynthVoices(void) const; 69 int16 MaxSampleVoices(void) const; 70 int16 LimiterThreshhold(void) const; 71 72 void SetSynthVolume(double theVolume); 73 double SynthVolume(void) const; 74 75 void SetSampleVolume(double theVolume); 76 double SampleVolume(void) const; 77 78 status_t GetAudio( 79 int16* pLeft, int16* pRight, int32 max_samples) const; 80 81 void Pause(void); 82 void Resume(void); 83 84 void SetControllerHook(int16 controller, synth_controller_hook cback); 85 86 int32 CountClients(void) const; 87 88private: 89 90 friend class BMidiSynth; 91 friend class BMidiSynthFile; 92 93 virtual void _ReservedSynth1(); 94 virtual void _ReservedSynth2(); 95 virtual void _ReservedSynth3(); 96 virtual void _ReservedSynth4(); 97 98 void _Init(); 99 100 BPrivate::BSoftSynth* fSynth; 101 synth_mode fSynthMode; 102 int32 fClientCount; 103 104 uint32 _reserved[10]; 105}; 106 107extern BSynth* be_synth; 108 109#endif // _SYNTH_H 110