mustang-midi-bridge/stomp.h
2016-07-19 21:24:04 -04:00

231 lines
7 KiB
C++

// -*-c++-*-
#ifndef _STOMP_H
#define _STOMP_H
class Mustang;
class StompCC {
protected:
Mustang * amp;
int continuous_control( int parm5, int parm6, int parm7, int value );
int discrete_control( int parm5, int parm6, int parm7, int value );
public:
StompCC( Mustang * theAmp ) : amp(theAmp) {}
int dispatch( int cc, int value );
private:
virtual int cc29( int value ) = 0;
virtual int cc30( int value ) = 0;
virtual int cc31( int value ) = 0;
virtual int cc32( int value ) = 0;
virtual int cc33( int value ) = 0;
};
class OverdriveCC : public StompCC {
public:
OverdriveCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Gain
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Low
virtual int cc31( int value ) { return continuous_control( 0x02, 0x02, 0x01, value );}
// Mid
virtual int cc32( int value ) { return continuous_control( 0x03, 0x03, 0x01, value );}
// High
virtual int cc33( int value ) { return continuous_control( 0x04, 0x04, 0x01, value );}
};
class WahCC : public StompCC {
public:
WahCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Mix
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Freq
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Heel Freq
virtual int cc31( int value ) { return continuous_control( 0x02, 0x02, 0x01, value );}
// Toe Freq
virtual int cc32( int value ) { return continuous_control( 0x03, 0x03, 0x01, value );}
// High Q
virtual int cc33( int value ) {
if ( value > 1 ) return 0;
else return discrete_control( 0x04, 0x04, 0x81, value );
}
};
class FuzzCC : public StompCC {
public:
FuzzCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Gain
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Octave
virtual int cc31( int value ) { return continuous_control( 0x02, 0x02, 0x01, value );}
// Low
virtual int cc32( int value ) { return continuous_control( 0x03, 0x03, 0x01, value );}
// High
virtual int cc33( int value ) { return continuous_control( 0x04, 0x04, 0x01, value );}
};
class FuzzTouchWahCC : public StompCC {
public:
FuzzTouchWahCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Gain
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Sens
virtual int cc31( int value ) { return continuous_control( 0x02, 0x02, 0x01, value );}
// Octave
virtual int cc32( int value ) { return continuous_control( 0x03, 0x03, 0x01, value );}
// Peak
virtual int cc33( int value ) { return continuous_control( 0x04, 0x04, 0x01, value );}
};
class SimpleCompCC : public StompCC {
public:
SimpleCompCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Type
virtual int cc29( int value ) {
if ( value > 3 ) return 0;
else return discrete_control( 0x00, 0x05, 0x92, value );
}
virtual int cc30( int value ) { return 0;}
virtual int cc31( int value ) { return 0;}
virtual int cc32( int value ) { return 0;}
virtual int cc33( int value ) { return 0;}
};
class CompCC : public StompCC {
public:
CompCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Thresh
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Ratio
virtual int cc31( int value ) { return continuous_control( 0x02, 0x02, 0x04, value );}
// Attack
virtual int cc32( int value ) { return continuous_control( 0x03, 0x03, 0x01, value );}
// Release
virtual int cc33( int value ) { return continuous_control( 0x04, 0x04, 0x01, value );}
};
class RangerCC : public StompCC {
public:
RangerCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Gain
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Lo-Cut
virtual int cc31( int value ) { return continuous_control( 0x02, 0x03, 0x01, value );}
// Bright
virtual int cc32( int value ) { return continuous_control( 0x03, 0x02, 0x01, value );}
// n/a
virtual int cc33( int value ) { return 0;}
};
class GreenBoxCC : public StompCC {
public:
GreenBoxCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Gain
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Tone
virtual int cc31( int value ) { return continuous_control( 0x02, 0x02, 0x01, value );}
// Bright
virtual int cc32( int value ) { return continuous_control( 0x03, 0x03, 0x12, value );}
// n/a
virtual int cc33( int value ) { return 0;}
};
class OrangeBoxCC : public StompCC {
public:
OrangeBoxCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Dist
virtual int cc30( int value ) { return continuous_control( 0x01, 0x02, 0x01, value );}
// Tone
virtual int cc31( int value ) { return continuous_control( 0x02, 0x01, 0x01, value );}
// n/a
virtual int cc32( int value ) { return 0;}
// n/a
virtual int cc33( int value ) { return 0;}
};
class BlackBoxCC : public StompCC {
public:
BlackBoxCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Dist
virtual int cc30( int value ) { return continuous_control( 0x01, 0x02, 0x01, value );}
// Filter
virtual int cc31( int value ) { return continuous_control( 0x02, 0x01, 0x01, value );}
// n/a
virtual int cc32( int value ) { return 0;}
// n/a
virtual int cc33( int value ) { return 0;}
};
class BigFuzzCC : public StompCC {
public:
BigFuzzCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
// Level
virtual int cc29( int value ) { return continuous_control( 0x00, 0x00, 0x01, value );}
// Tone
virtual int cc30( int value ) { return continuous_control( 0x01, 0x01, 0x01, value );}
// Sustain
virtual int cc31( int value ) { return continuous_control( 0x02, 0x02, 0x01, value );}
// n/a
virtual int cc32( int value ) { return 0;}
// n/a
virtual int cc33( int value ) { return 0;}
};
class NullStompCC : public StompCC {
public:
NullStompCC( Mustang * theAmp ) : StompCC(theAmp) {}
private:
virtual int cc29( int value ) { return 0;}
virtual int cc30( int value ) { return 0;}
virtual int cc31( int value ) { return 0;}
virtual int cc32( int value ) { return 0;}
virtual int cc33( int value ) { return 0;}
};
#endif