Home · Standalone · rtcmix~ · iRTcmix · Tutorials · Reference |
RTcmix an open-source digital signal processing and sound synthesis language |
about · links · contact |
METAFLUTE -- physical model flute
in RTcmix/insts/std quick syntax:SFLUTE(outskip, dur, noiseamp, length1 (samples), length2 (samples), amp[, pan])VSFLUTE(outskip, dur, noiseamp, length1low (samples), length1high (samples), length2low (samples), length2high (samples), amp, vibfreq1low (Hz), vibfreq1high (Hz), vibfreq2low (Hz), vibfreq2high (Hz)[, pan]) BSFLUTE(outskip, dur, noiseamp, length1low (samples), length1high (samples), length2low (samples), length2high (samples), amp[, pan]) LSFLUTE(outskip, dur, noiseamp, length1 (samples), length2 (samples), amp[, pan])
METAFLUTE is a family of instruments implmenting a physical model of a flute. The different versions allow for pitch-bending (BSFLUTE, vibrato (VSFLUTE), and an 'unarticulated' (legato) attack (LSFLUTE -- SFLUTE is the basic model). SFLUTE p0 = output start time (seconds) p1 = duration (seconds) p2 = noise amplitude (relative to overall amplitude; usually 0-1) p3 = length1 (samples, usually 5-200) p4 = length2 (samples, usually 5-200) p5 = amplitude multiplier (relative multiplier of input signal) p6 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0] Because this instrument has not been updated for pfield control, the older makegen control envelope sysystem should be used: assumes function table 1 is the noise amplitude envelope function table 2 is the overall amplitude envelope Parameters after the [bracket] are optional and default to 0 unless otherwise noted. Author: Brad Garton VSFLUTE p0 = output start time (seconds) p1 = duration (seconds) p2 = noise amplitude (relative to overall amplitude; usually 0-1) p3 = length1 low value (samples, usually 5-200) p4 = length1 high value (samples, usually 5-200) p5 = length2 low value (samples, usually 5-200) p6 = length2 high value (samples, usually 5-200) p7 = amplitude multiplier (relative multiplier of input signal) p8 = vibrato frequency 1 low value (Hz, usually < 20) p9 = vibrato frequency 1 high value (Hz, usually < 20) p10 = vibrato frequency 2 low value (Hz, usually < 20) p11 = vibrato frequency 2 high value (Hz, usually < 20) p12 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0] Because this instrument has not been updated for pfield control, the older makegen control envelope sysystem should be used: assumes function table 1 is the noise amplitude envelope function table 2 is the overall amplitude envelope, function table 3 is the vibrato waveform for length1 (between p3 and p4), function table 4 is the vibrato waveform for length2 (between p5 and p6) Parameters after the [bracket] are optional and default to 0 unless otherwise noted. Author: Brad Garton BSFLUTE p0 = output start time (seconds) p1 = duration (seconds) p2 = noise amplitude (relative to overall amplitude; usually 0-1) p3 = length1 low value (samples, usually 5-200) p4 = length1 high value (samples, usually 5-200) p5 = length2 low value (samples, usually 5-200) p6 = length2 high value (samples, usually 5-200) p7 = amplitude multiplier (relative multiplier of input signal) p8 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0] Because this instrument has not been updated for pfield control, the older makegen control envelope sysystem should be used: assumes function table 1 is the noise amplitude envelope function table 2 is the overall amplitude envelope, function table 3 is the control envelope for length1 (between p3 and p4), function table 4 is the control envelope for length2 (between p5 and p6) Parameters after the [bracket] are optional and default to 0 unless otherwise noted. Author: Brad Garton LSFLUTE p0 = output start time (seconds) p1 = duration (seconds) p2 = noise amplitude (relative to overall amplitude; usually 0-1) p3 = length1 (samples, usually 5-200) p4 = length2 (samples, usually 5-200) p5 = amplitude multiplier (relative multiplier of input signal) p6 = pan (0-1 stereo; 0.5 is middle) [optional; default is 0] Because this instrument has not been updated for pfield control, the older makegen control envelope sysystem should be used: assumes function table 1 is the noise amplitude envelope function table 2 is the overall amplitude envelope Parameters after the [bracket] are optional and default to 0 unless otherwise noted. Author: Brad Garton METAFLUTE is a physical modeling instrument based on Perry Cook's original "Slide Flute" waveguide model. METAFLUTE has several variants: a simple flute model (SFLUTE), a model with pitch-bending (BSFLUTE), and a model with wavetable-defined vibrato (VSFLUTE). These could be consolidated into a single instrument with pfield control. Hasn't happened yet, but probably should, because there really isn't an equivalent in the STK instruments (MBLOWBOTL, etc.). LSFLUTE does the same thing as SFLUTE, but without reinitializing the internal buffers, allowing you to get legato and slurred-note effects -- just like a REAL flute! Usage NotesThe METAFLUTE instruments are older, reflected in the use of the old makegen control envelope and waveform table system as well as the use of different instruments to accomplish tasks (pitch bending, vibrato) that could easily be handled via pfield controls. The modeled flutes are also tricky to use; the tuning is dependent on the length of the slides and the 'context' of the note when it is played.Specifying pitch via two slide lengths isn't optimum, but that's the way the model was constructed. (remember this was one of the first ones Perry did) Here is a rough tuning-table for length1 and length2 to produce a given note: c8 == middle "C", 8.00 in oct.pc note length1 length2 g7 112 25 ab7 106 24 a7 100 19 bb7 95 21 b7 89 19 c8 84 18 db8 79 23 d8 75 19 eb8 70 15 e8 67 16 f8 63 19 gb8 59 17 g8 56 17 ab8 53 25 a8 50 16 bb8 47 12 b8 44 11 c9 42 10 db9 39 10 d9 37 8 eb9 35 9 e9 33 18 f9 31 18 gb9 29 39 g9 28 14 ab9 26 15 a9 24 17 bb9 23 14 b9 22 34 c10 21 9These are approximate (in fact, they were done "by ear"), so your mileage may vary. LSFLUTE will not work if more than one SFLUTE is active. An SFLUTE note has to precede it, although it can have 0 duration. To be honest, LSFLUTE isn't all that effectve (and I'm not sure it functions properly). Sample ScoresSFLUTE:rtsetparams(44100, 2) load("METAFLUTE") makegen(1, 24, 1000, 0,1, 1.5,1) makegen(2, 24, 1000, 0,0, 0.05,1, 1.49,1, 1.5,0) SFLUTE(0, 1.5, 0.1, 40, 28, 7000) SFLUTE(1.5, 1.5, 0.1, 40, 22, 7000) VSFLUTE: rtsetparams(44100, 2) load("METAFLUTE") makegen(1, 7, 1000, 1, 1000, 1) makegen(2, 7, 1000, 1, 1000, 1) makegen(3, 10, 1000, 1) makegen(4, 10, 1000, 1) VSFLUTE(0, 3.5, 0.1, 60,62, 30,40, 5000, 1.0,4.0, 1.0,5.0) VSFLUTE(4, 3.5, 0.1, 48,50, 30,45, 5000, 4.0,7.0, 3.0,5.0) BSFLUTE: rtsetparams(44100, 2) load("METAFLUTE") makegen(1, 7, 1000, 1, 1000, 1) makegen(2, 7, 1000, 1, 1000, 1) makegen(3, 7, 1000, 0, 500, 1, 500, 0) makegen(4, 7, 1000, 0, 1000, 1) BSFLUTE(0, 1.5, 0.1, 40,50, 28,40, 5000) LSFLUTE: rtsetparams(44100, 2) load("METAFLUTE") makegen(1, 24, 1000, 0, 1, 1.5, 1) makegen(2, 24, 1000, 0, 1, 1.5, 1) SFLUTE(0.000000, 0.100000, 0.050000, 100.000000, 100.000000, 5000.000000) LSFLUTE(0.000000, 0.280000, 0.040000, 50.000000, 16.000000, 5000.000000) LSFLUTE(0.280000, 0.280000, 0.040000, 50.000000, 26.000000, 5000.000000) LSFLUTE(0.560000, 0.280000, 0.040000, 20.000000, 46.000000, 5000.000000) LSFLUTE(0.840000, 0.280000, 0.040000, 50.000000, 16.000000, 5000.000000) See Alsomakegen, CLAR, MBLOWBOTL, MBLOWHOLE, MBRASS, MCLAR, MSAXOFONY |