diff --git a/amp.h b/amp.h index e6c8f17..78eab97 100644 --- a/amp.h +++ b/amp.h @@ -11,7 +11,6 @@ class Mustang; // F57 Champ // F65 Deluxe // F65 Princeton -// F65 Twin // 60s Thrift // class AmpCC { @@ -76,6 +75,8 @@ private: } // Noise Gate Custom Depth virtual int cc91( int value, unsigned char *cmd ) { return continuous_control( 0x09, 0x09, 0x0c, value, cmd );} + // Dummy in base class + virtual int cc92( int value, unsigned char *cmd ) { return -1;} }; @@ -116,6 +117,15 @@ private: virtual int cc78( int value, unsigned char *cmd ) { return continuous_control( 0x07, 0x07, 0x0c, value, cmd );} // Master Volume virtual int cc79( int value, unsigned char *cmd ) { return continuous_control( 0x03, 0x03, 0x0c, value, cmd );} + // Bright Switch + virtual int cc92( int value, unsigned char *cmd ) { + // Inverted logic + unsigned char flag; + // 0 --> Bright On + if ( value>63 && value <=127 ) flag = 0; + else flag = 1; + return discrete_control( 0x14, 0x14, 0x8d, value, cmd ); + } }; @@ -172,6 +182,24 @@ private: }; +// F65 Twin +// +class AmpCC8 : public AmpCC { +public: + AmpCC8( Mustang * theAmp, const unsigned char *model, const unsigned char theSlot ) : AmpCC(theAmp,model,theSlot) {} +private: + // Bright Switch + virtual int cc92( int value, unsigned char *cmd ) { + // Inverted logic + unsigned char flag; + // 0 --> Bright On + if ( value>63 && value <=127 ) flag = 0; + else flag = 1; + return discrete_control( 0x14, 0x14, 0x8d, value, cmd ); + } +}; + + // Null Amp // class NullAmpCC : public AmpCC { diff --git a/mustang.cpp b/mustang.cpp index 9e379b1..8988c6c 100644 --- a/mustang.cpp +++ b/mustang.cpp @@ -527,7 +527,6 @@ Mustang::updateAmpObj( const unsigned char *data ) { match16(f57_champ_id,model) || match16(f65_deluxe_id,model) || match16(f65_princeton_id,model) || - match16(f65_twin_id,model) || match16(s60s_thrift_id,model) ) { new_amp = new AmpCC( this, model, 0 ); } @@ -556,6 +555,9 @@ Mustang::updateAmpObj( const unsigned char *data ) { else if ( match16(f57_twin_id,model) ) { new_amp = new AmpCC7( this, model, 0 ); } + else if ( match16(f65_twin_id,model) ) { + new_amp = new AmpCC8( this, model, 0 ); + } else if ( match16(null_amp_id,model) ) { new_amp = new NullAmpCC( this, model, 0 ); } diff --git a/test.py b/test.py index 124b756..6ab2ea7 100755 --- a/test.py +++ b/test.py @@ -345,9 +345,12 @@ if single == "all" or single == "reverb": if single == "all" or single == "delay": # Model Ctrl v2only delay_test = ( - ( "Mono Delay", 1, "AAAAA", False ), - ( "Multitap", 4, "AAAAD03", False ), - ( "Tape Delay", 8, "AAAAA", False ) + ( "Mono Delay", 1, "AAAAA", False ), + ( "Mono Echo Filter", 2, "AAAAAA", False ), + ( "Stereo Echo Filter", 3, "AAAAAA", False ), + ( "Multitap", 4, "AAAAD03", False ), + ( "Tape Delay", 8, "AAAAAA", False ), + ( "Stereo Tape Delay", 9, "AAAAAA", False ) ) run_delay_test( delay_test, outport ) @@ -355,8 +358,8 @@ if single == "all" or single == "amp": # Model, Ctrl v2only amp_test = ( ( "Studio Preamp", 13, "AAAAA--D04D12", True ), - - ( "Fender 65 Twin", 6, "AAAAAD02AD04D12", False ), + # Test custom noise gate and bright switch + ( "Fender 65 Twin", 6, "AAAAAD02AD04D12--D09AD01", False ), ( "Fender SuperSonic", 7, "AAAAAD02AD04D12AA", False ), ( "British 60s", 8, "AAAAAD02AD04D12AA", False ), ( "British 70s", 9, "AAAAAD02AD04D12AA", False ),