Top | ![]() |
![]() |
![]() |
![]() |
void | ipatch_gig_parse_effects () |
void | ipatch_gig_store_effects () |
void | ipatch_gig_effects_init () |
void | ipatch_gig_effects_to_gen_array () |
guint16 | ipatch_gig_to_sf2_timecents () |
guint16 | ipatch_gig_volsust_to_sf2_centibels () |
void ipatch_gig_parse_effects (IpatchFileHandle *handle
,IpatchGigEffects *effects
);
Parse an 3ewa GigaSampler effects chunk into a structure.
void ipatch_gig_store_effects (IpatchFileHandle *handle
,IpatchGigEffects *effects
);
void
ipatch_gig_effects_init (IpatchGigEffects *effects
);
Initialize GigaSampler effects structure to default values.
void ipatch_gig_effects_to_gen_array (IpatchGigEffects *effects
,IpatchSF2GenArray *array
);
Convert GigaSampler effects structure to SoundFont generator array
guint16
ipatch_gig_to_sf2_timecents (gint32 gig_tc
);
Convert GigaSampler timecents to SoundFont timecents.
struct IpatchGigEffects { guint32 unknown1; /* byte 0-3, always 0x0000008C? */ guint32 unknown7; /* byte 44-47 */ guint32 unknown14; /* byte 100-103 */ guint16 unknown2; /* byte 12-13 */ guint16 unknown3; /* byte 16-17 */ guint16 unknown4; /* byte 20-21 */ guint16 unknown5; /* byte 24-25 */ guint16 unknown6; /* byte 36-37 */ guint16 unknown8; /* byte 60-61 */ guint16 unknown9; /* byte 68-69 */ guint16 unknown10; /* byte 76-77 */ guint16 unknown11; /* byte 84-85 */ guint16 unknown13; /* byte 98-99 */ guint16 unknown15; /* byte 106-107 */ guint16 unknown17; /* byte 116-117 */ guint16 unknown18; /* byte 122-123 */ guint16 unknown20; /* byte 126-127 */ guint8 unknown12; /* byte 93 */ guint8 unknown16; /* byte 111 */ guint8 unknown19; /* byte 125 */ guint8 unknown21; /* byte 129 */ guint8 unknown22; /* byte 130 */ guint8 unknown23; /* byte 135 */ /* EG1 - Volume envelope */ guint16 eg1_pre_attack; /* 10th percent */ guint16 eg1_sustain; /* 10th percent */ guint32 eg1_attack; /* timecents */ guint32 eg1_decay; /* timecents */ guint32 eg1_decay2; /* timecents (where is the "inf" flag?) */ guint32 eg1_release; /* timecents */ guint8 eg1_hold; /* bit 8=1:true */ /* EG2 - Filter envelope */ guint16 eg2_pre_attack; /* 10th percent */ guint16 eg2_sustain; /* 10th percent */ guint32 eg2_attack; /* timecents */ guint32 eg2_decay; /* timecents */ guint32 eg2_decay2; /* timecents */ guint32 eg2_release; /* timecents */ /* EG3 - Pitch envelope */ guint32 eg3_attack; /* timecents */ guint16 eg3_depth; /* 12 bit signed (cents) */ /* LFO1 - Volume LFO */ guint16 lfo1_internal_depth; /* 0-1200 */ guint32 lfo1_freq; /* pitch cents */ guint16 lfo1_ctrl_depth; /* 0-1200 */ guint8 lfo1_ctrl; /* 0=internal, 1=mod wheel, 2=breath ctrl, 3=internal/mod wheel, 4=internal/breath ctrl */ /* bit 8=1:flip phase */ /* bit 7=1:synch */ /* bits 5 en 6: Res midictrl: 0=18, 1=19, 2=80, 3=81 */ /* LFO2 - Filter LFO */ guint8 lfo2_ctrl; /* 0=internal, 1=mod wheel, 2=breath ctrl, 3=internal/mod wheel, 4=internal/breath ctrl */ /* bit 6=1:synch */ /* bit 8=1:flip phase */ /* bit 7=1:Resonance midi ctrl */ guint32 lfo2_freq; /* pitch cents */ guint16 lfo2_internal_depth; /* 0-1200 */ guint16 lfo2_ctrl_depth; /* 0-1200 */ /* LFO3 - Pitch LFO */ guint32 lfo3_freq; /* pitch cents */ guint16 lfo3_internal_depth; /* cents */ guint16 lfo3_ctrl_depth; /* cents */ guint8 lfo3_ctrl; /* bit 6: LFO3 synch bit 8:invert attentuation ctrl */ /* filter parameters */ guint8 filter_type; /* 0=lowpass, 1=bandpass, 2=highpass, 3=bandreject */ guint8 turbo_lowpass; /* bit 7=0: on */ guint8 filter_cutoff; /* bit 8=1:on */ guint8 filter_midi_ctrl; /* bit 8=1:use ctrl rest 0:aftertouch */ guint8 filter_vel_scale; guint8 filter_resonance; /* bit 8=0:dynamic */ guint8 filter_breakpoint; /* bit 8=1:keyboard tracking */ /* velocity parameters */ guint8 vel_response; /* 0-4 = nonlinear, 5-9 = linear, 10-14 = special */ guint8 vel_dyn_range; /* release velocity paramaters */ guint8 release_vel_response; /* 0-4 = nonlinear, 5-9 = linear, 10-14 = special */ /* release velocity dynamic range? */ guint8 release_trigger_decay; guint8 attn_ctrl; /* bit 1:on, rest=ctrl, 0xFF=velocity */ guint8 max_velocity; /* Used for velocity split */ guint16 sample_offset; guint8 pitch_track_dim_bypass; /* bit 0=0: pitch track */ /* 0x10/0x20=dim bypass ctrl 94/95 */ guint8 layer_pan; /* 7-bit signed */ guint8 self_mask; /* 1=true */ guint8 channel_offset; /* (*4) */ guint8 sust_defeat; /* 2=on */ };