Properly patternify everything

This commit is contained in:
Aria
2025-11-16 22:17:53 -06:00
parent f5ed6dbe79
commit 641bd2f356
3 changed files with 123 additions and 95 deletions
+20 -25
View File
@@ -3638,6 +3638,13 @@ export const parray = (pats) => {
return acc;
};
const _ensureListPattern = (list) => {
if (Array.isArray(list)) {
return parray(list);
}
return reify(list);
};
/**
* Scale the magnitude of the harmonics of one of the core synths ('sine', 'tri', 'saw', ..)
*
@@ -3650,21 +3657,15 @@ export const parray = (pats) => {
* .partials([1, 0, 1, 0, 0, 1])
* @example
* s("saw").seg(8).n(irand(12)).scale("G#:minor")
* .partials(randL(16))
* .partials(binaryL(irand(256).add("1")))
*/
register('partials', (list, pat) => {
if (Array.isArray(list)) {
list = parray(list);
}
return pat.withValue((v) => (l) => ({ ...v, partials: l })).appLeft(list);
});
Pattern.prototype.partials = function (list) {
return this.withValue((v) => (l) => ({ ...v, partials: l })).appLeft(_ensureListPattern(list));
};
// Also create a top-level function
export const partials = (list) => {
if (Array.isArray(list)) {
list = parray(list);
}
return list.as('partials');
return _ensureListPattern(list).as('partials');
};
/**
@@ -3673,22 +3674,16 @@ export const partials = (list) => {
* @name phases
* @param {number[] | Pattern} phases List of [0, 1) phases for partials. 0th entry is the fundamental phase (i.e. DC offset is skipped)
* @example
* s("saw").seg(8).n(irand(12)).scale("G#:minor")
* .partials(randL(16))
* .phases(randL(16))
* // Phase cancellation
* s("saw").seg(8).n(irand(12)).scale("G#1:minor")
* .partials(partials([1, 1, 1]))
* .superimpose(x => x.phases([0.5, 0.5, 0.5]))
*/
register('phases', (list, pat) => {
if (Array.isArray(list)) {
list = parray(list);
}
pat = pat ?? pure({});
return pat.withValue((v) => (l) => ({ ...v, phases: l })).appLeft(list);
});
Pattern.prototype.phases = function (list) {
return this.withValue((v) => (l) => ({ ...v, phases: l })).appLeft(_ensureListPattern(list));
};
// Also create a top-level function
export const phases = (list) => {
if (Array.isArray(list)) {
list = parray(list);
}
return list.as('phases');
return _ensureListPattern(list).as('phases');
};
+96 -64
View File
@@ -7290,38 +7290,38 @@ exports[`runs examples > example "partials" example index 0 1`] = `
exports[`runs examples > example "partials" example index 1 1`] = `
[
"[ 0/1 → 1/8 | s:saw note:G#3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 1/8 → 1/4 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 1/4 → 3/8 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 3/8 → 1/2 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 1/2 → 5/8 | s:saw note:C#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 5/8 → 3/4 | s:saw note:A#3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 3/4 → 7/8 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 7/8 → 1/1 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 1/1 → 9/8 | s:saw note:F#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 9/8 → 5/4 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 5/4 → 11/8 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 11/8 → 3/2 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 3/2 → 13/8 | s:saw note:G#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 13/8 → 7/4 | s:saw note:E4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 7/4 → 15/8 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 15/8 → 2/1 | s:saw note:G#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 2/1 → 17/8 | s:saw note:D#5 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 17/8 → 9/4 | s:saw note:C#5 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 9/4 → 19/8 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 19/8 → 5/2 | s:saw note:C#5 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 5/2 → 21/8 | s:saw note:E4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 21/8 → 11/4 | s:saw note:A#3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 11/4 → 23/8 | s:saw note:G#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 23/8 → 3/1 | s:saw note:G#3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 3/1 → 25/8 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 25/8 → 13/4 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 13/4 → 27/8 | s:saw note:D#5 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 27/8 → 7/2 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 7/2 → 29/8 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 29/8 → 15/4 | s:saw note:D#5 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 15/4 → 31/8 | s:saw note:B4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 31/8 → 4/1 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] ]",
"[ 0/1 → 1/8 | s:saw note:G#3 partials:[1] ]",
"[ 1/8 → 1/4 | s:saw note:A#4 partials:[1 0 1 1 0 0 0 0] ]",
"[ 1/4 → 3/8 | s:saw note:D#4 partials:[1 0 1 1 1 1 1] ]",
"[ 3/8 → 1/2 | s:saw note:D#4 partials:[1 1 0 0 1 1 1] ]",
"[ 1/2 → 5/8 | s:saw note:C#4 partials:[1 0 0 0 0 1 1] ]",
"[ 5/8 → 3/4 | s:saw note:A#3 partials:[1 0 0 0 1 1] ]",
"[ 3/4 → 7/8 | s:saw note:B3 partials:[1 1 0 0 1 1] ]",
"[ 7/8 → 1/1 | s:saw note:D#4 partials:[1 1 0 0 1 1 0] ]",
"[ 1/1 → 9/8 | s:saw note:F#4 partials:[1 0 0 0 0 1 1 0] ]",
"[ 9/8 → 5/4 | s:saw note:A#4 partials:[1 0 1 0 1 1 0 1] ]",
"[ 5/4 → 11/8 | s:saw note:A#4 partials:[1 0 1 1 1 0 1 1] ]",
"[ 11/8 → 3/2 | s:saw note:B3 partials:[1 0 1 1 1 1] ]",
"[ 3/2 → 13/8 | s:saw note:G#4 partials:[1 0 0 1 1 1 0 0] ]",
"[ 13/8 → 7/4 | s:saw note:E4 partials:[1 0 0 0 0 0 0 0] ]",
"[ 7/4 → 15/8 | s:saw note:B3 partials:[1 1 0 1 0 1] ]",
"[ 15/8 → 2/1 | s:saw note:G#4 partials:[1 0 0 1 1 0 0 1] ]",
"[ 2/1 → 17/8 | s:saw note:D#5 partials:[1 1 1 1 0 1 1 0] ]",
"[ 17/8 → 9/4 | s:saw note:C#5 partials:[1 1 1 0 1 0 0 0] ]",
"[ 9/4 → 19/8 | s:saw note:D#4 partials:[1 0 1 1 0 0 1] ]",
"[ 19/8 → 5/2 | s:saw note:C#5 partials:[1 1 0 1 0 1 1 1] ]",
"[ 5/2 → 21/8 | s:saw note:E4 partials:[1 1 1 0 1 1 0] ]",
"[ 21/8 → 11/4 | s:saw note:A#3 partials:[1 0 1 0 1 0] ]",
"[ 11/4 → 23/8 | s:saw note:G#4 partials:[1 0 1 0 0 0 1 1] ]",
"[ 23/8 → 3/1 | s:saw note:G#3 partials:[1 0 1] ]",
"[ 3/1 → 25/8 | s:saw note:B3 partials:[1 1 1 0 0 0] ]",
"[ 25/8 → 13/4 | s:saw note:D#4 partials:[1 0 1 1 0 0 0] ]",
"[ 13/4 → 27/8 | s:saw note:D#5 partials:[1 1 1 1 1 1 1 1] ]",
"[ 27/8 → 7/2 | s:saw note:D#4 partials:[1 1 0 1 0 0 1] ]",
"[ 7/2 → 29/8 | s:saw note:D#4 partials:[1 1 0 1 0 0 1] ]",
"[ 29/8 → 15/4 | s:saw note:D#5 partials:[1 1 1 1 0 0 0 1] ]",
"[ 15/4 → 31/8 | s:saw note:B4 partials:[1 1 0 1 0 0 0 0] ]",
"[ 31/8 → 4/1 | s:saw note:A#4 partials:[1 0 1 1 1 1 0 1] ]",
]
`;
@@ -7580,38 +7580,70 @@ exports[`runs examples > example "phasersweep" example index 0 1`] = `
exports[`runs examples > example "phases" example index 0 1`] = `
[
"[ 0/1 → 1/8 | s:saw note:G#3 partials:[1 0 0 0 0 0 0 0 0] phases:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ]",
"[ 1/8 → 1/4 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.6852155700325966 0.17723728902637959 0.8521428182721138 0.5022399611771107 0.9780306946486235 0.3186125475913286 0.1851645242422819 0.8495976086705923 0.9832699615508318 0.8203876558691263 0.7365445382893085 0.6727468091994524 0.4794053863734007 0.35482912696897984 0.5666771996766329 0.4527092967182398 0.5699347071349621 0.7358296867460012 0.5444891396909952 0.11270620673894882] ]",
"[ 1/43/8 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.36975969187915325 0.18273563869297504 0.012781793251633644 0.5423613861203194 0.12467948533594608 0.7188410349190235 0.856887087225914 0.8818203993141651 0.8917219173163176 0.110306391492486 0.07148400321602821 0.8493648078292608 0.9100127145648003 0.4820226952433586 0.037094997242093086 0.9857278112322092 0.23439379036426544 0.46701666340231895 0.15832693874835968 0.6921216659247875] ]",
"[ 3/8 → 1/2 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.40139251574873924 0.15799915604293346 0.9604704882949591 0.03873417526483536 0.4157217647880316 0.27756719291210175 0.8800551909953356 0.5692523363977671 0.11026228219270706 0.7190891150385141 0.404962956905365 0.50828124769032 0.9681975357234478 0.34809120930731297 0.9345223866403103 0.9851128943264484 0.11768617853522301 0.538263589143753 0.6650313660502434 0.02540053054690361] ]",
"[ 1/25/8 | s:saw note:C#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.2604806162416935 0.3654713351279497 0.9900747090578079 0.22572625242173672 0.9328999016433954 0.5273839123547077 0.7047769222408533 0.7311522178351879 0.42673745937645435 0.7099553178995848 0.5597201306372881 0.8968746215105057 0.15695763938128948 0.3792166206985712 0.4147114269435406 0.38739512488245964 0.7585489805787802 0.3875726908445358 0.867314238101244 0.1866922564804554] ]",
"[ 5/8 → 3/4 | s:saw note:A#3 partials:[1 0 0 0 0 0 0 0 0] phases:[0.1356358677148819 0.5403102282434702 0.07321739941835403 0.9646544624119997 0.7707359045743942 0.46888123638927937 0.9489036612212658 0.366748945787549 0.5029341224581003 0.7194344792515039 0.282692551612854 0.7303404528647661 0.7155798356980085 0.637981578707695 0.39654020965099335 0.008769871667027473 0.5857728160917759 0.3513293471187353 0.43080931156873703 0.518209295347333] ]",
"[ 3/47/8 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] phases:[0.19582648016512394 0.0024610888212919235 0.08272589556872845 0.09592138417065144 0.9678201265633106 0.3249557167291641 0.9463537875562906 0.20766610652208328 0.19126702845096588 0.4482936095446348 0.23314787074923515 0.07724925130605698 0.8329483829438686 0.39804019033908844 0.2529231123626232 0.889951054006815 0.716364661231637 0.3905949704349041 0.990752438083291 0.275751456618309] ]",
"[ 7/8 → 1/1 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.3976310808211565 0.13476407527923584 0.963376859202981 0.6579397786408663 0.5203975513577461 0.865439185872674 0.5583905670791864 0.2736878804862499 0.17021040990948677 0.3456706069409847 0.5848060417920351 0.9889458417892456 0.9307208992540836 0.7148868907243013 0.7419579364359379 0.8103639334440231 0.3331365995109081 0.19130694679915905 0.03261224366724491 0.808204049244523] ]",
"[ 1/19/8 | s:saw note:F#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.5195421651005745 0.9349692352116108 0.1718774326145649 0.9601866770535707 0.2802200373262167 0.8732441551983356 0.01810968853533268 0.42737805284559727 0.26281314715743065 0.7521175239235163 0.568607984110713 0.5046361442655325 0.03172125294804573 0.3706745784729719 0.9402780849486589 0.3995086643844843 0.35769628174602985 0.023460431024432182 0.043030962347984314 0.6526827793568373] ]",
"[ 9/8 → 5/4 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.6724895145744085 0.21410975232720375 0.5229047331959009 0.20957534946501255 0.7402758821845055 0.2681974694132805 0.4059371296316385 0.9422509074211121 0.6584139950573444 0.26589646376669407 0.16059227287769318 0.17166719026863575 0.6234225388616323 0.020276052877306938 0.4836352560669184 0.8991366866976023 0.1860280428081751 0.06238717399537563 0.4383583478629589 0.4902789145708084] ]",
"[ 5/411/8 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.7287282031029463 0.9341024849563837 0.5098182689398527 0.5608645845204592 0.6812942810356617 0.5015129633247852 0.4602120481431484 0.927369873970747 0.19313151575624943 0.5240397155284882 0.444337897002697 0.19362097792327404 0.7068767864257097 0.920799495652318 0.2648108974099159 0.9700228478759527 0.20331068895757198 0.38390261493623257 0.0038731005042791367 0.9156702514737844] ]",
"[ 11/8 → 3/2 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] phases:[0.18280375190079212 0.40527783520519733 0.30504362285137177 0.7622128054499626 0.842598931863904 0.053796686232089996 0.5124214049428701 0.9178454764187336 0.09979427233338356 0.8280061967670918 0.5572535842657089 0.0622002687305212 0.9205668028444052 0.7738517206162214 0.04644870012998581 0.2117986585944891 0.26436166651546955 0.26421429589390755 0.4649084359407425 0.10490566119551659] ]",
"[ 3/213/8 | s:saw note:G#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.6084080748260021 0.4424846563488245 0.755185678601265 0.04328125901520252 0.04244415462017059 0.3994515985250473 0.787989066913724 0.3180440980941057 0.30072982981801033 0.24217353947460651 0.7830625418573618 0.7733921892940998 0.7720277719199657 0.4402343425899744 0.21046430803835392 0.38635879568755627 0.5671729445457458 0.9510521050542593 0.010756833478808403 0.5728995501995087] ]",
"[ 13/8 → 7/4 | s:saw note:E4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.49675471149384975 0.2965749856084585 0.09848833456635475 0.19172007404267788 0.22677889838814735 0.9841996673494577 0.11156083643436432 0.6079028844833374 0.9412728808820248 0.9376902114599943 0.3611182738095522 0.5901201106607914 0.26860327646136284 0.9782364591956139 0.18694544956088066 0.004641396924853325 0.42020696587860584 0.06209231913089752 0.4790260009467602 0.21088780276477337] ]",
"[ 7/4 → 15/8 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] phases:[0.20473789609968662 0.7480021081864834 0.30757393687963486 0.5827204789966345 0.22094514779746532 0.6370698790997267 0.16573002003133297 0.0638319905847311 0.12625465169548988 0.4565841108560562 0.46095744147896767 0.646710304543376 0.045173922553658485 0.4833248760551214 0.1326297614723444 0.5275116711854935 0.9871038906276226 0.424171743914485 0.761672617867589 0.08582597225904465] ]",
"[ 15/8 → 2/1 | s:saw note:G#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.5945571791380644 0.3962489552795887 0.563431927934289 0.4742323160171509 0.4185752831399441 0.9703940469771624 0.5282467231154442 0.6896266285330057 0.6941124945878983 0.2423656489700079 0.225077323615551 0.5445358455181122 0.014737963676452637 0.2848400343209505 0.14955217391252518 0.9782383926212788 0.6327074971050024 0.23327310755848885 0.4324392694979906 0.4326172359287739] ]",
"[ 2/1 → 17/8 | s:saw note:D#5 partials:[1 0 0 0 0 0 0 0 0] phases:[0.9595271199941635 0.5427457969635725 0.45864437520504 0.8057199101895094 0.18388565629720688 0.17221237532794476 0.8838487900793552 0.4976818822324276 0.7543560564517975 0.34416236728429794 0.8638174068182707 0.5697487238794565 0.005243342369794846 0.6361143626272678 0.6039986703544855 0.38708674535155296 0.5463927835226059 0.5717255529016256 0.15141930803656578 0.22688637301325798] ]",
"[ 17/8 → 9/4 | s:saw note:C#5 partials:[1 0 0 0 0 0 0 0 0] phases:[0.9033902939409018 0.22919894196093082 0.8388008493930101 0.9108077362179756 0.32246968522667885 0.16122018359601498 0.31932324543595314 0.18524732999503613 0.19110161997377872 0.5346284378319979 0.38531880639493465 0.7401201985776424 0.07450124807655811 0.18417961709201336 0.5768439751118422 0.7161206863820553 0.5836263168603182 0.9591280855238438 0.7728104889392853 0.0006709620356559753] ]",
"[ 9/419/8 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.34548251144587994 0.30419893004000187 0.10205957666039467 0.9906709585338831 0.3156223688274622 0.3745057098567486 0.7668170686811209 0.9379972033202648 0.689277408644557 0.8690325897186995 0.36728161945939064 0.9668608456850052 0.7341883443295956 0.32575040124356747 0.8095720671117306 0.3182998225092888 0.38158727809786797 0.5534052699804306 0.5973556581884623 0.752589326351881] ]",
"[ 19/8 → 5/2 | s:saw note:C#5 partials:[1 0 0 0 0 0 0 0 0] phases:[0.8365066405385733 0.5369812995195389 0.2263860274106264 0.21759207546710968 0.2172116208821535 0.09454222768545151 0.8075542915612459 0.9017798062413931 0.46291174553334713 0.01372767798602581 0.3509599883109331 0.4871185813099146 0.3525365497916937 0.6883120182901621 0.19577431678771973 0.287217665463686 0.025726469233632088 0.11798650585114956 0.8464976660907269 0.981348654255271] ]",
"[ 5/221/8 | s:saw note:E4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.45861607417464256 0.6807645913213491 0.07009582966566086 0.1450389064848423 0.2579921595752239 0.612881500273943 0.5503941811621189 0.7027011960744858 0.681745121255517 0.24246043153107166 0.2981361001729965 0.02195165678858757 0.10680225491523743 0.9413154497742653 0.6108828671276569 0.9479686040431261 0.17599895782768726 0.6629563421010971 0.5875700414180756 0.05703482776880264] ]",
"[ 21/8 → 11/4 | s:saw note:A#3 partials:[1 0 0 0 0 0 0 0 0] phases:[0.16019348427653313 0.47758268006145954 0.9749126061797142 0.8025561925023794 0.3600110989063978 0.324309878051281 0.5655391272157431 0.13364790193736553 0.3045873437076807 0.3814875278621912 0.14350778982043266 0.6017840709537268 0.11792952008545399 0.7185723781585693 0.6789924055337906 0.43416675738990307 0.9378792773932219 0.48162082210183144 0.37555896304547787 0.4686833508312702] ]",
"[ 11/423/8 | s:saw note:G#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.6332327704876661 0.7342763151973486 0.16935866326093674 0.4754706546664238 0.528122790157795 0.21934260986745358 0.7476693484932184 0.2995396424084902 0.46688378043472767 0.9741295631974936 0.9878341723233461 0.9837898630648851 0.15651432052254677 0.2896903567016125 0.7395600061863661 0.3490046579390764 0.014511989429593086 0.6857758145779371 0.7405510656535625 0.4224672969430685] ]",
"[ 23/8 → 3/1 | s:saw note:G#3 partials:[1 0 0 0 0 0 0 0 0] phases:[0.01625417172908783 0.28409438766539097 0.3075305689126253 0.40343056432902813 0.5556836389005184 0.6926821582019329 0.5635769125074148 0.017873913049697876 0.5601800158619881 0.28681862354278564 0.8022358678281307 0.13467839546501637 0.02351163513958454 0.1987263821065426 0.4515750799328089 0.0009761657565832138 0.11555273085832596 0.25053937546908855 0.29571316950023174 0.15751986764371395] ]",
"[ 3/125/8 | s:saw note:B3 partials:[1 0 0 0 0 0 0 0 0] phases:[0.21728911064565182 0.7605195846408606 0.11240843310952187 0.4372697602957487 0.15630115941166878 0.1653979979455471 0.5303416550159454 0.07218753732740879 0.47459222190082073 0.04051801189780235 0.8742353077977896 0.9356274232268333 0.6662059463560581 0.4364917427301407 0.4163493011146784 0.9820694588124752 0.09098831936717033 0.41974459774792194 0.05833998881280422 0.2601191997528076] ]",
"[ 25/8 → 13/4 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.34324387833476067 0.14098095521330833 0.012934491038322449 0.827436288818717 0.5283997394144535 0.8942463714629412 0.4924008697271347 0.9298017006367445 0.18076439201831818 0.5243716649711132 0.015810951590538025 0.7476964127272367 0.6734520178288221 0.3267945274710655 0.9760967157781124 0.9397075213491917 0.7225867230445147 0.938586825504899 0.9692913070321083 0.5398030783981085] ]",
"[ 13/427/8 | s:saw note:D#5 partials:[1 0 0 0 0 0 0 0 0] phases:[0.9923650715500116 0.7797339502722025 0.1992435697466135 0.9005183521658182 0.718992218375206 0.23745290748775005 0.28872333094477654 0.35448253713548183 0.6209003105759621 0.3761858306825161 0.019171399995684624 0.7563913837075233 0.1559751983731985 0.4236980527639389 0.08094430714845657 0.4560011047869921 0.5958948992192745 0.37061405926942825 0.18633292242884636 0.346891064196825] ]",
"[ 27/8 → 7/2 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.40869180113077164 0.4018078800290823 0.34696186147630215 0.9572948440909386 0.400035472586751 0.3531211093068123 0.7240961641073227 0.8125612027943134 0.3587487991899252 0.1545814611017704 0.8934940584003925 0.9094721674919128 0.2336172368377447 0.17333386465907097 0.227950319647789 0.12384821102023125 0.5896956156939268 0.3293947223573923 0.619540523737669 0.8746719229966402] ]",
"[ 7/229/8 | s:saw note:D#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.40994881466031075 0.6455810181796551 0.35704658553004265 0.2732649203389883 0.31587288342416286 0.23243548162281513 0.22569947130978107 0.17241661623120308 0.7624858524650335 0.02111036144196987 0.6966175157576799 0.32112877257168293 0.2512516509741545 0.08602019399404526 0.16260642930865288 0.2627844326198101 0.1954369619488716 0.16302869468927383 0.4046020060777664 0.0904023926705122] ]",
"[ 29/8 → 15/4 | s:saw note:D#5 partials:[1 0 0 0 0 0 0 0 0] phases:[0.9391485787928104 0.3380728308111429 0.7723016366362572 0.998674126341939 0.7193406894803047 0.6963680125772953 0.9260678570717573 0.7829763628542423 0.42278125509619713 0.913721015676856 0.38873230293393135 0.7281809840351343 0.952108234167099 0.649707704782486 0.9456792045384645 0.4331315904855728 0.63712502643466 0.9180345926433802 0.7379776351153851 0.7914005517959595] ]",
"[ 15/431/8 | s:saw note:B4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.8121673222631216 0.25548945367336273 0.5759696904569864 0.6668333616107702 0.9233786761760712 0.11143362522125244 0.9734930321574211 0.369325939565897 0.6248745918273926 0.719582824036479 0.24051696807146072 0.20336504466831684 0.6860735435038805 0.10649923048913479 0.8736641593277454 0.042930178344249725 0.09769343212246895 0.7966452036052942 0.5882443580776453 0.8942952174693346] ]",
"[ 31/8 → 4/1 | s:saw note:A#4 partials:[1 0 0 0 0 0 0 0 0] phases:[0.7361665386706591 0.7657648548483849 0.21474426984786987 0.8228576295077801 0.5647660344839096 0.08148551359772682 0.9714624118059874 0.13992334716022015 0.9609981551766396 0.6844500284641981 0.23610286228358746 0.5974335502833128 0.20678778178989887 0.5261937081813812 0.7417268306016922 0.9810918122529984 0.8138748407363892 0.9389897901564837 0.7420910261571407 0.48839940316975117] ]",
"[ 0/1 → 1/8 | s:saw note:G#1 partials:{partials:1} ]",
"[ 0/1 → 1/8 | s:saw note:G#1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 1/81/4 | s:saw note:A#2 partials:{partials:1} ]",
"[ 1/8 → 1/4 | s:saw note:A#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 1/43/8 | s:saw note:D#2 partials:{partials:1} ]",
"[ 1/4 → 3/8 | s:saw note:D#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 3/81/2 | s:saw note:D#2 partials:{partials:1} ]",
"[ 3/8 → 1/2 | s:saw note:D#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 1/25/8 | s:saw note:C#2 partials:{partials:1} ]",
"[ 1/2 → 5/8 | s:saw note:C#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 5/83/4 | s:saw note:A#1 partials:{partials:1} ]",
"[ 5/8 → 3/4 | s:saw note:A#1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 3/47/8 | s:saw note:B1 partials:{partials:1} ]",
"[ 3/4 → 7/8 | s:saw note:B1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 7/8 → 1/1 | s:saw note:D#2 partials:{partials:1} ]",
"[ 7/8 → 1/1 | s:saw note:D#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 1/1 → 9/8 | s:saw note:F#2 partials:{partials:1} ]",
"[ 1/1 → 9/8 | s:saw note:F#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 9/85/4 | s:saw note:A#2 partials:{partials:1} ]",
"[ 9/8 → 5/4 | s:saw note:A#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 5/411/8 | s:saw note:A#2 partials:{partials:1} ]",
"[ 5/4 → 11/8 | s:saw note:A#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 11/8 → 3/2 | s:saw note:B1 partials:{partials:1} ]",
"[ 11/8 → 3/2 | s:saw note:B1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 3/213/8 | s:saw note:G#2 partials:{partials:1} ]",
"[ 3/2 → 13/8 | s:saw note:G#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 13/8 → 7/4 | s:saw note:E2 partials:{partials:1} ]",
"[ 13/8 → 7/4 | s:saw note:E2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 7/415/8 | s:saw note:B1 partials:{partials:1} ]",
"[ 7/4 → 15/8 | s:saw note:B1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 15/82/1 | s:saw note:G#2 partials:{partials:1} ]",
"[ 15/8 → 2/1 | s:saw note:G#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 2/1 → 17/8 | s:saw note:D#3 partials:{partials:1} ]",
"[ 2/1 → 17/8 | s:saw note:D#3 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 17/8 → 9/4 | s:saw note:C#3 partials:{partials:1} ]",
"[ 17/8 → 9/4 | s:saw note:C#3 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 9/4 → 19/8 | s:saw note:D#2 partials:{partials:1} ]",
"[ 9/4 → 19/8 | s:saw note:D#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 19/8 → 5/2 | s:saw note:C#3 partials:{partials:1} ]",
"[ 19/8 → 5/2 | s:saw note:C#3 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 5/2 → 21/8 | s:saw note:E2 partials:{partials:1} ]",
"[ 5/2 → 21/8 | s:saw note:E2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 21/8 → 11/4 | s:saw note:A#1 partials:{partials:1} ]",
"[ 21/8 → 11/4 | s:saw note:A#1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 11/4 → 23/8 | s:saw note:G#2 partials:{partials:1} ]",
"[ 11/4 → 23/8 | s:saw note:G#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 23/8 → 3/1 | s:saw note:G#1 partials:{partials:1} ]",
"[ 23/8 → 3/1 | s:saw note:G#1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 3/1 → 25/8 | s:saw note:B1 partials:{partials:1} ]",
"[ 3/1 → 25/8 | s:saw note:B1 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 25/8 → 13/4 | s:saw note:D#2 partials:{partials:1} ]",
"[ 25/8 → 13/4 | s:saw note:D#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 13/4 → 27/8 | s:saw note:D#3 partials:{partials:1} ]",
"[ 13/4 → 27/8 | s:saw note:D#3 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 27/8 → 7/2 | s:saw note:D#2 partials:{partials:1} ]",
"[ 27/8 → 7/2 | s:saw note:D#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 7/2 → 29/8 | s:saw note:D#2 partials:{partials:1} ]",
"[ 7/2 → 29/8 | s:saw note:D#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 29/8 → 15/4 | s:saw note:D#3 partials:{partials:1} ]",
"[ 29/8 → 15/4 | s:saw note:D#3 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 15/4 → 31/8 | s:saw note:B2 partials:{partials:1} ]",
"[ 15/4 → 31/8 | s:saw note:B2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
"[ 31/8 → 4/1 | s:saw note:A#2 partials:{partials:1} ]",
"[ 31/8 → 4/1 | s:saw note:A#2 partials:{partials:1} phases:[0.5 0.5 0.5] ]",
]
`;
+7 -6
View File
@@ -85,7 +85,7 @@ note("c2 <eb2 <g2 g1>>".fast(2))
._scope()`}
/>
which acts as a spectral filter or
which acts as a spectral filter. Or:
<MiniRepl
client:idle
@@ -129,11 +129,12 @@ These phases too can be declared in Strudel and can give your sounds interesting
<MiniRepl
client:idle
tune={`note("c2 <eb2 <g2 g1>>".fast(2))
.sound("saw")
.partials(randL(100))
.phases(randL(100))
._scope()`}
tune={`s("saw").seg(16).n(irand(12)).scale("F1:minor")
.penv(48).panchor(0).pdec(0.05)
.delay(0.25).room(0.25)
.compressor(-20).vib(0.3)
.partials(randL(200))
.phases(randL(200))`}
/>
## Vibrato