p0 = output start time (seconds) p1 = duration (seconds) p2 = amplitude (absolute, for 16-bit soundfiles: 0-32768) p3 = frequency (Hz) p4 = stick hardness (0.0-1.0) p5 = stick position (0.0-1.0) p6 = modal preset - Marimba = 0 - Vibraphone = 1 - Agogo = 2 - Wood1 = 3 - Reso = 4 - Wood2 = 5 - Beats = 6 - Two Fixed = 7 - Clump = 8 p7 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0.5] p8 = amplitude envelope table [optional; default is 1.0] p2 (amplitude), p3 (frequency) and p7 (pan) can receive dynamic updates from a table or real-time control source. p8 (amplitude envelope table), if used, should be a reference to a pfield table-handle. Author: Brad Garton, based on code from the Synthesis ToolKit
Here's what Perry says about "ModalBar":
See also the MBANDEDWG instrument for an extended modal-model implementation.
MMODALBAR can produce other mono or stereo output.
Sample Scores
very basic:
rtsetparams(44100, 1) load("MMODALBAR") MMODALBAR(0, 1.0, 25000, 243.0, 0.4, 0.4, 0) MMODALBAR(1, 1.0, 25000, 243.0, 0.4, 0.4, 1) MMODALBAR(2, 1.0, 25000, 243.0, 0.4, 0.4, 2) MMODALBAR(3, 1.0, 25000, 243.0, 0.4, 0.4, 3) MMODALBAR(4, 1.0, 25000, 243.0, 0.4, 0.4, 4) MMODALBAR(5, 1.0, 25000, 243.0, 0.4, 0.4, 5) MMODALBAR(6, 1.0, 25000, 243.0, 0.4, 0.4, 6) MMODALBAR(7, 1.0, 25000, 243.0, 0.4, 0.4, 7) MMODALBAR(8, 1.0, 25000, 243.0, 0.4, 0.4, 8)
rtsetparams(44100, 2) load("MMODALBAR") st = 0 for (j = 0; j < 9; j = j+1) { hard = 0.0 for (i = 0; i < 10; i = i+1) { MMODALBAR(st, 1.0, 25000, 279.0, hard, 0.4, j) hard = hard + 0.1 st = st + 0.5 } MMODALBAR(st, 1.0, 25000, 243.0, hard-0.01, 0.4, j) }
rtsetparams(44100, 2) load("MMODALBAR") amp = 20000 ampenv = maketable("line", 1000, 0,1, 1, 1, 1.1, 0) pches = { 7.05, 7.07, 7.09, 7.10, 8.00, 8.03, 8.05, 8.07, 8.08, 8.09, 8.10, 9.00, 9.05, 9.07, 10.00 } lpches = len(pches) st = 0 for (i = 0; i < 200; i = i+1) { pos = random() hard = random() inst = trand(0, 9) pch = pches[trand(0, lpches)] MMODALBAR(st, 1.0, amp*ampenv, cpspch(pch), hard, pos, inst) st = st + 0.11 }