Merge pull request #277 from tidalcycles/tune-licenses

add licenses / credits to all tunes + remove some
This commit is contained in:
Felix Roos 2022-12-02 12:18:41 +01:00 committed by GitHub
commit fcaab633c1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 370 additions and 769 deletions

View File

@ -7,7 +7,7 @@ exports[`renders tunes > tune: amensister 1`] = `
"3/8 -> 1/2: {\\"n\\":1,\\"s\\":\\"amencutup\\",\\"room\\":0.5}",
"3/4 -> 7/8: {\\"n\\":3,\\"s\\":\\"amencutup\\",\\"room\\":0.5}",
"7/8 -> 1/1: {\\"n\\":3,\\"s\\":\\"amencutup\\",\\"room\\":0.5}",
"1/4 -> 3/8: {\\"n\\":1,\\"speed\\":-2,\\"delay\\":0.5,\\"s\\":\\"amencutup\\",\\"room\\":0.5}",
"1/4 -> 3/8: {\\"n\\":1,\\"speed\\":2,\\"delay\\":0.5,\\"s\\":\\"amencutup\\",\\"room\\":0.5}",
"0/1 -> 1/8: {\\"note\\":\\"Eb1\\",\\"s\\":\\"sawtooth\\",\\"decay\\":0.1,\\"sustain\\":0,\\"gain\\":0.4,\\"cutoff\\":300.0066107586751,\\"resonance\\":10}",
"0/1 -> 1/8: {\\"note\\":\\"F1\\",\\"s\\":\\"sawtooth\\",\\"decay\\":0.1,\\"sustain\\":0,\\"gain\\":0.4,\\"cutoff\\":300.0066107586751,\\"resonance\\":10}",
"1/4 -> 3/8: {\\"note\\":\\"A1\\",\\"s\\":\\"sawtooth\\",\\"decay\\":0.1,\\"sustain\\":0,\\"gain\\":0.4,\\"cutoff\\":300.7878869297153,\\"resonance\\":10}",
@ -318,36 +318,6 @@ exports[`renders tunes > tune: blippyRhodes 1`] = `
]
`;
exports[`renders tunes > tune: bossa 1`] = `
[
"0/1 -> 1/4: {\\"note\\":\\"Bb3\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5185185185185186}",
"0/1 -> 1/4: {\\"note\\":\\"D4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.537037037037037}",
"0/1 -> 1/4: {\\"note\\":\\"Eb4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5416666666666667}",
"0/1 -> 1/4: {\\"note\\":\\"G4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5601851851851851}",
"1/2 -> 5/4: {\\"note\\":\\"Bb3\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5185185185185186}",
"1/2 -> 5/4: {\\"note\\":\\"D4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.537037037037037}",
"1/2 -> 5/4: {\\"note\\":\\"Eb4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5416666666666667}",
"1/2 -> 5/4: {\\"note\\":\\"G4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5601851851851851}",
"0/1 -> 1/2: {\\"note\\":\\"C2\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.41666666666666663}",
"3/4 -> 7/8: {\\"note\\":\\"G2\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.44907407407407407}",
]
`;
exports[`renders tunes > tune: bossaRandom 1`] = `
[
"0/1 -> 1/4: {\\"note\\":\\"G4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5601851851851851}",
"0/1 -> 1/4: {\\"note\\":\\"B4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5787037037037037}",
"0/1 -> 1/4: {\\"note\\":\\"C5\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5833333333333333}",
"0/1 -> 1/4: {\\"note\\":\\"E5\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.6018518518518519}",
"3/4 -> 1/1: {\\"note\\":\\"G4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5601851851851851}",
"3/4 -> 1/1: {\\"note\\":\\"B4\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5787037037037037}",
"3/4 -> 1/1: {\\"note\\":\\"C5\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.5833333333333333}",
"3/4 -> 1/1: {\\"note\\":\\"E5\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.6018518518518519}",
"0/1 -> 1/2: {\\"note\\":\\"A2\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.45833333333333337}",
"1/2 -> 1/1: {\\"note\\":\\"A2\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.45833333333333337}",
]
`;
exports[`renders tunes > tune: bridgeIsOver 1`] = `
[
"0/1 -> 5/26: {\\"note\\":\\"B2\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.46759259259259256}",
@ -7244,257 +7214,6 @@ exports[`renders tunes > tune: giantSteps 1`] = `
]
`;
exports[`renders tunes > tune: giantStepsReggae 1`] = `
[
"0/1 -> 25/32: {\\"note\\":\\"F#5\\"}",
"25/32 -> 25/16: {\\"note\\":\\"D5\\"}",
"25/64 -> 75/128: {\\"note\\":\\"A#3\\"}",
"25/64 -> 75/128: {\\"note\\":\\"C#4\\"}",
"25/64 -> 75/128: {\\"note\\":\\"D#4\\"}",
"25/64 -> 75/128: {\\"note\\":\\"F#4\\"}",
"0/1 -> 25/64: {\\"note\\":\\"B2\\"}",
"25/32 -> 75/64: {\\"note\\":\\"D2\\"}",
"25/32 -> 25/16: {\\"note\\":\\"D5\\"}",
"25/16 -> 75/32: {\\"note\\":\\"B4\\"}",
"75/64 -> 175/128: {\\"note\\":\\"F#3\\"}",
"75/64 -> 175/128: {\\"note\\":\\"B3\\"}",
"75/64 -> 175/128: {\\"note\\":\\"C4\\"}",
"75/64 -> 175/128: {\\"note\\":\\"E4\\"}",
"125/64 -> 275/128: {\\"note\\":\\"F#3\\"}",
"125/64 -> 275/128: {\\"note\\":\\"A3\\"}",
"125/64 -> 275/128: {\\"note\\":\\"B3\\"}",
"125/64 -> 275/128: {\\"note\\":\\"D4\\"}",
"25/32 -> 75/64: {\\"note\\":\\"D2\\"}",
"25/16 -> 125/64: {\\"note\\":\\"G2\\"}",
"25/16 -> 75/32: {\\"note\\":\\"B4\\"}",
"75/32 -> 25/8: {\\"note\\":\\"G4\\"}",
"125/64 -> 275/128: {\\"note\\":\\"F#3\\"}",
"125/64 -> 275/128: {\\"note\\":\\"A3\\"}",
"125/64 -> 275/128: {\\"note\\":\\"B3\\"}",
"125/64 -> 275/128: {\\"note\\":\\"D4\\"}",
"175/64 -> 375/128: {\\"note\\":\\"Ab3\\"}",
"175/64 -> 375/128: {\\"note\\":\\"C4\\"}",
"175/64 -> 375/128: {\\"note\\":\\"D4\\"}",
"175/64 -> 375/128: {\\"note\\":\\"G4\\"}",
"75/32 -> 175/64: {\\"note\\":\\"D2\\"}",
"75/32 -> 25/8: {\\"note\\":\\"G4\\"}",
"25/8 -> 75/16: {\\"note\\":\\"Bb4\\"}",
"225/64 -> 475/128: {\\"note\\":\\"G3\\"}",
"225/64 -> 475/128: {\\"note\\":\\"Bb3\\"}",
"225/64 -> 475/128: {\\"note\\":\\"D4\\"}",
"225/64 -> 475/128: {\\"note\\":\\"F4\\"}",
"25/8 -> 225/64: {\\"note\\":\\"Eb2\\"}",
"125/32 -> 275/64: {\\"note\\":\\"Bb2\\"}",
"25/8 -> 75/16: {\\"note\\":\\"Bb4\\"}",
"75/16 -> 175/32: {\\"note\\":\\"B4\\"}",
"275/64 -> 575/128: {\\"note\\":\\"G3\\"}",
"275/64 -> 575/128: {\\"note\\":\\"Bb3\\"}",
"275/64 -> 575/128: {\\"note\\":\\"D4\\"}",
"275/64 -> 575/128: {\\"note\\":\\"F4\\"}",
"125/32 -> 275/64: {\\"note\\":\\"Bb2\\"}",
"75/16 -> 325/64: {\\"note\\":\\"A2\\"}",
"75/16 -> 175/32: {\\"note\\":\\"B4\\"}",
"175/32 -> 25/4: {\\"note\\":\\"A4\\"}",
"325/64 -> 675/128: {\\"note\\":\\"G3\\"}",
"325/64 -> 675/128: {\\"note\\":\\"B3\\"}",
"325/64 -> 675/128: {\\"note\\":\\"C4\\"}",
"325/64 -> 675/128: {\\"note\\":\\"E4\\"}",
"375/64 -> 775/128: {\\"note\\":\\"F#3\\"}",
"375/64 -> 775/128: {\\"note\\":\\"B3\\"}",
"375/64 -> 775/128: {\\"note\\":\\"C4\\"}",
"375/64 -> 775/128: {\\"note\\":\\"E4\\"}",
"75/16 -> 325/64: {\\"note\\":\\"A2\\"}",
"175/32 -> 375/64: {\\"note\\":\\"D2\\"}",
"175/32 -> 25/4: {\\"note\\":\\"A4\\"}",
"25/4 -> 225/32: {\\"note\\":\\"D5\\"}",
"375/64 -> 775/128: {\\"note\\":\\"F#3\\"}",
"375/64 -> 775/128: {\\"note\\":\\"B3\\"}",
"375/64 -> 775/128: {\\"note\\":\\"C4\\"}",
"375/64 -> 775/128: {\\"note\\":\\"E4\\"}",
"425/64 -> 875/128: {\\"note\\":\\"F#3\\"}",
"425/64 -> 875/128: {\\"note\\":\\"A3\\"}",
"425/64 -> 875/128: {\\"note\\":\\"B3\\"}",
"425/64 -> 875/128: {\\"note\\":\\"D4\\"}",
"25/4 -> 425/64: {\\"note\\":\\"G2\\"}",
"25/4 -> 225/32: {\\"note\\":\\"D5\\"}",
"225/32 -> 125/16: {\\"note\\":\\"Bb4\\"}",
"125/16 -> 275/32: {\\"note\\":\\"G4\\"}",
"475/64 -> 975/128: {\\"note\\":\\"Ab3\\"}",
"475/64 -> 975/128: {\\"note\\":\\"C4\\"}",
"475/64 -> 975/128: {\\"note\\":\\"D4\\"}",
"475/64 -> 975/128: {\\"note\\":\\"G4\\"}",
"225/32 -> 475/64: {\\"note\\":\\"Bb2\\"}",
"125/16 -> 525/64: {\\"note\\":\\"Eb2\\"}",
"125/16 -> 275/32: {\\"note\\":\\"G4\\"}",
"275/32 -> 75/8: {\\"note\\":\\"Eb4\\"}",
"525/64 -> 1075/128: {\\"note\\":\\"G3\\"}",
"525/64 -> 1075/128: {\\"note\\":\\"Bb3\\"}",
"525/64 -> 1075/128: {\\"note\\":\\"D4\\"}",
"525/64 -> 1075/128: {\\"note\\":\\"F4\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"E3\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"G#3\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"A#3\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"D#4\\"}",
"125/16 -> 525/64: {\\"note\\":\\"Eb2\\"}",
"275/32 -> 575/64: {\\"note\\":\\"F#2\\"}",
"275/32 -> 75/8: {\\"note\\":\\"Eb4\\"}",
"75/8 -> 175/16: {\\"note\\":\\"F#4\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"E3\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"G#3\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"A#3\\"}",
"575/64 -> 1175/128: {\\"note\\":\\"D#4\\"}",
"625/64 -> 1275/128: {\\"note\\":\\"A#3\\"}",
"625/64 -> 1275/128: {\\"note\\":\\"C#4\\"}",
"625/64 -> 1275/128: {\\"note\\":\\"D#4\\"}",
"625/64 -> 1275/128: {\\"note\\":\\"F#4\\"}",
"75/8 -> 625/64: {\\"note\\":\\"B2\\"}",
"75/8 -> 175/16: {\\"note\\":\\"F#4\\"}",
"175/16 -> 375/32: {\\"note\\":\\"G4\\"}",
"675/64 -> 1375/128: {\\"note\\":\\"A#3\\"}",
"675/64 -> 1375/128: {\\"note\\":\\"C#4\\"}",
"675/64 -> 1375/128: {\\"note\\":\\"D#4\\"}",
"675/64 -> 1375/128: {\\"note\\":\\"F#4\\"}",
"325/32 -> 675/64: {\\"note\\":\\"F#2\\"}",
"175/16 -> 725/64: {\\"note\\":\\"F2\\"}",
"175/16 -> 375/32: {\\"note\\":\\"G4\\"}",
"375/32 -> 25/2: {\\"note\\":\\"F4\\"}",
"725/64 -> 1475/128: {\\"note\\":\\"Ab3\\"}",
"725/64 -> 1475/128: {\\"note\\":\\"C4\\"}",
"725/64 -> 1475/128: {\\"note\\":\\"Eb4\\"}",
"725/64 -> 1475/128: {\\"note\\":\\"G4\\"}",
"175/16 -> 725/64: {\\"note\\":\\"F2\\"}",
"375/32 -> 775/64: {\\"note\\":\\"Bb2\\"}",
"375/32 -> 25/2: {\\"note\\":\\"F4\\"}",
"25/2 -> 225/16: {\\"note\\":\\"Bb4\\"}",
"775/64 -> 1575/128: {\\"note\\":\\"Ab3\\"}",
"775/64 -> 1575/128: {\\"note\\":\\"C4\\"}",
"775/64 -> 1575/128: {\\"note\\":\\"D4\\"}",
"775/64 -> 1575/128: {\\"note\\":\\"G4\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"G3\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"Bb3\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"D4\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"F4\\"}",
"375/32 -> 775/64: {\\"note\\":\\"Bb2\\"}",
"25/2 -> 825/64: {\\"note\\":\\"Eb2\\"}",
"25/2 -> 225/16: {\\"note\\":\\"Bb4\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"G3\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"Bb3\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"D4\\"}",
"825/64 -> 1675/128: {\\"note\\":\\"F4\\"}",
"875/64 -> 1775/128: {\\"note\\":\\"G3\\"}",
"875/64 -> 1775/128: {\\"note\\":\\"Bb3\\"}",
"875/64 -> 1775/128: {\\"note\\":\\"D4\\"}",
"875/64 -> 1775/128: {\\"note\\":\\"F4\\"}",
"425/32 -> 875/64: {\\"note\\":\\"Bb2\\"}",
"25/2 -> 225/16: {\\"note\\":\\"Bb4\\"}",
"225/16 -> 475/32: {\\"note\\":\\"B4\\"}",
"475/32 -> 125/8: {\\"note\\":\\"A4\\"}",
"925/64 -> 1875/128: {\\"note\\":\\"G3\\"}",
"925/64 -> 1875/128: {\\"note\\":\\"B3\\"}",
"925/64 -> 1875/128: {\\"note\\":\\"C4\\"}",
"925/64 -> 1875/128: {\\"note\\":\\"E4\\"}",
"225/16 -> 925/64: {\\"note\\":\\"A2\\"}",
"475/32 -> 975/64: {\\"note\\":\\"D2\\"}",
"475/32 -> 125/8: {\\"note\\":\\"A4\\"}",
"125/8 -> 275/16: {\\"note\\":\\"D5\\"}",
"975/64 -> 1975/128: {\\"note\\":\\"F#3\\"}",
"975/64 -> 1975/128: {\\"note\\":\\"B3\\"}",
"975/64 -> 1975/128: {\\"note\\":\\"C4\\"}",
"975/64 -> 1975/128: {\\"note\\":\\"E4\\"}",
"475/32 -> 975/64: {\\"note\\":\\"D2\\"}",
"125/8 -> 1025/64: {\\"note\\":\\"G2\\"}",
"125/8 -> 275/16: {\\"note\\":\\"D5\\"}",
"1025/64 -> 2075/128: {\\"note\\":\\"F#3\\"}",
"1025/64 -> 2075/128: {\\"note\\":\\"A3\\"}",
"1025/64 -> 2075/128: {\\"note\\":\\"B3\\"}",
"1025/64 -> 2075/128: {\\"note\\":\\"D4\\"}",
"1075/64 -> 2175/128: {\\"note\\":\\"F#3\\"}",
"1075/64 -> 2175/128: {\\"note\\":\\"A3\\"}",
"1075/64 -> 2175/128: {\\"note\\":\\"B3\\"}",
"1075/64 -> 2175/128: {\\"note\\":\\"D4\\"}",
"125/8 -> 1025/64: {\\"note\\":\\"G2\\"}",
"525/32 -> 1075/64: {\\"note\\":\\"D2\\"}",
"125/8 -> 275/16: {\\"note\\":\\"D5\\"}",
"275/16 -> 575/32: {\\"note\\":\\"D#5\\"}",
"575/32 -> 75/4: {\\"note\\":\\"C#5\\"}",
"1125/64 -> 2275/128: {\\"note\\":\\"E3\\"}",
"1125/64 -> 2275/128: {\\"note\\":\\"G#3\\"}",
"1125/64 -> 2275/128: {\\"note\\":\\"B3\\"}",
"1125/64 -> 2275/128: {\\"note\\":\\"D#4\\"}",
"275/16 -> 1125/64: {\\"note\\":\\"C#2\\"}",
"575/32 -> 1175/64: {\\"note\\":\\"F#2\\"}",
"575/32 -> 75/4: {\\"note\\":\\"C#5\\"}",
"75/4 -> 325/16: {\\"note\\":\\"F#5\\"}",
"1175/64 -> 2375/128: {\\"note\\":\\"E3\\"}",
"1175/64 -> 2375/128: {\\"note\\":\\"G#3\\"}",
"1175/64 -> 2375/128: {\\"note\\":\\"A#3\\"}",
"1175/64 -> 2375/128: {\\"note\\":\\"D#4\\"}",
"575/32 -> 1175/64: {\\"note\\":\\"F#2\\"}",
"75/4 -> 1225/64: {\\"note\\":\\"B2\\"}",
"75/4 -> 325/16: {\\"note\\":\\"F#5\\"}",
"1225/64 -> 2475/128: {\\"note\\":\\"A#3\\"}",
"1225/64 -> 2475/128: {\\"note\\":\\"C#4\\"}",
"1225/64 -> 2475/128: {\\"note\\":\\"D#4\\"}",
"1225/64 -> 2475/128: {\\"note\\":\\"F#4\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"A#3\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"C#4\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"D#4\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"F#4\\"}",
"75/4 -> 1225/64: {\\"note\\":\\"B2\\"}",
"625/32 -> 1275/64: {\\"note\\":\\"F#2\\"}",
"75/4 -> 325/16: {\\"note\\":\\"F#5\\"}",
"325/16 -> 675/32: {\\"note\\":\\"G5\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"A#3\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"C#4\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"D#4\\"}",
"1275/64 -> 2575/128: {\\"note\\":\\"F#4\\"}",
"1325/64 -> 2675/128: {\\"note\\":\\"Ab3\\"}",
"1325/64 -> 2675/128: {\\"note\\":\\"C4\\"}",
"1325/64 -> 2675/128: {\\"note\\":\\"Eb4\\"}",
"1325/64 -> 2675/128: {\\"note\\":\\"G4\\"}",
"325/16 -> 1325/64: {\\"note\\":\\"F2\\"}",
"325/16 -> 675/32: {\\"note\\":\\"G5\\"}",
"675/32 -> 175/8: {\\"note\\":\\"F5\\"}",
"175/8 -> 375/16: {\\"note\\":\\"Bb5\\"}",
"1375/64 -> 2775/128: {\\"note\\":\\"Ab3\\"}",
"1375/64 -> 2775/128: {\\"note\\":\\"C4\\"}",
"1375/64 -> 2775/128: {\\"note\\":\\"D4\\"}",
"1375/64 -> 2775/128: {\\"note\\":\\"G4\\"}",
"675/32 -> 1375/64: {\\"note\\":\\"Bb2\\"}",
"175/8 -> 1425/64: {\\"note\\":\\"Eb2\\"}",
"175/8 -> 375/16: {\\"note\\":\\"Bb5\\"}",
"1425/64 -> 2875/128: {\\"note\\":\\"G3\\"}",
"1425/64 -> 2875/128: {\\"note\\":\\"Bb3\\"}",
"1425/64 -> 2875/128: {\\"note\\":\\"D4\\"}",
"1425/64 -> 2875/128: {\\"note\\":\\"F4\\"}",
"175/8 -> 1425/64: {\\"note\\":\\"Eb2\\"}",
"725/32 -> 1475/64: {\\"note\\":\\"Bb2\\"}",
"175/8 -> 375/16: {\\"note\\":\\"Bb5\\"}",
"375/16 -> 775/32: {\\"note\\":\\"F#5\\"}",
"1475/64 -> 2975/128: {\\"note\\":\\"G3\\"}",
"1475/64 -> 2975/128: {\\"note\\":\\"Bb3\\"}",
"1475/64 -> 2975/128: {\\"note\\":\\"D4\\"}",
"1475/64 -> 2975/128: {\\"note\\":\\"F4\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"E3\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"G#3\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"B3\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"D#4\\"}",
"725/32 -> 1475/64: {\\"note\\":\\"Bb2\\"}",
"375/16 -> 1525/64: {\\"note\\":\\"C#2\\"}",
"375/16 -> 775/32: {\\"note\\":\\"F#5\\"}",
"775/32 -> 3125/128: {\\"note\\":\\"F#5\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"E3\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"G#3\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"B3\\"}",
"1525/64 -> 3075/128: {\\"note\\":\\"D#4\\"}",
"1575/64 -> 3175/128: {\\"note\\":\\"E3\\"}",
"1575/64 -> 3175/128: {\\"note\\":\\"G#3\\"}",
"1575/64 -> 3175/128: {\\"note\\":\\"A#3\\"}",
"1575/64 -> 3175/128: {\\"note\\":\\"D#4\\"}",
"775/32 -> 1575/64: {\\"note\\":\\"F#2\\"}",
]
`;
exports[`renders tunes > tune: goodTimes 1`] = `
[
"0/1 -> 1/2: {\\"note\\":\\"F3\\",\\"clip\\":1,\\"s\\":\\"piano\\",\\"release\\":0.1,\\"pan\\":0.49537037037037035}",
@ -9570,125 +9289,6 @@ exports[`renders tunes > tune: swimming 1`] = `
]
`;
exports[`renders tunes > tune: swimmingWithSoundfonts 1`] = `
[
"0/1 -> 3/4: {\\"n\\":\\"F4\\",\\"s\\":\\"Kalimba: Ethnic\\"}",
"0/1 -> 3/4: {\\"n\\":\\"Bb4\\",\\"s\\":\\"Kalimba: Ethnic\\"}",
"0/1 -> 3/4: {\\"n\\":\\"D5\\",\\"s\\":\\"Kalimba: Ethnic\\"}",
"3/4 -> 5/4: {\\"n\\":\\"D4\\",\\"s\\":\\"Kalimba: Ethnic\\"}",
"3/4 -> 5/4: {\\"n\\":\\"G4\\",\\"s\\":\\"Kalimba: Ethnic\\"}",
"3/4 -> 5/4: {\\"n\\":\\"Bb4\\",\\"s\\":\\"Kalimba: Ethnic\\"}",
"0/1 -> 3/4: {\\"n\\":\\"G3\\",\\"s\\":\\"Acoustic Bass: Bass\\"}",
"3/4 -> 3/2: {\\"n\\":\\"G3\\",\\"s\\":\\"Acoustic Bass: Bass\\"}",
]
`;
exports[`renders tunes > tune: tetrisMini 1`] = `
[
"0/1 -> 1/2: {\\"note\\":\\"e5\\"}",
"1/2 -> 3/4: {\\"note\\":\\"b4\\"}",
"3/4 -> 1/1: {\\"note\\":\\"c5\\"}",
"0/1 -> 1/4: {\\"note\\":\\"e2\\"}",
"1/4 -> 1/2: {\\"note\\":\\"e3\\"}",
"1/2 -> 3/4: {\\"note\\":\\"e2\\"}",
"3/4 -> 1/1: {\\"note\\":\\"e3\\"}",
"1/1 -> 3/2: {\\"note\\":\\"d5\\"}",
"3/2 -> 7/4: {\\"note\\":\\"c5\\"}",
"7/4 -> 2/1: {\\"note\\":\\"b4\\"}",
"1/1 -> 5/4: {\\"note\\":\\"e2\\"}",
"5/4 -> 3/2: {\\"note\\":\\"e3\\"}",
"3/2 -> 7/4: {\\"note\\":\\"e2\\"}",
"7/4 -> 2/1: {\\"note\\":\\"e3\\"}",
"2/1 -> 5/2: {\\"note\\":\\"a4\\"}",
"5/2 -> 11/4: {\\"note\\":\\"a4\\"}",
"11/4 -> 3/1: {\\"note\\":\\"c5\\"}",
"2/1 -> 9/4: {\\"note\\":\\"a2\\"}",
"9/4 -> 5/2: {\\"note\\":\\"a3\\"}",
"5/2 -> 11/4: {\\"note\\":\\"a2\\"}",
"11/4 -> 3/1: {\\"note\\":\\"a3\\"}",
"3/1 -> 7/2: {\\"note\\":\\"e5\\"}",
"7/2 -> 15/4: {\\"note\\":\\"d5\\"}",
"15/4 -> 4/1: {\\"note\\":\\"c5\\"}",
"3/1 -> 13/4: {\\"note\\":\\"a2\\"}",
"13/4 -> 7/2: {\\"note\\":\\"a3\\"}",
"7/2 -> 15/4: {\\"note\\":\\"a2\\"}",
"15/4 -> 4/1: {\\"note\\":\\"a3\\"}",
"4/1 -> 9/2: {\\"note\\":\\"b4\\"}",
"19/4 -> 5/1: {\\"note\\":\\"c5\\"}",
"4/1 -> 17/4: {\\"note\\":\\"g#2\\"}",
"17/4 -> 9/2: {\\"note\\":\\"g#3\\"}",
"9/2 -> 19/4: {\\"note\\":\\"g#2\\"}",
"19/4 -> 5/1: {\\"note\\":\\"g#3\\"}",
"5/1 -> 11/2: {\\"note\\":\\"d5\\"}",
"11/2 -> 6/1: {\\"note\\":\\"e5\\"}",
"5/1 -> 21/4: {\\"note\\":\\"e2\\"}",
"21/4 -> 11/2: {\\"note\\":\\"e3\\"}",
"11/2 -> 23/4: {\\"note\\":\\"e2\\"}",
"23/4 -> 6/1: {\\"note\\":\\"e3\\"}",
"6/1 -> 13/2: {\\"note\\":\\"c5\\"}",
"13/2 -> 7/1: {\\"note\\":\\"a4\\"}",
"6/1 -> 25/4: {\\"note\\":\\"a2\\"}",
"25/4 -> 13/2: {\\"note\\":\\"a3\\"}",
"13/2 -> 27/4: {\\"note\\":\\"a2\\"}",
"27/4 -> 7/1: {\\"note\\":\\"a3\\"}",
"7/1 -> 15/2: {\\"note\\":\\"a4\\"}",
"7/1 -> 29/4: {\\"note\\":\\"a2\\"}",
"29/4 -> 15/2: {\\"note\\":\\"a3\\"}",
"15/2 -> 31/4: {\\"note\\":\\"b1\\"}",
"31/4 -> 8/1: {\\"note\\":\\"c2\\"}",
"33/4 -> 17/2: {\\"note\\":\\"d5\\"}",
"35/4 -> 9/1: {\\"note\\":\\"f5\\"}",
"8/1 -> 33/4: {\\"note\\":\\"d2\\"}",
"33/4 -> 17/2: {\\"note\\":\\"d3\\"}",
"17/2 -> 35/4: {\\"note\\":\\"d2\\"}",
"35/4 -> 9/1: {\\"note\\":\\"d3\\"}",
"9/1 -> 19/2: {\\"note\\":\\"a5\\"}",
"19/2 -> 39/4: {\\"note\\":\\"g5\\"}",
"39/4 -> 10/1: {\\"note\\":\\"f5\\"}",
"9/1 -> 37/4: {\\"note\\":\\"d2\\"}",
"37/4 -> 19/2: {\\"note\\":\\"d3\\"}",
"19/2 -> 39/4: {\\"note\\":\\"d2\\"}",
"39/4 -> 10/1: {\\"note\\":\\"d3\\"}",
"10/1 -> 21/2: {\\"note\\":\\"e5\\"}",
"43/4 -> 11/1: {\\"note\\":\\"c5\\"}",
"10/1 -> 41/4: {\\"note\\":\\"c2\\"}",
"41/4 -> 21/2: {\\"note\\":\\"c3\\"}",
"21/2 -> 43/4: {\\"note\\":\\"c2\\"}",
"43/4 -> 11/1: {\\"note\\":\\"c3\\"}",
"11/1 -> 23/2: {\\"note\\":\\"e5\\"}",
"23/2 -> 47/4: {\\"note\\":\\"d5\\"}",
"47/4 -> 12/1: {\\"note\\":\\"c5\\"}",
"11/1 -> 45/4: {\\"note\\":\\"c2\\"}",
"45/4 -> 23/2: {\\"note\\":\\"c3\\"}",
"23/2 -> 47/4: {\\"note\\":\\"c2\\"}",
"47/4 -> 12/1: {\\"note\\":\\"c3\\"}",
"12/1 -> 25/2: {\\"note\\":\\"b4\\"}",
"25/2 -> 51/4: {\\"note\\":\\"b4\\"}",
"51/4 -> 13/1: {\\"note\\":\\"c5\\"}",
"12/1 -> 49/4: {\\"note\\":\\"b1\\"}",
"49/4 -> 25/2: {\\"note\\":\\"b2\\"}",
"25/2 -> 51/4: {\\"note\\":\\"b1\\"}",
"51/4 -> 13/1: {\\"note\\":\\"b2\\"}",
"13/1 -> 27/2: {\\"note\\":\\"d5\\"}",
"27/2 -> 14/1: {\\"note\\":\\"e5\\"}",
"13/1 -> 53/4: {\\"note\\":\\"e2\\"}",
"53/4 -> 27/2: {\\"note\\":\\"e3\\"}",
"27/2 -> 55/4: {\\"note\\":\\"e2\\"}",
"55/4 -> 14/1: {\\"note\\":\\"e3\\"}",
"14/1 -> 29/2: {\\"note\\":\\"c5\\"}",
"29/2 -> 15/1: {\\"note\\":\\"a4\\"}",
"14/1 -> 57/4: {\\"note\\":\\"a1\\"}",
"57/4 -> 29/2: {\\"note\\":\\"a2\\"}",
"29/2 -> 59/4: {\\"note\\":\\"a1\\"}",
"59/4 -> 15/1: {\\"note\\":\\"a2\\"}",
"15/1 -> 31/2: {\\"note\\":\\"a4\\"}",
"15/1 -> 61/4: {\\"note\\":\\"a1\\"}",
"61/4 -> 31/2: {\\"note\\":\\"a2\\"}",
"31/2 -> 63/4: {\\"note\\":\\"a1\\"}",
"63/4 -> 16/1: {\\"note\\":\\"a2\\"}",
]
`;
exports[`renders tunes > tune: undergroundPlumber 1`] = `
[
"0/1 -> 3/16: {\\"s\\":\\"bd\\",\\"gain\\":0.7}",

View File

@ -162,3 +162,290 @@ stack(
drums.fast(2),
synths
).slow(2)`; */
export const tetrisMini = `note(\`[[e5 [b4 c5] d5 [c5 b4]]
[a4 [a4 c5] e5 [d5 c5]]
[b4 [~ c5] d5 e5]
[c5 a4 a4 ~]
[[~ d5] [~ f5] a5 [g5 f5]]
[e5 [~ c5] e5 [d5 c5]]
[b4 [b4 c5] d5 e5]
[c5 a4 a4 ~]],
[[e2 e3]*4]
[[a2 a3]*4]
[[g#2 g#3]*2 [e2 e3]*2]
[a2 a3 a2 a3 a2 a3 b1 c2]
[[d2 d3]*4]
[[c2 c3]*4]
[[b1 b2]*2 [e2 e3]*2]
[[a1 a2]*4]\`).slow(16)
`;
export const giantStepsReggae = `stack(
// melody
seq(
"[F#5 D5] [B4 G4] Bb4 [B4 A4]",
"[D5 Bb4] [G4 Eb4] F#4 [G4 F4]",
"Bb4 [B4 A4] D5 [D#5 C#5]",
"F#5 [G5 F5] Bb5 [F#5 [F#5 ~@3]]",
),
// chords
seq(
"[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]",
"[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]",
"Eb^7 [Am7 D7] G^7 [C#m7 F#7]",
"B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]"
)
.struct("~ [x ~]".fast(4*8))
.voicings(['E3', 'G4']),
// bass
seq(
"[B2 D2] [G2 D2] [Eb2 Bb2] [A2 D2]",
"[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]",
"[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]",
"[B2 F#2] [F2 Bb2] [Eb2 Bb2] [C#2 F#2]"
)
.struct("x ~".fast(4*8))
).slow(25).note()`;
// TODO:
/*
export const xylophoneCalling = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
const t = x => x.scaleTranspose("<0 2 4 3>/4").transpose(-2)
const s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))
const delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());
const chorus = new Chorus(1,2.5,0.5).start();
stack(
// melody
"<<10 7> <8 3>>/4".struct("x*3").apply(s)
.scaleTranspose("<0 3 2> <1 4 3>")
.superimpose(scaleTranspose(2).early(1/8))
.apply(t).tone(polysynth().set({
...osc('triangle4'),
...adsr(0,.08,0)
}).chain(vol(0.2).connect(delay),chorus,out())).mask("<~@3 x>/16".early(1/8)),
// pad
"[1,3]/4".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({
...osc('square2'),
...adsr(0.1,.4,0.8)
}).chain(vol(0.2),chorus,out())).mask("<~ x>/32"),
// xylophone
"c3,g3,c4".struct("<x*2 x>").fast("<1 <2!3 [4 8]>>").apply(s).scaleTranspose("<0 <1 [2 [3 <4 5>]]>>").apply(t).tone(polysynth().set({
...osc('sawtooth4'),
...adsr(0,.1,0)
}).chain(vol(0.4).connect(delay),out())).mask("<x@3 ~>/16".early(1/8)),
// bass
"c2 [c2 ~]*2".scale('C hirajoshi').apply(t).tone(synth({
...osc('sawtooth6'),
...adsr(0,.03,.4,.1)
}).chain(vol(0.4),out())),
// kick
"<c1!3 [c1 ~]*2>*2".tone(membrane().chain(vol(0.8),out())),
// snare
"~ <c3!7 [c3 c3*2]>".tone(noise().chain(vol(0.8),out())),
// hihat
"c3*4".transpose("[-24 0]*2").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))
).slow(1)
// strudel disable-highlighting`;
*/
// TODO:
/*
export const sowhatelse = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
// mixer
const mix = (key) => vol({
chords: .2,
lead: 0.8,
bass: .4,
snare: .95,
kick: .9,
hihat: .35,
}[key]||0);
const delay = new FeedbackDelay(1/6, .3).chain(vol(.7), out());
const delay2 = new FeedbackDelay(1/6, .2).chain(vol(.15), out());
const chorus = new Chorus(1,2.5,0.5).start();
// instruments
const instr = (instrument) => ({
organ: polysynth().set({...osc('sawtooth4'), ...adsr(.01,.2,0)}).chain(mix('chords').connect(delay),out()),
lead: polysynth().set({...osc('triangle4'),...adsr(0.01,.05,0)}).chain(mix('lead').connect(delay2), out()),
bass: polysynth().set({...osc('sawtooth8'),...adsr(.02,.05,.3,.2)}).chain(mix('bass'),lowpass(3000), out()),
pad: polysynth().set({...osc('square2'),...adsr(0.1,.4,0.8)}).chain(vol(0.15),chorus,out()),
hihat: metal(adsr(0, .02, 0)).chain(mix('hihat'), out()),
snare: noise(adsr(0, .15, 0.01)).chain(mix('snare'), lowpass(5000), out()),
kick: membrane().chain(mix('kick'), out())
}[instrument]);
// harmony
const t = transpose("<0 0 1 0>/8");
const sowhat = scaleTranspose("0,3,6,9,11");
// track
stack(
"[<0 4 [3 [2 1]]>]/4".struct("[x]*3").mask("[~ x ~]").scale('D5 dorian').off(1/6, scaleTranspose(-7)).off(1/3, scaleTranspose(-5)).apply(t).tone(instr('lead')).mask("<~ ~ x x>/8"),
"<<e3 [~@2 a3]> <[d3 ~] [c3 f3] g3>>".scale('D dorian').apply(sowhat).apply(t).tone(instr('organ')).mask("<x x x ~>/8"),
"<[d2 [d2 ~]*3]!3 <a1*2 c2*3 [a1 e2]>>".apply(t).tone(instr('bass')),
"c1*6".tone(instr('hihat')),
"~ c3".tone(instr('snare')),
"<[c1@5 c1] <c1 [[c1@2 c1] ~] [c1 ~ c1] [c1!2 ~ c1!3]>>".tone(instr('kick')),
"[2,4]/4".scale('D dorian').apply(t).tone(instr('pad')).mask("<x x x ~>/8")
).fast(6/8)
// strudel disable-highlighting`;
*/
// TODO: rework tune to use freq
/*
export const jemblung = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());
const snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());
const s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());
stack(
stack(
"0 1 4 [3!2 5]".layer(
// chords
x=>x.add("0,3").duration("0.05!3 0.02"),
// bass
x=>x.add("-8").struct("x*8").duration(0.1)
),
// melody
"12 11*3 12 ~".duration(0.005)
)
.add("<0 1>")
.tune("jemblung2")
//.mul(22/5).round().xen("22edo")
//.mul(12/5).round().xen("12edo")
.tone(s),
// kick
"[c2 ~]*2".duration(0.05).tone(membrane().chain(out())),
// snare
"[~ c1]*2".early(0.001).tone(snare),
// hihat
"c2*8".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),
).slow(3)`;
*/
/*
// TODO: does not work on linux (at least for me..)
export const speakerman = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
backgroundImage('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXR0rKqW3VwY%2Fmaxresdefault.jpg&f=1&nofb=1',
{ className:'darken', style:'background-size:cover'})
stack(
"[g3,bb3,d4] [f3,a3,c4] [c3,e3,g3]@2".slow(2).late(.1),
cat(
'Baker man',
'is baking bread',
'Baker man',
'is baking bread',
'Sagabona',
'kunjani wena',
'Sagabona',
'kunjani wena',
'The night train, is coming',
'got to keep on running',
'The night train, is coming',
'got to keep on running',
).speak("en zu en".slow(12), "<0 2 3 4 5 6>".slow(2)),
).slow(4)`;
*/
export const bossa = `const scales = sequence('C minor', ['D locrian', 'G phrygian'], 'Bb2 minor', ['C locrian','F phrygian']).slow(4)
stack(
"<Cm7 [Dm7b5 G7b9] Bbm7 [Cm7b5 F7b9]>".fast(2).struct("x ~ x@3 x ~ x ~ ~ ~ x ~ x@3".late(1/8)).early(1/8).slow(2).voicings(),
"[~ [0 ~]] 0 [~ [4 ~]] 4".sub(7).restart(scales).scale(scales).early(.25)
).note().piano().slow(2)`;
/*
export const customTrigger = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
stack(
freq("55 [110,165] 110 [220,275]".mul("<1 <3/4 2/3>>").struct("x(3,8)").layer(x=>x.mul("1.006,.995"))),
freq("440(5,8)".legato(.18).mul("<1 3/4 2 2/3>")).gain(perlin.range(.2,.8))
).s("<sawtooth square>/2")
.onTrigger((t,hap,ct)=>{
const ac = Tone.getContext().rawContext;
t = ac.currentTime + t - ct;
const { freq, s, gain = 1 } = hap.value;
const master = ac.createGain();
master.gain.value = 0.1 * gain;
master.connect(ac.destination);
const o = ac.createOscillator();
o.type = s || 'triangle';
o.frequency.value = Number(freq);
o.connect(master);
o.start(t);
o.stop(t + hap.duration);
}).stack(s("bd(3,8),hh*4,~ sd").webdirt())`; */
export const swimmingWithSoundfonts = `// Koji Kondo - Swimming (Super Mario World)
stack(
n(
"~",
"~",
"~",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [F5@2 C6] A5 G5",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [Bb5 A5 G5] F5@2",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [F5@2 C6] A5 G5",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [Bb5 A5 G5] F5@2",
"A5 [F5@2 C5] A5 F5",
"Ab5 [F5@2 Ab5] G5@2",
"A5 [F5@2 C5] A5 F5",
"Ab5 [F5@2 C5] C6@2",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [Bb5 A5 G5] F5@2"
).s('Sitar: Ethnic'),
n(
"[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]",
"[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]",
"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]",
"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]",
"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]",
"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]"
).s('Kalimba: Ethnic'),
n(
"[G3 G3 C3 E3]",
"[F2 D2 G2 C2]",
"[F2 D2 G2 C2]",
"[F2 A2 Bb2 B2]",
"[A2 Ab2 G2 C2]",
"[F2 A2 Bb2 B2]",
"[G2 C2 F2 F2]",
"[F2 A2 Bb2 B2]",
"[A2 Ab2 G2 C2]",
"[F2 A2 Bb2 B2]",
"[G2 C2 F2 F2]",
"[Bb2 Bb2 A2 A2]",
"[Ab2 Ab2 G2 [C2 D2 E2]]",
"[Bb2 Bb2 A2 A2]",
"[Ab2 Ab2 G2 [C2 D2 E2]]",
"[F2 A2 Bb2 B2]",
"[G2 C2 F2 F2]"
).s('Acoustic Bass: Bass')
).slow(51)
`;
export const bossaRandom = `const chords = "<Am7 Am7 Dm7 E7>"
const roots = chords.rootNotes(2)
stack(
chords.voicings(['F4', 'A5']).struct(
\` x@2 ~ x ~ ~ ~ x |
x? ~ ~ x@3 ~ x |
x? ~ ~ x ~ x@3\`),
roots.struct("x [~ x?0.2] x [~ x?] | x!4 | x@2 ~ ~ ~ x x x").transpose("0 7")
).slow(2).pianoroll().note().piano()`;

View File

@ -4,25 +4,8 @@ Copyright (C) 2022 Strudel contributors - see <https://github.com/tidalcycles/st
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export const tetrisMini = `note(\`[[e5 [b4 c5] d5 [c5 b4]]
[a4 [a4 c5] e5 [d5 c5]]
[b4 [~ c5] d5 e5]
[c5 a4 a4 ~]
[[~ d5] [~ f5] a5 [g5 f5]]
[e5 [~ c5] e5 [d5 c5]]
[b4 [b4 c5] d5 e5]
[c5 a4 a4 ~]],
[[e2 e3]*4]
[[a2 a3]*4]
[[g#2 g#3]*2 [e2 e3]*2]
[a2 a3 a2 a3 a2 a3 b1 c2]
[[d2 d3]*4]
[[c2 c3]*4]
[[b1 b2]*2 [e2 e3]*2]
[[a1 a2]*4]\`).slow(16)
`;
export const swimming = `stack(
export const swimming = `// Koji Kondo - Swimming (Super Mario World)
stack(
seq(
"~",
"~",
@ -83,7 +66,8 @@ export const swimming = `stack(
).note().slow(51);
`;
export const giantSteps = `stack(
export const giantSteps = `// John Coltrane - Giant Steps
stack(
// melody
seq(
"[F#5 D5] [B4 G4] Bb4 [B4 A4]",
@ -107,34 +91,8 @@ export const giantSteps = `stack(
)
).slow(20).note()`;
export const giantStepsReggae = `stack(
// melody
seq(
"[F#5 D5] [B4 G4] Bb4 [B4 A4]",
"[D5 Bb4] [G4 Eb4] F#4 [G4 F4]",
"Bb4 [B4 A4] D5 [D#5 C#5]",
"F#5 [G5 F5] Bb5 [F#5 [F#5 ~@3]]",
),
// chords
seq(
"[B^7 D7] [G^7 Bb7] Eb^7 [Am7 D7]",
"[G^7 Bb7] [Eb^7 F#7] B^7 [Fm7 Bb7]",
"Eb^7 [Am7 D7] G^7 [C#m7 F#7]",
"B^7 [Fm7 Bb7] Eb^7 [C#m7 F#7]"
)
.struct("~ [x ~]".fast(4*8))
.voicings(['E3', 'G4']),
// bass
seq(
"[B2 D2] [G2 D2] [Eb2 Bb2] [A2 D2]",
"[G2 Bb2] [Eb2 F#2] [B2 F#2] [F2 Bb2]",
"[Eb2 Bb2] [A2 D2] [G2 D2] [C#2 F#2]",
"[B2 F#2] [F2 Bb2] [Eb2 Bb2] [C#2 F#2]"
)
.struct("x ~".fast(4*8))
).slow(25).note()`;
export const zeldasRescue = `stack(
export const zeldasRescue = `// Koji Kondo - Princess Zelda's Rescue
stack(
// melody
\`[B3@2 D4] [A3@2 [G3 A3]] [B3@2 D4] [A3]
[B3@2 D4] [A4@2 G4] [D4@2 [C4 B3]] [A3]
@ -157,7 +115,9 @@ export const zeldasRescue = `stack(
.room(1)
`;
export const caverave = `const keys = x => x.s('sawtooth').cutoff(1200).gain(.5).attack(0).decay(.16).sustain(.3).release(.1);
export const caverave = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
const keys = x => x.s('sawtooth').cutoff(1200).gain(.5).attack(0).decay(.16).sustain(.3).release(.1);
const drums = stack(
s("bd*2").mask("<x@7 ~>/8").gain(.8),
@ -201,90 +161,7 @@ stack(
).s()
`;
// TODO:
/*
export const xylophoneCalling = `const t = x => x.scaleTranspose("<0 2 4 3>/4").transpose(-2)
const s = x => x.scale(cat('C3 minor pentatonic','G3 minor pentatonic').slow(4))
const delay = new FeedbackDelay(1/8, .6).chain(vol(0.1), out());
const chorus = new Chorus(1,2.5,0.5).start();
stack(
// melody
"<<10 7> <8 3>>/4".struct("x*3").apply(s)
.scaleTranspose("<0 3 2> <1 4 3>")
.superimpose(scaleTranspose(2).early(1/8))
.apply(t).tone(polysynth().set({
...osc('triangle4'),
...adsr(0,.08,0)
}).chain(vol(0.2).connect(delay),chorus,out())).mask("<~@3 x>/16".early(1/8)),
// pad
"[1,3]/4".scale('G3 minor pentatonic').apply(t).tone(polysynth().set({
...osc('square2'),
...adsr(0.1,.4,0.8)
}).chain(vol(0.2),chorus,out())).mask("<~ x>/32"),
// xylophone
"c3,g3,c4".struct("<x*2 x>").fast("<1 <2!3 [4 8]>>").apply(s).scaleTranspose("<0 <1 [2 [3 <4 5>]]>>").apply(t).tone(polysynth().set({
...osc('sawtooth4'),
...adsr(0,.1,0)
}).chain(vol(0.4).connect(delay),out())).mask("<x@3 ~>/16".early(1/8)),
// bass
"c2 [c2 ~]*2".scale('C hirajoshi').apply(t).tone(synth({
...osc('sawtooth6'),
...adsr(0,.03,.4,.1)
}).chain(vol(0.4),out())),
// kick
"<c1!3 [c1 ~]*2>*2".tone(membrane().chain(vol(0.8),out())),
// snare
"~ <c3!7 [c3 c3*2]>".tone(noise().chain(vol(0.8),out())),
// hihat
"c3*4".transpose("[-24 0]*2").tone(metal(adsr(0,.02)).chain(vol(0.5).connect(delay),out()))
).slow(1)
// strudel disable-highlighting`;
*/
// TODO:
/*
export const sowhatelse = `// mixer
const mix = (key) => vol({
chords: .2,
lead: 0.8,
bass: .4,
snare: .95,
kick: .9,
hihat: .35,
}[key]||0);
const delay = new FeedbackDelay(1/6, .3).chain(vol(.7), out());
const delay2 = new FeedbackDelay(1/6, .2).chain(vol(.15), out());
const chorus = new Chorus(1,2.5,0.5).start();
// instruments
const instr = (instrument) => ({
organ: polysynth().set({...osc('sawtooth4'), ...adsr(.01,.2,0)}).chain(mix('chords').connect(delay),out()),
lead: polysynth().set({...osc('triangle4'),...adsr(0.01,.05,0)}).chain(mix('lead').connect(delay2), out()),
bass: polysynth().set({...osc('sawtooth8'),...adsr(.02,.05,.3,.2)}).chain(mix('bass'),lowpass(3000), out()),
pad: polysynth().set({...osc('square2'),...adsr(0.1,.4,0.8)}).chain(vol(0.15),chorus,out()),
hihat: metal(adsr(0, .02, 0)).chain(mix('hihat'), out()),
snare: noise(adsr(0, .15, 0.01)).chain(mix('snare'), lowpass(5000), out()),
kick: membrane().chain(mix('kick'), out())
}[instrument]);
// harmony
const t = transpose("<0 0 1 0>/8");
const sowhat = scaleTranspose("0,3,6,9,11");
// track
stack(
"[<0 4 [3 [2 1]]>]/4".struct("[x]*3").mask("[~ x ~]").scale('D5 dorian').off(1/6, scaleTranspose(-7)).off(1/3, scaleTranspose(-5)).apply(t).tone(instr('lead')).mask("<~ ~ x x>/8"),
"<<e3 [~@2 a3]> <[d3 ~] [c3 f3] g3>>".scale('D dorian').apply(sowhat).apply(t).tone(instr('organ')).mask("<x x x ~>/8"),
"<[d2 [d2 ~]*3]!3 <a1*2 c2*3 [a1 e2]>>".apply(t).tone(instr('bass')),
"c1*6".tone(instr('hihat')),
"~ c3".tone(instr('snare')),
"<[c1@5 c1] <c1 [[c1@2 c1] ~] [c1 ~ c1] [c1!2 ~ c1!3]>>".tone(instr('kick')),
"[2,4]/4".scale('D dorian').apply(t).tone(instr('pad')).mask("<x x x ~>/8")
).fast(6/8)
// strudel disable-highlighting`;
*/
export const barryHarris = `backgroundImage(
'https://media.npr.org/assets/img/2017/02/03/barryharris_600dpi_wide-7eb49998aa1af377d62bb098041624c0a0d1a454.jpg',
{style:'background-size:cover'})
export const barryHarris = `// adapted from a Barry Harris excercise
"0,2,[7 6]"
.add("<0 1 2 3 4 5 7 8>")
.scale('C bebop major')
@ -293,7 +170,9 @@ export const barryHarris = `backgroundImage(
.note().piano()
`;
export const blippyRhodes = `samples({
export const blippyRhodes = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({
bd: 'samples/tidal/bd/BT0A0D0.wav',
sn: 'samples/tidal/sn/ST0T0S3.wav',
hh: 'samples/tidal/hh/000_hh3closedhh.wav',
@ -332,7 +211,9 @@ stack(
.s('sawtooth').cutoff(600),
).fast(3/2)`;
export const wavyKalimba = `samples({
export const wavyKalimba = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({
'kalimba': { c5:'https://freesound.org/data/previews/536/536549_11935698-lq.mp3' }
})
const scales = cat('C major', 'C mixolydian', 'F lydian', ['F minor', 'Db major'])
@ -360,37 +241,9 @@ stack(
.delay(.2)
`;
// TODO: rework tune to use freq
/*
export const jemblung = `const delay = new FeedbackDelay(1/8, .6).chain(vol(0.15), out());
const snare = noise({type:'white',...adsr(0,0.2,0)}).chain(lowpass(5000),vol(1.8),out());
const s = polysynth().set({...osc('sawtooth4'),...adsr(0.01,.2,.6,0.2)}).chain(vol(.23).connect(delay),out());
stack(
stack(
"0 1 4 [3!2 5]".layer(
// chords
x=>x.add("0,3").duration("0.05!3 0.02"),
// bass
x=>x.add("-8").struct("x*8").duration(0.1)
),
// melody
"12 11*3 12 ~".duration(0.005)
)
.add("<0 1>")
.tune("jemblung2")
//.mul(22/5).round().xen("22edo")
//.mul(12/5).round().xen("12edo")
.tone(s),
// kick
"[c2 ~]*2".duration(0.05).tone(membrane().chain(out())),
// snare
"[~ c1]*2".early(0.001).tone(snare),
// hihat
"c2*8".tone(noise().chain(highpass(6000),vol(0.5).connect(delay),out())),
).slow(3)`;
*/
export const festivalOfFingers = `const chords = "<Cm7 Fm7 G7 F#7>";
export const festivalOfFingers = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
const chords = "<Cm7 Fm7 G7 F#7>";
stack(
chords.voicings().struct("x(3,8,-1)").velocity(.5).off(1/7,x=>x.transpose(12).velocity(.2)),
chords.rootNotes(2).struct("x(4,8,-2)"),
@ -403,7 +256,8 @@ stack(
.note().piano()`;
// iter, echo, echoWith
export const undergroundPlumber = `backgroundImage('https://images.nintendolife.com/news/2016/08/video_exploring_the_funky_inspiration_for_the_super_mario_bros_underground_theme/large.jpg',{ className:'darken' })
export const undergroundPlumber = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos, inspired by Friendship - Let's not talk about it (1979) :)
samples({ bd: 'bd/BT0A0D0.wav', sn: 'sn/ST0T0S3.wav', hh: 'hh/000_hh3closedhh.wav', cp: 'cp/HANDCLP0.wav',
}, 'https://loophole-letters.vercel.app/samples/tidal/')
@ -428,7 +282,9 @@ stack(
.fast(2/3)
.pianoroll({})`;
export const bridgeIsOver = `samples({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})
export const bridgeIsOver = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos, bassline by BDP - The Bridge Is Over
samples({mad:'https://freesound.org/data/previews/22/22274_109943-lq.mp3'})
stack(
stack(
"c3*2 [[c3@1.4 bb2] ab2] gb2*2 <[[gb2@1.4 ab2] bb2] gb2>".legato(".5 1".fast(2)).velocity(.8),
@ -447,7 +303,9 @@ stack(
.pianoroll()
`;
export const goodTimes = `const scale = cat('C3 dorian','Bb2 major').slow(4);
export const goodTimes = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
const scale = cat('C3 dorian','Bb2 major').slow(4);
stack(
"2*4".add(12).scale(scale)
.off(1/8,x=>x.scaleTranspose("2")).fast(2)
@ -467,7 +325,9 @@ stack(
.slow(2)
.pianoroll({maxMidi:100,minMidi:20})`;
export const echoPiano = `"<0 2 [4 6](3,4,1) 3*2>"
export const echoPiano = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
"<0 2 [4 6](3,4,1) 3*2>"
.scale('D minor')
.color('salmon')
.off(1/4, x=>x.scaleTranspose(2).color('green'))
@ -477,7 +337,7 @@ export const echoPiano = `"<0 2 [4 6](3,4,1) 3*2>"
.note().piano()
.pianoroll()`;
export const sml1 = `
export const sml1 = `// Hirokazu Tanaka - World 1-1
stack(
// melody
\`<
@ -512,30 +372,9 @@ stack(
.legato(.5)
).fast(2).note()`;
/*
// TODO: does not work on linux (at least for me..)
export const speakerman = `backgroundImage('https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.ytimg.com%2Fvi%2FXR0rKqW3VwY%2Fmaxresdefault.jpg&f=1&nofb=1',
{ className:'darken', style:'background-size:cover'})
stack(
"[g3,bb3,d4] [f3,a3,c4] [c3,e3,g3]@2".slow(2).late(.1),
cat(
'Baker man',
'is baking bread',
'Baker man',
'is baking bread',
'Sagabona',
'kunjani wena',
'Sagabona',
'kunjani wena',
'The night train, is coming',
'got to keep on running',
'The night train, is coming',
'got to keep on running',
).speak("en zu en".slow(12), "<0 2 3 4 5 6>".slow(2)),
).slow(4)`;
*/
export const randomBells = `samples({
export const randomBells = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({
bell: { c6: 'https://freesound.org/data/previews/411/411089_5121236-lq.mp3' },
bass: { d2: 'https://freesound.org/data/previews/608/608286_13074022-lq.mp3' }
})
@ -556,7 +395,9 @@ stack(
.pianoroll({minMidi:20,maxMidi:120,background:'transparent'})
`;
export const waa2 = `n(
export const waa2 = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
n(
"a4 [a3 c3] a3 c3"
.sub("<7 12 5 12>".slow(2))
.off(1/4,x=>x.add(7))
@ -570,7 +411,9 @@ export const waa2 = `n(
.room(.5)
`;
export const hyperpop = `const lfo = cosine.slow(15);
export const hyperpop = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
const lfo = cosine.slow(15);
const lfo2 = sine.slow(16);
const filter1 = x=>x.cutoff(lfo2.range(300,3000));
const filter2 = x=>x.hcutoff(lfo.range(1000,6000)).cutoff(4000)
@ -619,7 +462,9 @@ stack(
).slow(2)
// strudel disable-highlighting`;
export const festivalOfFingers3 = `"[-7*3],0,2,6,[8 7]"
export const festivalOfFingers3 = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
"[-7*3],0,2,6,[8 7]"
.echoWith(4,1/4, (x,n)=>x
.add(n*7)
.velocity(1/(n+1))
@ -635,33 +480,9 @@ export const festivalOfFingers3 = `"[-7*3],0,2,6,[8 7]"
.note().piano()
//.pianoroll({maxMidi:160})`;
export const bossa = `
const scales = sequence('C minor', ['D locrian', 'G phrygian'], 'Bb2 minor', ['C locrian','F phrygian']).slow(4)
stack(
"<Cm7 [Dm7b5 G7b9] Bbm7 [Cm7b5 F7b9]>".fast(2).struct("x ~ x@3 x ~ x ~ ~ ~ x ~ x@3".late(1/8)).early(1/8).slow(2).voicings(),
"[~ [0 ~]] 0 [~ [4 ~]] 4".sub(7).restart(scales).scale(scales).early(.25)
).note().piano().slow(2)`;
/*
export const customTrigger = `stack(
freq("55 [110,165] 110 [220,275]".mul("<1 <3/4 2/3>>").struct("x(3,8)").layer(x=>x.mul("1.006,.995"))),
freq("440(5,8)".legato(.18).mul("<1 3/4 2 2/3>")).gain(perlin.range(.2,.8))
).s("<sawtooth square>/2")
.onTrigger((t,hap,ct)=>{
const ac = Tone.getContext().rawContext;
t = ac.currentTime + t - ct;
const { freq, s, gain = 1 } = hap.value;
const master = ac.createGain();
master.gain.value = 0.1 * gain;
master.connect(ac.destination);
const o = ac.createOscillator();
o.type = s || 'triangle';
o.frequency.value = Number(freq);
o.connect(master);
o.start(t);
o.stop(t + hap.duration);
}).stack(s("bd(3,8),hh*4,~ sd").webdirt())`; */
export const meltingsubmarine = `samples({
export const meltingsubmarine = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({
bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],
sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],
hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],
@ -701,68 +522,9 @@ stack(
)
.slow(3/2)`;
export const swimmingWithSoundfonts = `stack(
n(
"~",
"~",
"~",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [F5@2 C6] A5 G5",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [Bb5 A5 G5] F5@2",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [F5@2 C6] A5 G5",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [Bb5 A5 G5] F5@2",
"A5 [F5@2 C5] A5 F5",
"Ab5 [F5@2 Ab5] G5@2",
"A5 [F5@2 C5] A5 F5",
"Ab5 [F5@2 C5] C6@2",
"A5 [F5@2 C5] [D5@2 F5] F5",
"[C5@2 F5] [Bb5 A5 G5] F5@2"
).s('Sitar: Ethnic'),
n(
"[F4,Bb4,D5] [[D4,G4,Bb4]@2 [Bb3,D4,F4]] [[G3,C4,E4]@2 [[Ab3,F4] [A3,Gb4]]] [Bb3,E4,G4]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, Bb3, Db3] [F3, Bb3, Db3]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]",
"[~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [A3, C4, E4] [A3, C4, E4]] [~ [Ab3, C4, Eb4] [Ab3, C4, Eb4]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [G3, C4, E4] [G3, C4, E4]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]",
"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]",
"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]",
"[~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [Bb3, D3, F4] [Bb3, D3, F4]] [~ [A3, C4, F4] [A3, C4, F4]] [~ [A3, C4, F4] [A3, C4, F4]]",
"[~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [Ab3, B3, F4] [Ab3, B3, F4]] [~ [G3, Bb3, F4] [G3, Bb3, F4]] [~ [G3, Bb3, E4] [G3, Bb3, E4]]",
"[~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, A3, C3] [F3, A3, C3]] [~ [F3, Bb3, D3] [F3, Bb3, D3]] [~ [F3, B3, D3] [F3, B3, D3]]",
"[~ [F3, Bb3, D4] [F3, Bb3, D4]] [~ [F3, Bb3, C4] [F3, Bb3, C4]] [~ [F3, A3, C4] [F3, A3, C4]] [~ [F3, A3, C4] [F3, A3, C4]]"
).s('Kalimba: Ethnic'),
n(
"[G3 G3 C3 E3]",
"[F2 D2 G2 C2]",
"[F2 D2 G2 C2]",
"[F2 A2 Bb2 B2]",
"[A2 Ab2 G2 C2]",
"[F2 A2 Bb2 B2]",
"[G2 C2 F2 F2]",
"[F2 A2 Bb2 B2]",
"[A2 Ab2 G2 C2]",
"[F2 A2 Bb2 B2]",
"[G2 C2 F2 F2]",
"[Bb2 Bb2 A2 A2]",
"[Ab2 Ab2 G2 [C2 D2 E2]]",
"[Bb2 Bb2 A2 A2]",
"[Ab2 Ab2 G2 [C2 D2 E2]]",
"[F2 A2 Bb2 B2]",
"[G2 C2 F2 F2]"
).s('Acoustic Bass: Bass')
).slow(51)
`;
export const outroMusic = `samples({
export const outroMusic = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({
bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],
sd: ['sd/rytm-01-classic.wav','sd/rytm-00-hard.wav'],
hh: ['hh27/000_hh27closedhh.wav','hh/000_hh3closedhh.wav'],
@ -789,7 +551,9 @@ export const outroMusic = `samples({
//.pianoroll({autorange:1,vertical:1,fold:0})
`;
export const bassFuge = `samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] },
export const bassFuge = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({ flbass: ['00_c2_finger_long_neck.wav','01_c2_finger_short_neck.wav','02_c2_finger_long_bridge.wav','03_c2_finger_short_bridge.wav','04_c2_pick_long.wav','05_c2_pick_short.wav','06_c2_palm_mute.wav'] },
'github:cleary/samples-flbass/main/')
samples({
bd: ['bd/BT0AADA.wav','bd/BT0AAD0.wav','bd/BT0A0DA.wav','bd/BT0A0D3.wav','bd/BT0A0D0.wav','bd/BT0A0A7.wav'],
@ -813,18 +577,9 @@ x=>x.add(7).color('steelblue')
.stack(s("bd:1*2,~ sd:0,[~ hh:0]*2"))
.pianoroll({vertical:1})`;
export const bossaRandom = `const chords = "<Am7 Am7 Dm7 E7>"
const roots = chords.rootNotes(2)
stack(
chords.voicings(['F4', 'A5']).struct(
\` x@2 ~ x ~ ~ ~ x |
x? ~ ~ x@3 ~ x |
x? ~ ~ x ~ x@3\`),
roots.struct("x [~ x?0.2] x [~ x?] | x!4 | x@2 ~ ~ ~ x x x").transpose("0 7")
).slow(2).pianoroll().note().piano()`;
export const chop = `samples({ p: 'https://cdn.freesound.org/previews/648/648433_11943129-lq.mp3' })
export const chop = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({ p: 'https://cdn.freesound.org/previews/648/648433_11943129-lq.mp3' })
s("p")
.loopAt(32,1)
@ -835,14 +590,18 @@ s("p")
.sustain(.6)
`;
export const delay = `stack(
export const delay = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
stack(
s("bd <sd cp>")
.delay("<0 .5>")
.delaytime(".16 | .33")
.delayfeedback(".6 | .8")
).sometimes(x=>x.speed("-1"))`;
export const orbit = `stack(
export const orbit = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
stack(
s("bd <sd cp>")
.delay(.5)
.delaytime(.33)
@ -854,7 +613,9 @@ export const orbit = `stack(
.orbit(2)
).sometimes(x=>x.speed("-1"))`;
export const belldub = `samples({ bell: {b4:'https://cdn.freesound.org/previews/339/339809_5121236-lq.mp3'}})
export const belldub = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({ bell: {b4:'https://cdn.freesound.org/previews/339/339809_5121236-lq.mp3'}})
// "Hand Bells, B, Single.wav" by InspectorJ (www.jshaw.co.uk) of Freesound.org
stack(
// bass
@ -885,7 +646,9 @@ stack(
.mask("<1 0>/8")
).slow(5)`;
export const dinofunk = `samples({bass:'https://cdn.freesound.org/previews/614/614637_2434927-hq.mp3',
export const dinofunk = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
samples({bass:'https://cdn.freesound.org/previews/614/614637_2434927-hq.mp3',
dino:{b4:'https://cdn.freesound.org/previews/316/316403_5123851-hq.mp3'}})
stack(
@ -903,7 +666,9 @@ note("Abm7".voicings(['c3','a4']).struct("x(3,8,1)".slow(2))),
note("<b4 eb4>").s('dino').delay(.8).slow(8).room(.5)
)`;
export const sampleDemo = `stack(
export const sampleDemo = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
stack(
// percussion
s("[woodblock:1 woodblock:2*2] snare_rim:0,gong/8,brakedrum:1(3,8),~@3 cowbell:3")
.sometimes(x=>x.speed(2)),
@ -917,7 +682,9 @@ export const sampleDemo = `stack(
.release(.1).room(.5)
)`;
export const holyflute = `"c3 eb3(3,8) c4/2 g3*2"
export const holyflute = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
"c3 eb3(3,8) c4/2 g3*2"
.superimpose(
x=>x.slow(2).add(12),
x=>x.slow(4).sub(5)
@ -928,7 +695,9 @@ export const holyflute = `"c3 eb3(3,8) c4/2 g3*2"
.pianoroll({fold:0,autorange:0,vertical:0,cycles:12,smear:0,minMidi:40})
`;
export const flatrave = `stack(
export const flatrave = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
stack(
s("bd*2,~ [cp,sd]").bank('RolandTR909'),
s("hh:1*4").sometimes(fast("2"))
@ -949,7 +718,9 @@ export const flatrave = `stack(
.decay(.05).sustain(0).delay(.2).degradeBy(.5).mask("<0 1>/16")
)`;
export const amensister = `await samples('github:tidalcycles/Dirt-Samples/master')
export const amensister = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
await samples('github:tidalcycles/Dirt-Samples/master')
stack(
// amen
@ -981,7 +752,9 @@ stack(
n("0 1").s("east").delay(.5).degradeBy(.8).speed(rand.range(.5,1.5))
).reset("<x@7 x(5,8)>")`;
export const juxUndTollerei = `note("c3 eb3 g3 bb3").palindrome()
export const juxUndTollerei = `// licensed with CC BY-NC-SA 4.0 https://creativecommons.org/licenses/by-nc-sa/4.0/
// by Felix Roos
note("c3 eb3 g3 bb3").palindrome()
.s('sawtooth')
.jux(x=>x.rev().color('green').s('sawtooth'))
.off(1/4, x=>x.add(note("<7 12>/2")).slow(2).late(.005).s('triangle'))

View File

@ -232,23 +232,6 @@ exports[`runs examples > example "amp" example index 0 1`] = `
]
`;
exports[`runs examples > example "apply" example index 0 1`] = `
[
"0/1 -> 1/1: {\\"note\\":\\"C3\\"}",
"0/1 -> 1/1: {\\"note\\":\\"Eb3\\"}",
"0/1 -> 1/1: {\\"note\\":\\"G3\\"}",
"1/1 -> 2/1: {\\"note\\":\\"Eb3\\"}",
"1/1 -> 2/1: {\\"note\\":\\"G3\\"}",
"1/1 -> 2/1: {\\"note\\":\\"Bb3\\"}",
"2/1 -> 3/1: {\\"note\\":\\"G3\\"}",
"2/1 -> 3/1: {\\"note\\":\\"Bb3\\"}",
"2/1 -> 3/1: {\\"note\\":\\"D4\\"}",
"3/1 -> 4/1: {\\"note\\":\\"C3\\"}",
"3/1 -> 4/1: {\\"note\\":\\"Eb3\\"}",
"3/1 -> 4/1: {\\"note\\":\\"G3\\"}",
]
`;
exports[`runs examples > example "bandf" example index 0 1`] = `
[
"0/1 -> 1/2: {\\"s\\":\\"bd\\",\\"bandf\\":1000}",
@ -782,27 +765,6 @@ exports[`runs examples > example "dry" example index 0 1`] = `
]
`;
exports[`runs examples > example "each" example index 0 1`] = `
[
"0/1 -> 1/4: {\\"note\\":\\"c3\\"}",
"1/4 -> 1/2: {\\"note\\":\\"d3\\"}",
"1/2 -> 3/4: {\\"note\\":\\"e3\\"}",
"3/4 -> 1/1: {\\"note\\":\\"g3\\"}",
"1/1 -> 5/4: {\\"note\\":\\"c3\\"}",
"5/4 -> 3/2: {\\"note\\":\\"d3\\"}",
"3/2 -> 7/4: {\\"note\\":\\"e3\\"}",
"7/4 -> 2/1: {\\"note\\":\\"g3\\"}",
"2/1 -> 9/4: {\\"note\\":\\"c3\\"}",
"9/4 -> 5/2: {\\"note\\":\\"d3\\"}",
"5/2 -> 11/4: {\\"note\\":\\"e3\\"}",
"11/4 -> 3/1: {\\"note\\":\\"g3\\"}",
"15/4 -> 4/1: {\\"note\\":\\"c3\\"}",
"7/2 -> 15/4: {\\"note\\":\\"d3\\"}",
"13/4 -> 7/2: {\\"note\\":\\"e3\\"}",
"3/1 -> 13/4: {\\"note\\":\\"g3\\"}",
]
`;
exports[`runs examples > example "early" example index 0 1`] = `
[
"0/1 -> 1/2: {\\"s\\":\\"bd\\"}",
@ -1547,27 +1509,6 @@ exports[`runs examples > example "every" example index 0 1`] = `
]
`;
exports[`runs examples > example "every" example index 0 2`] = `
[
"3/4 -> 1/1: {\\"note\\":\\"c3\\"}",
"1/2 -> 3/4: {\\"note\\":\\"d3\\"}",
"1/4 -> 1/2: {\\"note\\":\\"e3\\"}",
"0/1 -> 1/4: {\\"note\\":\\"g3\\"}",
"1/1 -> 5/4: {\\"note\\":\\"c3\\"}",
"5/4 -> 3/2: {\\"note\\":\\"d3\\"}",
"3/2 -> 7/4: {\\"note\\":\\"e3\\"}",
"7/4 -> 2/1: {\\"note\\":\\"g3\\"}",
"2/1 -> 9/4: {\\"note\\":\\"c3\\"}",
"9/4 -> 5/2: {\\"note\\":\\"d3\\"}",
"5/2 -> 11/4: {\\"note\\":\\"e3\\"}",
"11/4 -> 3/1: {\\"note\\":\\"g3\\"}",
"3/1 -> 13/4: {\\"note\\":\\"c3\\"}",
"13/4 -> 7/2: {\\"note\\":\\"d3\\"}",
"7/2 -> 15/4: {\\"note\\":\\"e3\\"}",
"15/4 -> 4/1: {\\"note\\":\\"g3\\"}",
]
`;
exports[`runs examples > example "fast" example index 0 1`] = `
[
"0/1 -> 1/4: {\\"s\\":\\"bd\\"}",