📄 reverb.h
字号:
int16 low_freq, high_freq, m1_freq, m2_freq; /* in Hz */ int16 low_gain, high_gain, m1_gain, m2_gain; /* in dB */ double m1_q, m2_q, level; int32 leveli; filter_shelving hsf, lsf; filter_peaking m1, m2;} InfoStereoEQ;/*! Overdrive 1 / Distortion 1 */typedef struct { double level; int32 leveli, di; /* in fixed-point */ int8 drive, pan, amp_sw, amp_type; filter_moog svf; filter_biquad lpf1; void (*amp_sim)(int32 *, int32);} InfoOverdrive1;/*! OD1 / OD2 */typedef struct { double level, levell, levelr; int32 levelli, levelri, dli, dri; /* in fixed-point */ int8 drivel, driver, panl, panr, typel, typer, amp_swl, amp_swr, amp_typel, amp_typer; filter_moog svfl, svfr; filter_biquad lpf1; void (*amp_siml)(int32 *, int32), (*amp_simr)(int32 *, int32); void (*odl)(int32 *, int32), (*odr)(int32 *, int32);} InfoOD1OD2;/*! HEXA-CHORUS */typedef struct { delay buf0; lfo lfo0; double dry, wet, level; int32 pdelay, depth; /* in samples */ int8 pdelay_dev, depth_dev, pan_dev; int32 dryi, weti; /* in fixed-point */ int32 pan0, pan1, pan2, pan3, pan4, pan5; int32 depth0, depth1, depth2, depth3, depth4, depth5, pdelay0, pdelay1, pdelay2, pdelay3, pdelay4, pdelay5; int32 spt0, spt1, spt2, spt3, spt4, spt5, hist0, hist1, hist2, hist3, hist4, hist5;} InfoHexaChorus;/*! Plate Reverb */typedef struct { delay pd, od1l, od2l, od3l, od4l, od5l, od6l, od7l, od1r, od2r, od3r, od4r, od5r, od6r, od7r, td1, td2, td1d, td2d; lfo lfo1, lfo1d; allpass ap1, ap2, ap3, ap4, ap6, ap6d; mod_allpass ap5, ap5d; filter_lowpass1 lpf1, lpf2; int32 t1, t1d; double decay, ddif1, ddif2, idif1, idif2, dry, wet; int32 decayi, ddif1i, ddif2i, idif1i, idif2i, dryi, weti;} InfoPlateReverb;/*! Standard Reverb */typedef struct { int32 spt0, spt1, spt2, spt3, rpt0, rpt1, rpt2, rpt3; int32 ta, tb, HPFL, HPFR, LPFL, LPFR, EPFL, EPFR; delay buf0_L, buf0_R, buf1_L, buf1_R, buf2_L, buf2_R, buf3_L, buf3_R; double fbklev, nmixlev, cmixlev, monolev, hpflev, lpflev, lpfinp, epflev, epfinp, width, wet; int32 fbklevi, nmixlevi, cmixlevi, monolevi, hpflevi, lpflevi, lpfinpi, epflevi, epfinpi, widthi, weti;} InfoStandardReverb;/*! Freeverb */#define numcombs 8#define numallpasses 4typedef struct { delay pdelay; double roomsize, roomsize1, damp, damp1, wet, wet1, wet2, width; comb combL[numcombs], combR[numcombs]; allpass allpassL[numallpasses], allpassR[numallpasses]; int32 wet1i, wet2i; int8 alloc_flag;} InfoFreeverb;/*! 3-Tap Stereo Delay Effect */typedef struct { delay delayL, delayR; int32 size[3], index[3]; double level[3], feedback, send_reverb; int32 leveli[3], feedbacki, send_reverbi;} InfoDelay3;/*! Stereo Chorus Effect */typedef struct { delay delayL, delayR; lfo lfoL, lfoR; int32 wpt0, spt0, spt1, hist0, hist1; int32 rpt0, depth, pdelay; double level, feedback, send_reverb, send_delay; int32 leveli, feedbacki, send_reverbi, send_delayi;} InfoStereoChorus;/*! Chorus */typedef struct { delay delayL, delayR; lfo lfoL, lfoR; int32 wpt0, spt0, spt1, hist0, hist1; int32 rpt0, depth, pdelay; double dry, wet, feedback, pdelay_ms, depth_ms, rate, phase_diff; int32 dryi, weti, feedbacki;} InfoChorus;/*! Stereo Overdrive / Distortion */typedef struct { double level, dry, wet, drive, cutoff; int32 dryi, weti, di; filter_moog svfl, svfr; filter_biquad lpf1; void (*od)(int32 *, int32);} InfoStereoOD;/*! Delay L,C,R */typedef struct { delay delayL, delayR; int32 index[3], size[3]; /* L,C,R */ double rdelay, ldelay, cdelay, fdelay; /* in ms */ double dry, wet, feedback, clevel, high_damp; int32 dryi, weti, feedbacki, cleveli; filter_lowpass1 lpf;} InfoDelayLCR;/*! Delay L,R */typedef struct { delay delayL, delayR; int32 index[2], size[2]; /* L,R */ double rdelay, ldelay, fdelay1, fdelay2; /* in ms */ double dry, wet, feedback, high_damp; int32 dryi, weti, feedbacki; filter_lowpass1 lpf;} InfoDelayLR;/*! Echo */typedef struct { delay delayL, delayR; int32 index[2], size[2]; /* L1,R1 */ double rdelay1, ldelay1, rdelay2, ldelay2; /* in ms */ double dry, wet, lfeedback, rfeedback, high_damp, level; int32 dryi, weti, lfeedbacki, rfeedbacki, leveli; filter_lowpass1 lpf;} InfoEcho;/*! Cross Delay */typedef struct { delay delayL, delayR; double lrdelay, rldelay; /* in ms */ double dry, wet, feedback, high_damp; int32 dryi, weti, feedbacki, input_select; filter_lowpass1 lpf;} InfoCrossDelay;/*! Lo-Fi 1 */typedef struct { int8 lofi_type, pan, pre_filter, post_filter; double level, dry, wet; int32 bit_mask, dryi, weti; filter_biquad pre_fil, post_fil;} InfoLoFi1;/*! Lo-Fi 2 */typedef struct { int8 wp_sel, disc_type, hum_type, ms, pan, rdetune, lofi_type, fil_type; double wp_level, rnz_lev, discnz_lev, hum_level, dry, wet, level; int32 bit_mask, wp_leveli, rnz_levi, discnz_levi, hum_keveki, dryi, weti; filter_biquad fil, wp_lpf, hum_lpf, disc_lpf;} InfoLoFi2;/*! LO-FI */typedef struct { int8 output_gain, word_length, filter_type, bit_assign, emphasis; double dry, wet; int32 bit_mask, dryi, weti; filter_biquad lpf, srf;} InfoLoFi;/*! XG: Auto Wah */typedef struct { int8 lfo_depth, drive; double resonance, lfo_freq, offset_freq, dry, wet; int32 dryi, weti, fil_count, fil_cycle; lfo lfo; filter_moog_dist fil0, fil1;} InfoXGAutoWah;typedef struct { double level; int32 leveli; filter_biquad lpf;} InfoXGAutoWahOD;/* *//* System Effect *//* *//* Reverb Effect */extern void do_ch_reverb(int32 *, int32);extern void do_mono_reverb(int32 *, int32);extern void set_ch_reverb(int32 *, int32, int32);extern void init_reverb(void);extern void reverb_rc_event(int, int32);extern void do_ch_reverb_xg(int32 *, int32);/* Chorus Effect */extern void do_ch_chorus(int32 *, int32);extern void set_ch_chorus(int32 *, int32, int32);extern void init_ch_chorus(void);extern void do_ch_chorus_xg(int32 *, int32);/* Delay (Celeste) Effect */extern void do_ch_delay(int32 *, int32);extern void set_ch_delay(int32 *, int32, int32);extern void init_ch_delay(void);/* EQ */extern void init_eq_gs(void);extern void set_ch_eq_gs(int32 *, int32);extern void do_ch_eq_gs(int32 *, int32);extern void do_ch_eq_xg(int32 *, int32, struct part_eq_xg *); extern void do_multi_eq_xg(int32 *, int32);/* GS parameters of reverb effect */struct reverb_status_gs_t{ /* GS parameters */ int8 character, pre_lpf, level, time, delay_feedback, pre_delay_time; InfoStandardReverb info_standard_reverb; InfoPlateReverb info_plate_reverb; InfoFreeverb info_freeverb; InfoDelay3 info_reverb_delay; filter_lowpass1 lpf;} reverb_status_gs;struct chorus_text_gs_t{ int status; uint8 voice_reserve[18], macro[3], pre_lpf[3], level[3], feed_back[3], delay[3], rate[3], depth[3], send_level[3];};/* GS parameters of chorus effect */struct chorus_status_gs_t{ /* GS parameters */ int8 macro, pre_lpf, level, feedback, delay, rate, depth, send_reverb, send_delay; struct chorus_text_gs_t text; InfoStereoChorus info_stereo_chorus; filter_lowpass1 lpf;} chorus_status_gs;/* GS parameters of delay effect */struct delay_status_gs_t{ /* GS parameters */ int8 type, level, level_center, level_left, level_right, feedback, pre_lpf, send_reverb, time_c, time_l, time_r; double time_center; /* in ms */ double time_ratio_left, time_ratio_right; /* in pct */ /* for pre-calculation */ int32 sample_c, sample_l, sample_r; double level_ratio_c, level_ratio_l, level_ratio_r, feedback_ratio, send_reverb_ratio; filter_lowpass1 lpf; InfoDelay3 info_delay;} delay_status_gs;/* GS parameters of channel EQ */struct eq_status_gs_t{ /* GS parameters */ int8 low_freq, high_freq, low_gain, high_gain; filter_shelving hsf, lsf;} eq_status_gs;/* XG parameters of Multi EQ */struct multi_eq_xg_t{ /* XG parameters */ int8 type, gain1, gain2, gain3, gain4, gain5, freq1, freq2, freq3, freq4, freq5, q1, q2, q3, q4, q5, shape1, shape5; int8 valid, valid1, valid2, valid3, valid4, valid5; filter_shelving eq1s, eq5s; filter_peaking eq1p, eq2p, eq3p, eq4p, eq5p;} multi_eq_xg;pink_noise global_pink_noise_light;#endif /* ___REVERB_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -