| 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 */
};