Het is ook mogelijk om de duur en amplitude te wijzigen van een samples met behulp van een ADSR-envelop. Nochtans, werkt dit enigszins anders dan de ADSR envelop voor synths. Sample enveloppen kunnen alleen de amplitude en de duur van een sample verminderen - en nooit om deze te verhogen. De sample wordt gestopt wanneer de sample is afgespeeld of de envelop heeft voltooid - welke van deze het eerst is. Dus, bij een erg lange release:`, het zal de sample niet verlengen.
Laten we terugkeren naar onze trouwe vriend de Amen Break:
sample :loop_amen
Zonder opties zullen we de volledige sample horen aan normale volle amplitude. Als we deze met behulp van het volume in willen mixen over een tijd van 1 seconde kunnen we de attack:
parameter gebruiken:
sample :loop_amen, attack: 1
Voor een kortere fade in, kies een kleinere waarde voor de attack:
sample :loop_amen, attack: 0.3
Waar de ADSR envelop zeker van gedrag verschilt met de standaard synth-envelop is in de sustain waarde. In de standaard synth envelop, is de sustain waarde, standaard op 0 ingesteld, tenzij u deze handmatig instelt. Met samples, is de sustain waarde, standaard een automagische waarde - namelijk de speelduur die de sample rest . Dit is de reden waarom we de totale sample horen als we geen waarden instellen. Als de attack, decay, sustain en release waarden allen 0 waren zouden we niks horen . Sonic Pi berekent dus hoe lang de sample is, trekt elke attack, decay en release tijden af en wordt het resultaat, de sustain tijd. Als de som van de attack, decay en release waarden meer dan de duur van de sample zijn, is de sustain gewoon ingesteld op 0.
Om deze te ontdekken, laten we dan onze Amen break in meer detail bekijken. Als wij Sonic Pi nu eens vragen hoe lang de sample is:
print sample_duration :loop_amen
Het zal 1.753310657596372
uitprinten wat de de lengte is van de sample in seconden uitgedrukt. Laten we dit gewoon even afronden naar ‘1,75’ voor het gemak hier. Nu, als we de release naar ‘0,75’ instellen zal er iets verrassend gebeuren:
sample :loop_amen, release: 0.75
Het zal de eerste seconde van de sample met volledige amplitude afspelen voordat deze dan uit-fade over een periode van 0.75 seconden. Dit is de auto sustain in actie. Standaard werkt de release altijd vanaf het einde van de sample. Als onze sample 10.75 seconden lang was, zou het de eerste 10 seconden spelen met volledige amplitude vooraleer deze met 0.75s uit te fade-en .
Dus onthoud: standaard geeft de release, aan het einde van de sample, een fade-out .
We kunnen attack:
een release:
samen met het gedrag van de auto sustain gebruiken om in de duurtijd van de sample in en uit te fade-en:
sample :loop_amen, attack: 0.75, release: 0.75
Als de totale duurtijd van de sample 1.75s is en onze attack en release fase opgeteld 1.5 is, wordt de sustain fase automatisch op 0.25 ingesteld. Dit staat ons toe van makkelijk in en uit te fade-en.
We kunnen makkelijk naar ons normale synth ADSR gedrag terugkeren door de sustain:
manueel naar een waarde te brengen zoals bv. 0:
sample :loop_amen, sustain: 0, release: 0.75
Nu zal onze sample in totaal 0.75s spelen. Met de standaard waarden voor attack:
endecay:
van 0, springt de sample recht naar volle amplitude, zal 0s sustain-en maakt een neerwaardse release tot amplitude 0 over een periode van 0.75s.
We kunnen dit gedrag goed gebruiken om langer klinkende geluiden om te zetten naar korte, meer percussieve geluiden. We overwegen dit even met de sample :drum_cymbal_open
:
sample :drum_cymbal_open
Je hoort het cimbaal over een zekere periode uitzingen. We kunnen nu de envelop gebruiken om deze meer percussief te maken:
sample :drum_cymbal_open, attack: 0.01, sustain: 0, release: 0.1
Je kan het slaan op de cymbaal, en het dempen ervan veranderen, door de sustain fase te vergroten:
sample :drum_cymbal_open, attack: 0.01, sustain: 0.3, release: 0.1
Leef je uit door aan samples een envelop toe te voegen. Probeer ook de rate te veranderen voor echt interessante resultaten.