fn read_note_effects_v4(&mut self, data: &[u8], seek: &mut usize, note: &mut Note) {
        let flags1 = read_signed_byte(data, seek);
        let flags2 = read_signed_byte(data, seek);
        note.effect.hammer = (flags1 & 0x02) == 0x02;
        note.effect.let_ring = (flags1 & 0x08) == 0x08;
        note.effect.staccato = (flags2 & 0x01) == 0x01;
        note.effect.palm_mute = (flags2 & 0x02) == 0x02;
        note.effect.vibrato = (flags2 & 0x40) == 0x40 || note.effect.vibrato;
        if (flags1 & 0x01) == 0x01 {note.effect.bend = self.read_bend_effect(data, seek);}
        if (flags1 & 0x10) == 0x10 {
            if self.version.number >= (5,0,0) {note.effect.grace = Some(self.read_grace_effect_v5(data,seek));}
            else                              {note.effect.grace = Some(self.read_grace_effect(data, seek));}
        }
        if (flags2 & 0x04) == 0x04 {note.effect.tremolo_picking = Some(self.read_tremolo_picking(data, seek));}
        if (flags2 & 0x08) == 0x08 {
            if self.version.number >= (5,0,0) {note.effect.slides.extend(self.read_slides_v5(data, seek));}
            else                              {note.effect.slides.push(get_slide_type(read_signed_byte(data, seek)));}
        }
        if (flags2 & 0x10) == 0x10 {
            if self.version.number >= (5,0,0) {note.effect.harmonic = Some(self.read_harmonic_v5(data, seek));}
            else                              {note.effect.harmonic = Some(self.read_harmonic(data, seek, note));}
        }
        if (flags2 & 0x20) == 0x20 {note.effect.trill = Some(self.read_trill(data, seek));}
    }
/// Read note effects. The effects presence for the current note is set by the 2 bytes of flags. First set of flags:
/// - *0x01*: bend
/// - *0x02*: hammer-on/pull-off
/// - *0x04*: *blank*
/// - *0x08*: let-ring
/// - *0x10*: grace note
/// - *0x20*: *blank*
/// - *0x40*: *blank*
/// - *0x80*: *blank*
/// 
/// Second set of flags:
/// - *0x01*: staccato
/// - *0x02*: palm mute
/// - *0x04*: tremolo picking
/// - *0x08*: slide
/// - *0x10*: harmonic
/// - *0x20*: trill
/// - *0x40*: vibrato
/// - *0x80*: *blank*
/// 
/// Flags are followed by:
/// - Bend. See `read_bend()`.
/// - Grace note. See `read_grace()`.
/// - Tremolo picking. See `read_tremolo_picking()`.
/// - Slide. See `read_slides()`.
/// - Harmonic. See `read_harmonic()`.
/// - Trill. See `read_trill()`.
Read note effects. The effects presence for the current note is set by the 2 bytes of flags.



Flags are followed by:
Bend.
Read note effects . The effects presence for the current note is set by the 2 bytes of flags . Flags are followed by : Bend .
fn read_note_effects_v4(&mut self, data: &[u8], seek: &mut usize, note: &mut Note) {
        let flags1 = read_signed_byte(data, seek);
        let flags2 = read_signed_byte(data, seek);
        note.effect.hammer = (flags1 & 0x02) == 0x02;
        note.effect.let_ring = (flags1 & 0x08) == 0x08;
        note.effect.staccato = (flags2 & 0x01) == 0x01;
        note.effect.palm_mute = (flags2 & 0x02) == 0x02;
        note.effect.vibrato = (flags2 & 0x40) == 0x40 || note.effect.vibrato;
        if (flags1 & 0x01) == 0x01 {note.effect.bend = self.read_bend_effect(data, seek);}
        if (flags1 & 0x10) == 0x10 {
            if self.version.number >= (5,0,0) {note.effect.grace = Some(self.read_grace_effect_v5(data,seek));}
            else                              {note.effect.grace = Some(self.read_grace_effect(data, seek));}
        }
        if (flags2 & 0x04) == 0x04 {note.effect.tremolo_picking = Some(self.read_tremolo_picking(data, seek));}
        if (flags2 & 0x08) == 0x08 {
            if self.version.number >= (5,0,0) {note.effect.slides.extend(self.read_slides_v5(data, seek));}
            else                              {note.effect.slides.push(get_slide_type(read_signed_byte(data, seek)));}
        }
        if (flags2 & 0x10) == 0x10 {
            if self.version.number >= (5,0,0) {note.effect.harmonic = Some(self.read_harmonic_v5(data, seek));}
            else                              {note.effect.harmonic = Some(self.read_harmonic(data, seek, note));}
        }
        if (flags2 & 0x20) == 0x20 {note.effect.trill = Some(self.read_trill(data, seek));}
    }
fn read_note_effects_v4 ( & mut self , data : & [ u8 ] , seek : & mut usize , note : & mut Note ) { let flags1 = read_signed_byte ( data , seek ) ; let flags2 = read_signed_byte ( data , seek ) ; note . effect . hammer = ( flags1 & 0x02 ) == 0x02 ; note . effect . let_ring = ( flags1 & 0x08 ) == 0x08 ; note . effect . staccato = ( flags2 & 0x01 ) == 0x01 ; note . effect . palm_mute = ( flags2 & 0x02 ) == 0x02 ; note . effect . vibrato = ( flags2 & 0x40 ) == 0x40 || note . effect . vibrato ; if ( flags1 & 0x01 ) == 0x01 { note . effect . bend = self . read_bend_effect ( data , seek ) ; } if ( flags1 & 0x10 ) == 0x10 { if self . version . number >= ( 5 , 0 , 0 ) { note . effect . grace = Some ( self . read_grace_effect_v5 ( data , seek ) ) ; } else { note . effect . grace = Some ( self . read_grace_effect ( data , seek ) ) ; } } if ( flags2 & 0x04 ) == 0x04 { note . effect . tremolo_picking = Some ( self . read_tremolo_picking ( data , seek ) ) ; } if ( flags2 & 0x08 ) == 0x08 { if self . version . number >= ( 5 , 0 , 0 ) { note . effect . slides . extend ( self . read_slides_v5 ( data , seek ) ) ; } else { note . effect . slides . push ( get_slide_type ( read_signed_byte ( data , seek ) ) ) ; } } if ( flags2 & 0x10 ) == 0x10 { if self . version . number >= ( 5 , 0 , 0 ) { note . effect . harmonic = Some ( self . read_harmonic_v5 ( data , seek ) ) ; } else { note . effect . harmonic = Some ( self . read_harmonic ( data , seek , note ) ) ; } } if ( flags2 & 0x20 ) == 0x20 { note . effect . trill = Some ( self . read_trill ( data , seek ) ) ; } }
Read note effects.
Read note effects .
&mut self
data
&[u8]
seek
&mut usize
note
&mut Note
&mut self
data
&[u8]
seek
&mut usize
note
&mut Note