5 Live Sampler
Voor deze opdracht maak je een live sampler waarmee je stukjes audio kunt opnemen en direct kunt bespelen met een keyboard. Door de spatiebalk ingedrukt te houden maak je een opname. Ook kan je het instrument polyfoon maken door met meerdere voices te werken.
Deadline: 3 april
Belangrijke objecten in deze opdracht:
Belangrijk:
Gebruik de help-files (alt-click). Bekijk ook de Max Keyboard Shortcuts en Max CheatSheet.
Plaats comments om duidelijk te maken dat je snapt hoe iets werkt.
Maak je patch netjes en overzichtelijk voordat je hem laat beoordelen!
De file cello-f2.aif is een sample die standaard in Max zit. f2
is de toonhoogte (87.31Hz). Wanneer je de bestandsnaam als 2de argument invult in een [buffer~]
-object wordt de sample automatisch geladen.
a. Loop de sample
- Zorg dat je de cello-sample als loop afspeelt met
[groove~]
en dat je de afspeelsnelheid kunt bepalen met een signal, aangestuurd vanuit een floatingpoint nummer[flonum]
. - Maak een
[kslider]
aan en implementeer de juiste berekening zodat def2
-toets de sample in originele snelheid afspeelt, en de andere toetsen in de juiste verhouding (dusf1
een octaaf lager, enc3
een kwint hoger, etc.) - Gebruik
[adsr~]
om een envelope te maken waarvan je de parameters kunt instellen met 4[live.dial]
's. - Zorg dat de
[adsr~]
ook reageert op de velocity van kslider.
Tip: [groove~]
, [sig~]
, [mtof]
, [kslider]
, [adsr~]
, [live.dial]
, [live.gain~]
, [/]
b. Record en De-click
- Gebruik
[ezadc~]
/[plugin~]
en[record~]
om audio van een mic op te nemen in de[buffer~]
. Laat het input-level zien in je patch en gebruik een gain slider om het volume te kunnen regelen. - Maak gebruik van
[key]
om ervoor te zorgen dat je een stukje kunt opnemen wanneer je spatie indrukt. - Het loopen van een sample kan klikjes veroorzaken wanneer die van het einde naar het begin van de sample springt. Gebruik de sync output (rechter outlet) van
[groove~]
om een window-functie te genereren. Dit kan op 1 van de manieren die in de les is laten zien. Met de window-functie maak je een fade-in en fade-out die synchroon loopt met de loop van de sample om klikjes te verwijderen.
Tip: [adc~]
/[plugin~]
, [ezdac~]
/[plugout~]
, [record~]
, [trapezoid~]
, [cycle~]
, [wave~]
, [shape~]
, [*~]
, [live.gain~]
, [key]
, [trigger]
, [select]
c. Vibrato en Portamento
Vibrato is een zweving in de toonhoogte, portamento (of glide of glissando) is het geleidelijk veranderen van de toonhoogte van de vorige gespeelde noot naar de nieuwe.
- Gebruik een LFO gemaakt van
[cycle~]
om de afspeelsnelheid te moduleren (vibrato). De modulatie moet rondom de gespeelde toon bewegen, en je moet de frequency en depth kunnen instellen met een slider of dial. Bepaal het bereik zelf met[scale]
of via de inspector. - Met
[line~]
interpoleer je van de vorige toon naar de nieuwe gespeelde toon. Zorg ervoor dat je slide-tijd kunt instellen met een slider of dial, bepaal het bereik zelf met[scale]
of via de inspector.
Tip: [cycle~]
, [line~]
, [*~]
, [+~]
, [pack f f]
(voldoende)
d. Polyfonie
Je hebt nu een mono sampler. Om akkoorden te kunnen spelen wil je die polyfoon maken. Bij polyfonie gebruik je meerdere kopieën van dezelfde monofone klank.
Kopieer de patch van a
, b
of c
om polyfoon te maken. Patches b en c hebben meer instellingen waar je rekening mee moet houden bij het opstarten en instellen van parameters, a
kan dus wat makkelijker zijn om mee te beginnen.
- Zet de
[kslider]
inpolyphonic mode
(via inspector), en gebruik een combinatie van[poly 4]
,[pack i i i]
, en[route 1 2 3 4]
zodat je vier toetsen kunt indrukken. De pitch- en velocitywaardes komen als lijsten uit aparte outlets van het[route]
-object. - Bedenk welk deel van de patch gebruikt moet worden voor polyfonie, en gebruik subpatchers of abstractions om dat te doen (4x). Sluit de vier pitch- en velocitywaardes op de juiste manier aan.
- Zorg dat je met dezelfde 4 dials elke
[adsr~]
van alle vier de voices kunt aansturen via[inlet]
's (tip: gebruik[pak]
en[unpack]
) of[send]
/[receive]
. - Optioneel: Indien je met vibrato en portamento werkt, zorg dan dat de subpatches met goede waardes opstarten en dat je ze kunt instellen voor alle kopieën tegelijk.
Tip: [poly]
, [pack]
, [route]
, [p]
(subpatcher), [inlet]
, [outlet]
, [send]
, [receive]
(goed)
Uitdaging (zeer goed)
- Gebruik je Teensy om enkele parameters van de patch aan te sturen! Maak bijvoorbeeld een drukknop om de opname mee te starten, een drukknop om een noot af te spelen en een potmeter (of andere sensor) om de toonhoogte te bepalen.
-
Maak een extra buffer zodat je 2 verschillende klanken kan opnemen. Verzin een interessante manier om deze 2 klanken in je sampler te gebruiken. Bijvoorbeeld een optie om te crossfaden tussen de twee, of dat elke keer dat je een nooit speelt willekeurig 1 van de 2 buffers gekozen wordt, of ...?
-
Het gebruik van subpatchers/abstractions is oké voor polyfone patches met weinig voices, maar zodra je 8 of meer voices wilt spelen wordt het al weer veel patchwerk. Bekijk eens het
[poly~]
(niet poly-zonder-tilde) om efficienter met polyfonie te werken en bouw je patch om.