updating examples with new features
This commit is contained in:
@ -18,7 +18,7 @@ ${makeExample(
|
||||
beat(.5) && snd(['sine', 'triangle', 'sawtooth', 'square'].beat()).freq(100).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
Two functions are primarily used to control the frequency of the synthesizer:
|
||||
- <ic>freq(hz: number)</ic>: sets the frequency of the oscillator.
|
||||
@ -30,7 +30,7 @@ ${makeExample(
|
||||
beat(.5) && snd('triangle').freq([100,200,400].beat(2)).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
## Vibrato
|
||||
|
||||
@ -46,7 +46,7 @@ beat(1) :: sound('triangle')
|
||||
.vibmod([1,2,4,8].beat(2))
|
||||
.out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
## Controlling the amplitude
|
||||
|
||||
@ -58,13 +58,13 @@ ${makeExample(
|
||||
"Setting the gain",
|
||||
`beat(0.25) :: sound('sawtooth').gain([0.0, 1/8, 1/4, 1/2, 1].beat(0.5)).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Setting the velocity",
|
||||
`beat(0.25) :: sound('sawtooth').velocity([0.0, 1/8, 1/4, 1/2, 1].beat(0.5)).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
<div class="mt-4 mb-4 lg:grid lg:grid-cols-4 lg:gap-4">
|
||||
<img class="col-span-1 lg:ml-12 bg-gray-100 rounded-lg px-2 py-2", src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ef/ADSR_Envelope_Graph.svg/1280px-ADSR_Envelope_Graph.svg.png" width="400" />
|
||||
@ -85,7 +85,7 @@ beat(0.5) :: sound('wt_piano')
|
||||
.sustain([0.1,0.5].beat(4))
|
||||
.out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
This ADSR envelope design is important to know because it is used for other aspects of the synthesis engine such as the filters that we are now going to talk about. But wait, I've kept the best for the end. The <ic>adsr()</ic> combines all the parameters together. It is a shortcut for setting the ADSR envelope:
|
||||
|
||||
@ -101,7 +101,7 @@ beat(0.5) :: sound('wt_piano')
|
||||
.out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
|
||||
## Substractive synthesis using filters
|
||||
@ -116,7 +116,7 @@ ${makeExample(
|
||||
"Filtering the high frequencies of an oscillator",
|
||||
`beat(.5) :: sound('sawtooth').cutoff(50 + usine(1/8) * 2000).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
These filters all come with their own set of parameters. Note that we are describing the parameters of the three different filter types here. Choose the right parameters depending on the filter type you are using:
|
||||
|
||||
@ -132,7 +132,7 @@ ${makeExample(
|
||||
"Filtering a bass",
|
||||
`beat(.5) :: sound('jvbass').lpf([250,1000,8000].beat()).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
### Highpass filter
|
||||
|
||||
@ -145,7 +145,7 @@ ${makeExample(
|
||||
"Filtering a noise source",
|
||||
`beat(.5) :: sound('gtr').hpf([250,1000, 2000, 3000, 4000].beat()).end(0.5).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
### Bandpass filter
|
||||
|
||||
@ -158,7 +158,7 @@ ${makeExample(
|
||||
"Sweeping the filter on the same guitar sample",
|
||||
`beat(.5) :: sound('gtr').bandf(100 + usine(1/8) * 4000).end(0.5).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
## Filter order (type)
|
||||
|
||||
@ -170,7 +170,7 @@ ${makeExample(
|
||||
"Filtering a bass",
|
||||
`beat(.5) :: sound('jvbass').ftype(['12db', '24db'].beat(4)).lpf([250,1000,8000].beat()).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
I also encourage you to study these simple examples to get more familiar with the construction of basic substractive synthesizers:
|
||||
|
||||
@ -183,7 +183,7 @@ beat(.5) && snd('sawtooth')
|
||||
.out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Blessed by the square wave",
|
||||
@ -194,7 +194,7 @@ beat([.5, .75, 2].beat()) :: [100,101].forEach((freq) => sound('square')
|
||||
.freq(freq*4 + usquare(2) * 200).sustain(0.125).out())
|
||||
beat(.25) :: sound('square').freq(100*[1,2,4,8].beat()).sustain(0.1).out()`,
|
||||
false
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Ghost carillon (move your mouse!)",
|
||||
@ -208,7 +208,7 @@ beat(1/8)::sound('sine')
|
||||
.gain(0.25)
|
||||
.out()`,
|
||||
false
|
||||
)}
|
||||
)}
|
||||
|
||||
## Filter envelopes
|
||||
|
||||
@ -223,6 +223,8 @@ The examples we have studied so far are static. They filter the sound around a f
|
||||
| lpdecay | lpd | decay of the lowpass filter |
|
||||
| lpsustain | lps | sustain of the lowpass filter |
|
||||
| lprelease | lpr | release of the lowpass filter |
|
||||
| lpadsr | | (**takes five arguments**) set all the parameters |
|
||||
|
||||
|
||||
${makeExample(
|
||||
"Filtering a sawtooth wave dynamically",
|
||||
@ -230,7 +232,7 @@ ${makeExample(
|
||||
.cutoff(5000).lpa([0.05, 0.25, 0.5].beat(2))
|
||||
.lpenv(-8).lpq(10).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
### Highpass envelope
|
||||
|
||||
@ -241,6 +243,8 @@ ${makeExample(
|
||||
| hpdecay | hpd | decay of the highpass filter |
|
||||
| hpsustain | hps | sustain of the highpass filter |
|
||||
| hprelease | hpr | release of the highpass filter |
|
||||
| hpadsr | | (**takes five arguments**) set all the parameters |
|
||||
|
||||
|
||||
${makeExample(
|
||||
"Let's use another filter using the same example",
|
||||
@ -248,7 +252,7 @@ ${makeExample(
|
||||
.hcutoff(1000).hpa([0.05, 0.25, 0.5].beat(2))
|
||||
.hpenv(8).hpq(10).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
### Bandpass envelope
|
||||
|
||||
@ -259,6 +263,8 @@ ${makeExample(
|
||||
| bpdecay | bpd | decay of the bandpass filter |
|
||||
| bpsustain | bps | sustain of the bandpass filter |
|
||||
| bprelease | bpr | release of the bandpass filter |
|
||||
| bpadsr | | (**takes five arguments**) set all the parameters |
|
||||
|
||||
|
||||
${makeExample(
|
||||
"And the bandpass filter, just for fun",
|
||||
@ -268,7 +274,7 @@ ${makeExample(
|
||||
.bpenv(-4).release(2).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
|
||||
## Wavetable synthesis
|
||||
@ -286,7 +292,7 @@ beat(1) :: sound('kick').n(4).out()
|
||||
beat(2) :: sound('snare').out()
|
||||
beat(.5) :: sound('hh').out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
|
||||
Let's explore the galaxy of possible waveforms. It can be hard to explore them all, there is a **lot** of them:
|
||||
@ -304,7 +310,7 @@ beat(2) :: v('swave', collection.pick())
|
||||
beat(0.5) :: sound(v('swave')).n(v('selec')).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
You can work with them just like with any other waveform. Having so many of them makes them also very useful for generating sound effects, percussive, sounds, etc...
|
||||
|
||||
@ -330,7 +336,7 @@ beat(.25) && snd('triangle').adsr(0.02, 0.1, 0.1, 0.1)
|
||||
beat(2) :: sound('cp').room(1).sz(1).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Giving some love to ugly inharmonic sounds",
|
||||
@ -341,7 +347,7 @@ beat(.5) :: sound('sine')
|
||||
.fmh([1, 1.75].beat())
|
||||
.fmi($(1) % 30).orbit(2).room(0.5).out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Peace and serenity through FM synthesis",
|
||||
@ -355,7 +361,7 @@ beat(0.25) :: sound('sine')
|
||||
.delayfb(0.8).fmh(Math.floor(usine(.5) * 4))
|
||||
.out()`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
**Note:** you can also set the _modulation index_ and the _harmonic ratio_ with the <ic>fm</ic> argument. You will have to feed both as a string: <ic>fm('2:4')</ic>. If you only feed one number, only the _modulation index_ will be updated.
|
||||
|
||||
@ -376,7 +382,7 @@ beat(.5) :: sound('sine')
|
||||
.fmsus(0).fmdec(0.2).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
## ZzFX
|
||||
|
||||
@ -390,7 +396,7 @@ ${makeExample(
|
||||
beat(.5) :: sound(['z_sine', 'z_triangle', 'z_sawtooth', 'z_tan', 'z_noise'].beat()).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
${makeExample(
|
||||
"Minimalist chiptune",
|
||||
`
|
||||
@ -404,7 +410,7 @@ beat(.5) :: sound('z_triangle')
|
||||
.pitchJumpTime(0.01).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
It comes with a set of parameters that can be used to tweak the sound. Don't underestimate this synth! It is very powerful for generating anything ranging from chaotic noise sources to lush pads:
|
||||
|
||||
@ -442,7 +448,7 @@ beat(.25) :: sound('z_tan')
|
||||
.out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
${makeExample(
|
||||
"What is happening to me?",
|
||||
`
|
||||
@ -452,7 +458,7 @@ beat(1) :: snd('zzfx').zzfx([
|
||||
].beat()).out()
|
||||
`,
|
||||
false
|
||||
)}
|
||||
)}
|
||||
${makeExample(
|
||||
"Les voitures dans le futur",
|
||||
`
|
||||
@ -464,7 +470,7 @@ beat(1) :: sound(['z_triangle', 'z_sine'].pick())
|
||||
.delayt(0.75).delayfb(0.5).out()
|
||||
`,
|
||||
false
|
||||
)}
|
||||
)}
|
||||
|
||||
Note that you can also design sounds [on this website](https://killedbyapixel.github.io/ZzFX/) and copy the generated code in Topos. To do so, please use the <ic>zzfx</ic> method with the generated array:
|
||||
${makeExample(
|
||||
@ -474,7 +480,7 @@ ${makeExample(
|
||||
beat(2) :: sound('zzfx').zzfx([3.62,,452,.16,.1,.21,,2.5,,,403,.05,.29,,,,.17,.34,.22,.68]).out()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
# Speech synthesis
|
||||
|
||||
@ -494,7 +500,7 @@ ${makeExample(
|
||||
beat(4) :: speak("Hello world!")
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Let's hear people talking about Topos",
|
||||
@ -502,7 +508,7 @@ ${makeExample(
|
||||
beat(2) :: speak("Topos!","fr",irand(0,5))
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
|
||||
You can also use speech by chaining methods to a string:
|
||||
@ -513,7 +519,7 @@ ${makeExample(
|
||||
onbeat(4) :: "Foobaba".voice(irand(0,10)).speak()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Building string and chaining",
|
||||
@ -526,7 +532,7 @@ ${makeExample(
|
||||
beat(6) :: sentence.pitch(0).rate(0).voice([0,2].pick()).speak()
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
|
||||
${makeExample(
|
||||
"Live coded poetry with array and string chaining",
|
||||
@ -546,6 +552,6 @@ ${makeExample(
|
||||
.speak();
|
||||
`,
|
||||
true
|
||||
)}
|
||||
)}
|
||||
`;
|
||||
};
|
||||
|
||||
@ -13,24 +13,26 @@ beat(.5) :: sound('hh').out()`,
|
||||
`// Entering the secret room - Bubobubobubo
|
||||
let frequencies = [200,400,600,800,1000,2000].beat(2);
|
||||
beat(2) :: sound('sine').freq(frequencies)
|
||||
.delay(0.5).delayt(usine(.5)).delayfb(0.8).size(0.9).room(0.9).out()
|
||||
.delay(0.25).delayt(usine(.25)).delayfb(0.25).size(0.9).room(0.9).out()
|
||||
beat(2) :: app.hydra.osc(frequencies/100, 0.25, 0.5)
|
||||
.posterize([32,4,8,16].beat(2)).rotate(cpulse())
|
||||
.kaleid([1,2,3].beat()).out()`,
|
||||
`// The real internet of things - Bubobubobubo
|
||||
beat(.5) :: sound('STA6').cut(1).vel(0.4)
|
||||
.orbit(2).room(0.5).size(0.5).n(irand(1,4))
|
||||
.speed([0.15, 0.30].beat()).out()
|
||||
.speed([0.15, 0.30].beat() * 1.5).loop([1,0]
|
||||
.beat(.125)).loopEnd([1,0.5].beat(2)).out()
|
||||
binrhythm(.5, 50) :: sound('shaker').out()
|
||||
binrhythm(.5, 52) :: sound('808bd').n(3).out()
|
||||
rhythm(.25, 6, 8) :: sound('808sd').out()`,
|
||||
`// Numerology - Bubobubobubo
|
||||
bpm(130);
|
||||
let mel = [
|
||||
"0.125 _ (0 3 7 0 3 5 0 3 9)+(0 2)", "0.125 (0 7 0 10 0 5)+(0 3)",
|
||||
"0.125 (0 3 7 0 3 5 0 3 9)+(0 2)", "0.125 (0 2 4 5 9 10)+(0 2)",
|
||||
].beat(4);
|
||||
z0(mel)
|
||||
.scale('minor').sound('square').cutoff(800 + usine(.5) * 5000)
|
||||
.scale('minor').sound('wt_piano').cutoff(800 + usine(.5) * 5000)
|
||||
.fmi([2, 4, 8].beat(2)).fmh(flip(2) ? 2 : 4)
|
||||
.delay(bpm() / 60 / 9).delayt(0.25).delayfb(0.5)
|
||||
.fmsus(0.3).fmrel(0.3).rel(rand(0.5,0.8))
|
||||
@ -42,34 +44,35 @@ beat([.25, .5].beat(4)) :: flip(6) && sound('dr')
|
||||
`// Harmonic Leaps and Gaps -- Bubobubobubo
|
||||
let oscillation = quant(usine(.25) * 20, [35, 40, 38, 50, 55]);
|
||||
let tonal = [0, 5, 0, 0, 7].palindrome().bar() + 40 - 24;
|
||||
[tonal, tonal + 7, tonal + [12,3].bar()].forEach((e) => {
|
||||
flip(2) :: beat(.5) :: sound('square').fmi(2)
|
||||
.cutoff(500 + usine(1/2)).n(irand(1,10))
|
||||
[tonal, tonal + 7, tonal + [12, 3, 24].bar()].forEach((e) => {
|
||||
flip(2) :: beat(.5) :: sound('square').fmi(1.5).fmh(0.99)
|
||||
.cutoff(500 + usine(1/2)).n($(1) % 20).cut(.1)
|
||||
.note(e + oscillation + [0, 5].beat(.5)).out()
|
||||
!flip(2) :: beat(.5) :: sound('sawtooth').fmi(2)
|
||||
.cutoff(500 + usine(1/2) * 5000).n(irand(1,10))
|
||||
!flip(2) :: beat(.5) :: sound('sawtooth').fmi(1.49).fmh(1.01)
|
||||
.cutoff(500 + usine(1/2) * 5000).n(irand(1,10)).cut(.1)
|
||||
.note(e + oscillation + [0, 5].beat(.5)).out()
|
||||
});
|
||||
oncount([2, 3.5, [5,0].pick()], 6) :: sound('snare').out()
|
||||
`,
|
||||
oncount([2, 4, 4.5], 6) :: sound('snare').n(4).out()
|
||||
rhythm(.25, 6, 8) :: sound('shaker').end(0.25).out()
|
||||
rhythm(.5,4,8) :: sound('bd').out()`,
|
||||
`// Computer Music Classroom, Monday (8AM) -- Bubobubobubo
|
||||
let ur = [0, 12, 7].beat(24),
|
||||
let ur = [0, 5, 12, 7, 5].beat(24),
|
||||
fundamental = [0, 5, 10, 8, 6].repeatAll(4).bar();
|
||||
beat(.25) :: sound('square')
|
||||
.note(ur + fundamental + 40).n(1 + $(1) % 8)
|
||||
beat(.25) :: sound('triangle')
|
||||
.note(ur + fundamental + 40).n(1 + $(1) % 16)
|
||||
.atk(0.05).sustain(0.1).release(0.1)
|
||||
.room(0.9).size(0.9)
|
||||
.room(0.9).size(0.9).vib(2).vibmod(0.125)
|
||||
.out()
|
||||
beat(.25) :: sound('sawtooth')
|
||||
.note(ur + fundamental + 47).n(1 + $(2) % 8)
|
||||
beat(.25) :: sound('triangle')
|
||||
.note(ur + fundamental + 47).n(1 + $(2) % 16)
|
||||
.atk(0.05).sustain(0.1).release(0.1)
|
||||
.room(0.9).size(0.9)
|
||||
.room(0.9).size(0.9).vib(4).vibmod(0.125)
|
||||
.out()
|
||||
beat(.25) :: sound(['sawtooth', 'square'].bar())
|
||||
.note(ur + fundamental + 40+[10,12].bar()).n(1 + $(3) % 8)
|
||||
.atk(0.05).sustain(0.1).release(0.1)
|
||||
.room(0.9).size(0.9).out()
|
||||
`,
|
||||
.note(ur + fundamental + 40+[10,12].bar()).n(1 + $(3) % 16)
|
||||
.atk(0.05).sustain(0.1).release(0.1).vib([0, 0, 0, 0.5])
|
||||
.vibmod(often() ? 1 : [16,8,4].pick())
|
||||
.room(0.9).size(0.9).out()`,
|
||||
`// Lamento for Digital Harpists -- Bubobubobubo
|
||||
beat(4) :: sound('triangle')
|
||||
.note(60).fmwave('triangle').fmi(3.95)
|
||||
@ -92,21 +95,18 @@ beat([4, 2, 8].pick() / [2,1].bar()) :: sound('triangle')
|
||||
let melody = [30,30,34,35,37].palindrome()
|
||||
.beat() + [0, -12].repeatAll(2).beat(2)
|
||||
if (flip(8, 75)) {
|
||||
log('first section')
|
||||
rhythm(.5, 4, 8) :: sound('ST12').n([0,1,2].beat(0.5)).speed(0.5).out()
|
||||
rhythm(.5, 6, 8) :: sound('ST20').n([0,1,2].beat(0.5) + 20)
|
||||
rhythm(.5, 4, 8) :: sound('ST12').n([0,1,2].beat(0.5)).speed(0.5).gain(0.4).out()
|
||||
rhythm(.5, 6, 8) :: sound('ST20').n([0,1,2].beat(0.5) + 20).gain(0.4)
|
||||
.speed(0.25).end(0.1).orbit(2).room(0.5).size(0.5).out()
|
||||
beat(.5) :: sound('ST01').note(melody)
|
||||
beat(.5) :: sound('ST01').note(melody).gain(0.4)
|
||||
.n($(1)).speed(0.5).room(0.5).size(0.5).out()
|
||||
} else {
|
||||
log('second section')
|
||||
rhythm(.5, 2, 8) :: sound('ST20')
|
||||
.n([0,1,2].beat(0.5)).speed(0.5)
|
||||
.n([0,1,2].beat(0.5)).speed(0.5).gain(0.4)
|
||||
.end(0.1).out()
|
||||
beat(.5) :: sound('ST01').note(melody).n($(1)).speed(0.5).end(0.1).out()
|
||||
beat(1) :: sound('ST02').note(melody).n($(1)).speed(0.5).end(0.1).out()
|
||||
}
|
||||
`,
|
||||
beat(.5) :: sound('ST01').note(melody).n($(1)).speed(0.5).gain(0.4).end(0.1).out()
|
||||
beat(1) :: sound('ST02').note(melody).n($(1)).speed(0.5).gain(0.4).end(0.1).out()
|
||||
}`,
|
||||
`// Race day - Bubobubobubo
|
||||
bpm(125);
|
||||
beat(.5) :: sound('STB6')
|
||||
@ -173,6 +173,7 @@ beat(0.25) :: snd('hh').out();
|
||||
beat(2) :: snd('square')
|
||||
.cutoff(500).note(50-12).resonance(20).sustain(0.2).out()
|
||||
beat(1/4)::snd(['sawtooth', 'triangle', 'square'].beat(1))
|
||||
.vib(2).vibmod(0.5)
|
||||
.note([50, 53, 55, 50, 50, 52, 58, 50+12, 50+15].beat(4) + [0, 12, 24].beat(0.5))
|
||||
.cutoff(usine(.5)*10000).resonance([10,20].beat(2))
|
||||
.fmi($(1) % 10).fmh($(2) % 5)
|
||||
@ -183,17 +184,20 @@ beat(1/4)::snd(['sawtooth', 'triangle', 'square'].beat(1))
|
||||
beat(4)::snd('amencutup').n($(19)).cut(1).orbit(2).pan(rand(0.0,1.0)).out()`,
|
||||
`// Crazy arpeggios - Bubobubobubo
|
||||
bpm(110)
|
||||
beat(0.125) && sound('sawtooth')
|
||||
beat([0.25, 0.5].beat(4)) && sound('sawtooth')
|
||||
.note([60, 62, 63, 67, 70].beat(.125) +
|
||||
[-12,0,12].beat() + [0, 0, 5, 7].bar())
|
||||
.sustain(0.1).fmi(0.25).fmh(2).room(0.9)
|
||||
.gain(0.75).cutoff(500 + usine(8) * [500, 1000, 2000].bar())
|
||||
.delay(0.5).delayt(0.25).delayfb(0.25)
|
||||
.gain(0.75).cutoff([500,1000].beat(2))
|
||||
.lpadsr([6,8].beat(), 1/16, .125, 0, 0)
|
||||
.delay(0.5).delayt(0.25)
|
||||
.delayfb(0.25)
|
||||
.out();
|
||||
beat(1) && snd('kick').out();
|
||||
beat(2) && snd('snare').out();
|
||||
beat(.5) && snd('hat').out();
|
||||
`,
|
||||
binrhythm([.25, .5].beat(), 11) :: often() :: sound('dr')
|
||||
.n([0, 1].beat()).gain(0.4).out()
|
||||
binrhythm([.5, .25, .5, .5, .25].beat(), 122) :: often() :: sound('dr')
|
||||
.n([9, 24].beat()).gain(0.4).out()
|
||||
rhythm([.5, .25, 1].beat(2), 4, 8) :: sound('kick').gain(0.6).out()`,
|
||||
`// Obscure Shenanigans - Bubobubobubo
|
||||
beat([1/4,1/8,1/16].beat(8)):: sound('sine')
|
||||
.freq([100,50].beat(16) + 50 * ($(1)%10))
|
||||
@ -205,15 +209,14 @@ flip(3) :: beat([.25,.5].beat(.5)) :: sound('dr')
|
||||
.n([8,9].pick()).gain([.8,.5,.25,.1,.0].beat(.25)).out()
|
||||
`,
|
||||
`// Resonance bliss - Bubobubobubo
|
||||
beat(.25)::snd('arpy')
|
||||
.note(30 + [0,3,7,10].beat())
|
||||
.cutoff(usine(.5) * 5000).resonance(10).gain(0.3)
|
||||
.end(0.8).room(0.9).size(0.9).n(0).out();
|
||||
beat([.25,.125].beat(2))::snd('arpy')
|
||||
.note(30 + [0,3,7,10].beat())
|
||||
.cutoff(usine(.5) * 5000).resonance(20).gain(0.3)
|
||||
.end(0.8).room(0.9).size(0.9).n(3).out();
|
||||
beat(.5) :: snd('arpy').note(
|
||||
[30, 33, 35].repeatAll(4).beat(1) - [12,0].beat(0.5)).out()
|
||||
`,
|
||||
beat([.25,.125].beat(4))::snd('arpy:4')
|
||||
.note(30 + [0,3,7,10, 12, 5, 7].beat()).speed(0.999).pan(0)
|
||||
.cutoff(1000 + usine(1/8) * 400).lpadsr(8, 1/8, 1/16, 0, 0)
|
||||
.resonance(1).gain(0.4).end(0.8).room(0.9).size(0.9).n(0).out();
|
||||
beat([.25,.125, .5].beat(4))::snd('arpy:4')
|
||||
.note(30 + [0,3,7,10, 12, 5, 7].beat()).speed(1.001).pan(1)
|
||||
.cutoff(100 + usine(1/8) * 800).lpadsr(5, 0, [1/8, 1.16].beat(), 0, 0)
|
||||
.resonance(5).gain(0.4).end(0.8).room(0.9).size(0.9).n(3).out();
|
||||
beat(.5) :: snd('arpy').note([30, 33, 35].repeatAll(4).beat(1) - [24,12].beat(0.5))
|
||||
.cutoff(500).lpadsr(8, 0.05, .125, 0, 0).out()`,
|
||||
];
|
||||
|
||||
Reference in New Issue
Block a user