Ticking

Soms heb je best veel werk, zo lijkt het, wanneer er veel code door een ring loopt. Je zal noten in rings steken voor melodieën, rusttijden (sleep) bij ritmes, akkoordenschema’s, variaties op het timbre, enz. enz.

Tick Ringen

Sonic Pi biedt een zeer handig hulpmiddel voor het werken met ringen binnen live_loops. Het heet het tick systeem. In de sectie over de ringen spraken we over de teller die constant verhoogt, zoals een weergave van de huidige tel . Tick voert het zelfde idee uit. Het biedt u de mogelijkheid om te doorheen ringen te tikken. Laten we eens kijken naar een voorbeeld:

counter = 0
live_loop :arp do
  play (scale :e3, :minor_pentatonic)[counter], release: 0.1
  counter += 1
  sleep 0.125
end

Dit is gelijk aan:

live_loop :arp do
  play (scale :e3, :minor_pentatonic).tick, release: 0.1
  sleep 0.125
end

Hier nemen we de pentatonische toonladder E3 mineur en ticking doorheen elk element. Dit wordt gedaan door .tick toe te voegen aan het einde van de verklaring van de toonladder. De tick is lokaal voor de live loop, dus elke live loop kan zijn eigen onafhankelijke tick hebben:

live_loop :arp do
  play (scale :e3, :minor_pentatonic).tick, release: 0.1
  sleep 0.125
end
live_loop :arp2 do
  use_synth :dsaw
  play (scale :e2, :minor_pentatonic, num_octaves: 3).tick, release: 0.25
  sleep 0.25
end

Tick

U kunt ook tick als een standaard fn aanroepen en de waarde gebruiken als een index:

live_loop :arp do
  idx = tick
  play (scale :e3, :minor_pentatonic)[idx], release: 0.1
  sleep 0.125
end

Het is veel leuker om .tick op het einde aan te roepen. de .tick fn is als je je dingen wil verbeelden met de tick waarde en voor wanneer je ticks wil gebruiken voor andere dingen dan in ringen te indexeren.

Kijk

De magische van tick is dat niet alleen het resultaat geeft van een nieuwe index (of de waarde van de ring op die index) ook zorgt het ervoor dat de volgende keer dat u tick aanroept, dit de volgende waarde zal zijn. Neem een kijkje naar de voorbeelden in de docs tick voor de vele manieren om hiermee te werken. Nu is het echter belangrijk erop te wijzen dat je soms gewoon wil kijken naar de huidige waarde van de tick maar deze niet te verhogen. Deze optie is beschikbaar via de look fn. U kunt look oproepen zoals een standaard fn of door toevoeging van look aan het einde van een ring.

Ticks Benoemen

En nog dit, soms heb je meer dan één tick per live loop nodig. Dat kan je door je tick een naam te geven:

live_loop :arp do
  play (scale :e3, :minor_pentatonic).tick(:foo), release: 0.1
  sleep (ring 0.125, 0.25).tick(:bar)
end

Hier gebruiken we twee ticks: één voor de te spelen noten en een andere voor de rusttijd (sleep). Vermits deze alle twee in dezelfde live loop zitten, moeten we ze een unieke naam geven om hen te kunnen onderscheiden. Hier gaat het net zoals een live_loop benoemen, we geven een symbool door, voorafgegaan door een :. In het voorgaande voorbeeld noemden we één tick :fooen een andere :bar. Als we naar dezen willen kijken ( look), moeten we ook de naam van de tick doorgeven aan look.

Maak het niet te ingewikkeld

De grote kracht van het tick systeem is niet behulpzaam als beginner. Probeer niet alles uit deze sectie. Focus op een tick in één enkele ring. Dit geeft de grootste voldoening en is het minst gekunsteld tick-en door ringen in jouw live_loops.

Neem een kijkje naar de documentatie ‘Tick’ waar nuttige voorbeelden te vinden zijn. Nog een leuke tick verder!