Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions include/com/IdLookup.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@
}


constexpr effects lookupEffectById(std::uint8_t id)
constexpr effects lookupEffectById(std::uint8_t id, std::uint8_t idmsb = 0)
{
switch (id)
switch ((idmsb << 8) | id)
{
case 0x00:
return effects::EMPTY;
Expand Down Expand Up @@ -152,8 +152,25 @@
return effects::FENDER_63_SPRING_REVERB;
case 0x0b:
return effects::FENDER_65_SPRING_REVERB;
/* Mustang I V2 */
case 0x103:
return effects::RANGER_BOOST;
case 0xba:
return effects::GREENBOX;
case 0x110:
return effects::ORANGEBOX;
case 0x111:
return effects::BLACKBOX;
case 0x10f:
return effects::BIG_FUZZ;
case 0xf4:
return effects::WAH_MOD;
case 0xf5:
return effects::TOUCH_WAH_MOD;
case 0x101f:
return effects::DIATONIC_PITCH_SHIFTER;
default:
throw std::invalid_argument{"Invalid effect id: " + std::to_string(id)};
throw std::invalid_argument{"Invalid effect id: " + std::to_string(idmsb << 8 | id)};
}
}

Expand Down
3 changes: 3 additions & 0 deletions include/com/Packet.h
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ namespace plug::com
void setModel(std::uint8_t model);
std::uint8_t getModel() const;

void setModelMSB(std::uint8_t modelmsb);
std::uint8_t getModelMSB() const;

void setUnknown(std::uint8_t value0, std::uint8_t value1, std::uint8_t value2);
};

Expand Down
17 changes: 16 additions & 1 deletion include/effects_enum.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ namespace plug
enum class effects
{
EMPTY,
/* Gain/Stomp Box */
OVERDRIVE,
WAH,
TOUCH_WAH,
Expand All @@ -77,6 +78,7 @@ namespace plug
SIMPLE_COMP,
COMPRESSOR,

/* Modulation */
SINE_CHORUS,
TRIANGLE_CHORUS,
SINE_FLANGER,
Expand All @@ -89,6 +91,7 @@ namespace plug
PHASER,
PITCH_SHIFTER,

/* Delay */
MONO_DELAY,
MONO_ECHO_FILTER,
STEREO_ECHO_FILTER,
Expand All @@ -99,6 +102,7 @@ namespace plug
TAPE_DELAY,
STEREO_TAPE_DELAY,

/* Reverb */
SMALL_HALL_REVERB,
LARGE_HALL_REVERB,
SMALL_ROOM_REVERB,
Expand All @@ -108,7 +112,18 @@ namespace plug
AMBIENT_REVERB,
ARENA_REVERB,
FENDER_63_SPRING_REVERB,
FENDER_65_SPRING_REVERB
FENDER_65_SPRING_REVERB,

/* Mustang I V2 Effect */
RANGER_BOOST,
GREENBOX,
ORANGEBOX,
BLACKBOX,
BIG_FUZZ,
/* Mustang I V2 Modulation */
WAH_MOD,
TOUCH_WAH_MOD,
DIATONIC_PITCH_SHIFTER
};

// list of all cabinets
Expand Down
10 changes: 10 additions & 0 deletions src/com/Packet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,16 @@ namespace plug::com
return bytes[0];
}

void EffectPayload::setModelMSB(std::uint8_t modelmsb)
{
bytes[1] = modelmsb;
}

std::uint8_t EffectPayload::getModelMSB() const
{
return bytes[1];
}

void EffectPayload::setUnknown(std::uint8_t value0, std::uint8_t value1, std::uint8_t value2)
{
bytes[3] = value0;
Expand Down
52 changes: 51 additions & 1 deletion src/com/PacketSerializer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,11 @@ namespace plug::com
case effects::FUZZ_TOUCH_WAH:
case effects::SIMPLE_COMP:
case effects::COMPRESSOR:
case effects::RANGER_BOOST:
case effects::GREENBOX:
case effects::ORANGEBOX:
case effects::BLACKBOX:
case effects::BIG_FUZZ:
return DSP::effect0;

case effects::SINE_CHORUS:
Expand All @@ -101,6 +106,9 @@ namespace plug::com
case effects::STEP_FILTER:
case effects::PHASER:
case effects::PITCH_SHIFTER:
case effects::WAH_MOD:
case effects::TOUCH_WAH_MOD:
case effects::DIATONIC_PITCH_SHIFTER:
return DSP::effect1;

case effects::MONO_DELAY:
Expand Down Expand Up @@ -171,7 +179,7 @@ namespace plug::com
{
const auto payload = p.getPayload();
return fx_pedal_settings{FxSlot{payload.getSlot()},
lookupEffectById(payload.getModel()),
lookupEffectById(payload.getModel(), payload.getModelMSB()),
payload.getKnob1(),
payload.getKnob2(),
payload.getKnob3(),
Expand Down Expand Up @@ -555,6 +563,48 @@ namespace plug::com
payload.setModel(0x0b);
break;

// Mustang I V2
case effects::RANGER_BOOST:
payload.setModel(0x03);
payload.setModelMSB(0x01);
break;

case effects::GREENBOX:
payload.setModel(0xba);
break;

case effects::ORANGEBOX:
payload.setModel(0x10);
payload.setModelMSB(0x01);
break;

case effects::BLACKBOX:
payload.setModel(0x11);
payload.setModelMSB(0x01);
break;

case effects::BIG_FUZZ:
payload.setModel(0x0f);
payload.setModelMSB(0x01);
break;

case effects::WAH_MOD:
payload.setModel(0xf4);
payload.setUnknown(0x01, 0x08, 0x01);
break;

case effects::TOUCH_WAH_MOD:
payload.setModel(0xf5);
payload.setUnknown(0x01, 0x08, 0x01);
break;

case effects::DIATONIC_PITCH_SHIFTER:
payload.setModel(0x1f);
payload.setModelMSB(0x10);
payload.setUnknown(0x00, 0x08, 0x01);
break;


default:
break;
}
Expand Down
Loading