pub struct EffectsPanel {Show 27 fields
pub fx1: Routing,
pub fx1_type: Fx1Type,
pub fx1_rate: Rate,
pub fx2: Routing,
pub fx2_type: Fx2Type,
pub fx2_rate: Rate,
pub fx4: Routing,
pub fx4_feedback: RangedU8<3>,
pub fx4_tempo: Time,
pub fx4_moisture: Level,
pub fx4_ping_pong: bool,
pub equalizer_on: bool,
pub equalizer_part: EqualizerPart,
pub equalizer_freq: Frequency,
pub equalizer_treble: EqBand,
pub equalizer_freq_gain: EqBand,
pub equalizer_bass: EqBand,
pub fx3: Routing,
pub fx3_type: Fx3Type,
pub fx3_compression: Level,
pub fx5: bool,
pub fx5_type: Fx5Type,
pub fx5_moisture: Level,
pub rotary_stop: bool,
pub rotary_speed: RotorSpeed,
pub fx1_control: bool,
pub fx2_deep: bool,
/* private fields */
}Expand description
The effects panel: the four effect slots, the reverb, the rotary and the EQ.
Unclaimed bits, kept verbatim through a re-encode: 46, 100..=114, 119..=143.
The body’s map, in offset order:
| bytes | bits | field | type |
|---|---|---|---|
0x00 bits 7..6 | 0..=1 | fx1 | Routing |
0x00 bits 5..2 | 2..=5 | fx1_type | Fx1Type |
0x00 bits 1..0; 0x01 bits 7..3 | 6..=12 | fx1_rate | Rate |
0x01 bits 2..1 | 13..=14 | fx2 | Routing |
0x01 bit 0; 0x02 bits 7..5 | 15..=18 | fx2_type | Fx2Type |
0x02 bits 4..0; 0x03 bits 7..6 | 19..=25 | fx2_rate | Rate |
0x03 bits 5..4 | 26..=27 | fx4 | Routing |
0x03 bits 3..2 | 28..=29 | fx4_feedback | RangedU8<3> |
0x03 bits 1..0; 0x04 bits 7..3 | 30..=36 | fx4_tempo | Time |
0x04 bits 2..0; 0x05 bits 7..4 | 37..=43 | fx4_moisture | Level |
0x05 bit 3 | 44..=44 | fx4_ping_pong | bool |
0x05 bit 2 | 45..=45 | equalizer_on | bool |
0x05 bit 1 | 46..=46 | — | unclaimed |
0x05 bit 0; 0x06 bits 7..2 | 47..=53 | equalizer_freq | Frequency |
0x06 bits 1..0; 0x07 bits 7..3 | 54..=60 | equalizer_treble | EqBand |
0x07 bits 2..0; 0x08 bits 7..4 | 61..=67 | equalizer_freq_gain | EqBand |
0x08 bits 3..0; 0x09 bits 7..5 | 68..=74 | equalizer_bass | EqBand |
0x09 bits 4..3 | 75..=76 | fx3 | Routing |
0x09 bits 2..0 | 77..=79 | fx3_type | Fx3Type |
0x0a bits 7..1 | 80..=86 | fx3_compression | Level |
0x0a bit 0 | 87..=87 | fx5 | bool |
0x0b bits 7..5 | 88..=90 | fx5_type | Fx5Type |
0x0b bits 4..0; 0x0c bits 7..6 | 91..=97 | fx5_moisture | Level |
0x0c bit 5 | 98..=98 | rotary_stop | bool |
0x0c bit 4 | 99..=99 | rotary_speed | RotorSpeed |
0x0c bits 3..0; 0x0d bits 7..0; 0x0e bits 7..5 | 100..=114 | — | unclaimed |
0x0e bit 4 | 115..=115 | fx1_control | bool |
0x0e bit 3 | 116..=116 | fx2_deep | bool |
0x0e bits 2..1 | 117..=118 | equalizer_part | EqualizerPart |
0x0e bit 0; 0x0f bits 7..0; 0x10 bits 7..0; 0x11 bits 7..0 | 119..=143 | — | unclaimed |
Fields§
§fx1: RoutingBits 0..=1 (byte 0x00, bits 7..6).
fx1_type: Fx1TypeBits 2..=5 (byte 0x00, bits 5..2).
fx1_rate: RateThe effect’s rate, in hertz. ⚠️ Not a Level: the panel does not read this on
its 0..10 scale, which is why it is a Rate.
Bits 6..=12 (byte 0x00, bits 1..0; byte 0x01, bits 7..3).
fx2: RoutingBits 13..=14 (byte 0x01, bits 2..1).
fx2_type: Fx2TypeBits 15..=18 (byte 0x01, bit 0; byte 0x02, bits 7..5).
fx2_rate: RateBits 19..=25 (byte 0x02, bits 4..0; byte 0x03, bits 7..6).
fx4: RoutingBits 26..=27 (byte 0x03, bits 5..4).
fx4_feedback: RangedU8<3>Bits 28..=29 (byte 0x03, bits 3..2).
fx4_tempo: TimeDelay time. ⚠️ Runs backwards: the panel reads 750 ms at 0 and 20 ms at 127, so this is not on the 0..10 scale and not monotonic with it either.
Bits 30..=36 (byte 0x03, bits 1..0; byte 0x04, bits 7..3).
fx4_moisture: LevelDelay wet/dry.
Bits 37..=43 (byte 0x04, bits 2..0; byte 0x05, bits 7..4).
fx4_ping_pong: boolBits 44..=44 (byte 0x05, bit 3).
equalizer_on: boolEQ engaged.
Bits 45..=45 (byte 0x05, bit 2).
equalizer_part: EqualizerPartWhich part the equalizer applies to. Whether it is engaged at all is the separate bit above.
Bits 117..=118 (byte 0x0e, bits 2..1).
equalizer_freq: FrequencyThe sweepable mid frequency, in hertz.
Bits 47..=53 (byte 0x05, bit 0; byte 0x06, bits 7..2).
equalizer_treble: EqBandBits 54..=60 (byte 0x06, bits 1..0; byte 0x07, bits 7..3).
equalizer_freq_gain: EqBandThe mid band’s boost/cut. ⚠️ Bipolar — its musical zero is the centre of the
slot, so the 0..10 reading a Level prints would show a cut as a small boost.
Bits 61..=67 (byte 0x07, bits 2..0; byte 0x08, bits 7..4).
equalizer_bass: EqBandBits 68..=74 (byte 0x08, bits 3..0; byte 0x09, bits 7..5).
fx3: RoutingBits 75..=76 (byte 0x09, bits 4..3).
fx3_type: Fx3TypeBits 77..=79 (byte 0x09, bits 2..0).
fx3_compression: LevelBits 80..=86 (byte 0x0a, bits 7..1).
fx5: boolBits 87..=87 (byte 0x0a, bit 0).
fx5_type: Fx5TypeBits 88..=90 (byte 0x0b, bits 7..5).
fx5_moisture: LevelBits 91..=97 (byte 0x0b, bits 4..0; byte 0x0c, bits 7..6).
rotary_stop: boolBits 98..=98 (byte 0x0c, bit 5).
rotary_speed: RotorSpeedBits 99..=99 (byte 0x0c, bit 4).
fx1_control: boolfx1 control pedal.
Bits 115..=115 (byte 0x0e, bit 4).
fx2_deep: boolfx2 deep.
Bits 116..=116 (byte 0x0e, bit 3).
Implementations§
Source§impl EffectsPanel
impl EffectsPanel
Sourcepub fn field_values(&self) -> Vec<FieldValue>
pub fn field_values(&self) -> Vec<FieldValue>
Every registered field’s current value, under its full path, in
declaration order — nested bodies inline where their field sits.
Describes the same fields as Self::field_specs, so callers may
zip the two positionally.
pub fn field_specs() -> Vec<FieldSpec>
Trait Implementations§
Source§impl Body for EffectsPanel
impl Body for EffectsPanel
Source§fn read<R: Read + Seek>(
r: &mut BodyReader<'_, R>,
_: &Header,
) -> Result<Self, Error>
fn read<R: Read + Seek>( r: &mut BodyReader<'_, R>, _: &Header, ) -> Result<Self, Error>
r, which is scoped to the body: position 0 is the first body
byte and BodyReader::len is known. header is for version gating and
location/aux interpretation, not for layout — the container already
consumed the header bytes.Source§impl BodyLayout for EffectsPanel
impl BodyLayout for EffectsPanel
Source§fn layout() -> &'static [LayoutField]
fn layout() -> &'static [LayoutField]
Source§impl Debug for EffectsPanel
The decoded values; the backing bytes are not printed.
impl Debug for EffectsPanel
The decoded values; the backing bytes are not printed.