If you, like me, felt always uncomfortable editing the Prototype "ModalFilter Vocal Formants BPFs" you can download an easy-to-tweak version here:
http://kyma.symbolicsound.com/library/modalfilter-vocal-formants-bpfs-revisited/
Comparing the code between the two versions:
Original
{5 * !Index into: #( {0 @ 609} {1 @ 400} {2 @ 238} {3 @ 325} {4 @ 360} {5 @ 415} {6 @ 300} {7 @ 400} )} {5 * !Index into: #( {0 @ 1000} {1 @ 1700} {2 @ 1741} {3 @ 700} {4 @ 750} {5 @ 1400} {6 @ 1600} {7 @ 1050} )} {5 * !Index into: #( {0 @ 2450} {1 @ 2300} {2 @ 2450} {3 @ 2550} {4 @ 2400} {5 @ 2200} {6 @ 2150} {7 @ 2200} )} {5 * !Index into: #( {0 @ 2700} {1 @ 2900} {2 @ 2900} {3 @ 2850} {4 @ 2675} {5 @ 2800} {6 @ 2700} {7 @ 2650} )} {5 * !Index into: #( {0 @ 3240} {1 @ 3400} {2 @ 4000} {3 @ 3100} {4 @ 2950} {5 @ 3300} {6 @ 3100} {7 @ 3100} )}
Revisited
{
| index freqs nbrRows nbrColumns |
"Change this if you want to use a different hotValue or some CapyTalk expression.
The index is automatically normalized so 0 points to the first row and 1 to the last."
index := !Index.
"Change freq values here, make sure they have the same number of columns.
Stick to the syntax if you are adding/changing things. Don't use hotValues here."
freqs := Array
with: #(609 1000 2450 2700 3240)
with: #(400 1700 2300 2900 3400)
with: #(238 1741 2450 2900 4000)
with: #(325 700 2550 2850 3100)
with: #(360 750 2400 2675 2950)
with: #(415 1400 2200 2800 3300)
with: #(300 1600 2150 2700 3100)
with: #(400 1050 2200 2650 3100).
"DO NOT CHANGE anything below (unless you have a good reason to do so)."
nbrRows := freqs size - 1.
nbrColumns := (freqs at: 1) size - 1.
0 to: nbrColumns collect: [ :col |
| points |
points := 0 to: nbrRows collect: [ :row |
row @ (col of: (row of: freqs))
].
((index * nbrRows) into: points) hz
].
}
I also included a scripted version which is even easier to tweak ;)
@ssc: feel free to add / exchange this in the Kyma Prototypes
Also I realized that the Original version scales Index wrong (* 5 although there are 8 elements in the array). Another thing is that the ModeAmps are missing a column. I'm not sure if this is on purpose so I kept that.
Enjoy!