// ================================================================ // Input args COLLISION_STRENGTH = $1; // 0-50. See COLLISION_STRENGTH_MAX, COLLISION_STRENGTH_PERC FREQ_OFFSET = $2; // 0-infinity. In Hz MODAL_POSITION = $3; // 0-1. Use -1 to default to random meaty position // ================================================================ // Setup rtsetparams(44100, 2); // reset(44100); // Load libraries load("MMODALBAR"); load("COMPLIMIT"); // ---- // Uncomment this to use reverb // load("GVERB"); // bus_config("MMODALBAR", "aux 0-1 out"); // bus_config("GVERB", "aux 0-1 in", "out 0-1"); // ---- // Bus structure // bus_config("MMODALBAR", "aux 0-1 out"); // bus_config("COMPLIMIT", "aux 0-1 in", "out 0-1"); // Params MODAL_PRESET_MARIMBA = 0; MODAL_PRESET_VIBRAPHONE = 1; MODAL_PRESET_AGOGO = 2; MODAL_PRESET_RESO = 4; COLLISION_STRENGTH_MAX = 50; COLLISION_STRENGTH_PERC = min(1, COLLISION_STRENGTH / COLLISION_STRENGTH_MAX); AMP_MULTIPLIER = 32768 * COLLISION_STRENGTH_PERC; // ================================================================ // The *final mix* // Compressor // COMPLIMIT(outsk, insk, dur, PREAMP, POSTAMP, ATTACK, RELEASE, THRESHOLD, COMPRESSRATIO, lookahead, windowsize[, DETECTIONTYPE, BYPASS, INPUTCHAN, PAN]) inskip = 0; dur = 5; ingain = 0; outgain = 0; attack = 0.01; release = 0.06; threshold = -10; ratio = 4; lookahead = attack; windowlen = 128; detect_type = 0; bypass = 0; outskip = 0; inchan = 0; pan = 0.5; // COMPLIMIT(outskip, inskip, dur, ingain, outgain, attack, release, threshold, // ratio, lookahead, windowlen, detect_type, bypass, inchan, pan); // General setup srand(); // num_hits = 99; // num_hits = 10; num_hits = 1; // Single hit // Time between hits t = 0; t_increment_range = { 0.5, 2.0 }; t_increment_range = { 0.05, 0.2 }; // Duration dur = 2.0; // dur = 0.05; // Frequency freqs = { 50 + FREQ_OFFSET, 65 + FREQ_OFFSET, 75 + FREQ_OFFSET // 65 + FREQ_OFFSET // 50 + FREQ_OFFSET }; freq_variation_multiplier = 0.5; // Hardness hard = 0.5; hard = 0.25 + (COLLISION_STRENGTH_PERC * 0.75); // Using collision strength // hard = 0.25 + (MODAL_POSITION * 0.75); // Using modal position // Modal model presets presets = { MODAL_PRESET_AGOGO, MODAL_PRESET_VIBRAPHONE, MODAL_PRESET_MARIMBA, MODAL_PRESET_RESO }; // Amplitudes amps_original = { 0.5, 0.2, 0.25, 0.05 }; amps = amps_original; amp_variation_multiplier = 0; amp_overdrive_multiplier = 1; // Pans pans = { 0.2, 0.4, 0.6, 0.8 }; pan_variation_multiplier = 0.1; // Positions pos = 0; meaty_positions = { 0.1, 0.2, 0.4, 0.6, 0.7, 0.8 }; positions_range = { 0.1, 0.8 }; // Main loop for (i=0; i