Kontakt: gli script (parte 11)

Lo script visto nell’articolo precedente funziona molto bene ma è limitato alle altezze scelte nell’assegnazione dei valori nell’array e alla durata delle note specificata nel comando play_note. Se volessimo dare all’utente la possibilità di scegliersi l’altezza della sequenza corrispondente alle otto note potremmo usare 8 manopole che chiameremo Seq1,…, Seq8. Ogni manopola potrà impostare l’altezza della nota rispetto a quella suonata partendo da un’ottava inferiore fino a due ottave superiori scegliendo come default il valore zero che sarà pari all’altezza della nota suonata. Effettuiamo quindi la dichiarazione delle 8 manopole e abilitiamo la visualizzazione della performance view:

on init
 declare ui_knob $Seq1(-12,24,1)
 $Seq1 := 0
 make_persistent($Seq1)

 declare ui_knob $Seq2(-12,24,1)
 $Seq2 := 0
 make_persistent($Seq2)

 declare ui_knob $Seq3(-12,24,1)
 $Seq3 := 0
 make_persistent($Seq3)

 declare ui_knob $Seq4(-12,24,1)
 $Seq4 := 0
 make_persistent($Seq4)

 declare ui_knob $Seq5(-12,24,1)
 $Seq5 := 0
 make_persistent($Seq5)

 declare ui_knob $Seq6(-12,24,1)
 $Seq6 := 0
 make_persistent($Seq6)

 declare ui_knob $Seq7(-12,24,1)
 $Seq7 := 0
 make_persistent($Seq7)

 declare ui_knob $Seq8(-12,24,1)
 $Seq8 := 0
 make_persistent($Seq8)

 declare %Arpeggio[8] := (0,4,7,12,9,14,11,7)

 declare $cont

 make_perfview

end on

Cliccando su apply la sequenza di manopole appare nella Performance View nel modo seguente:

081 ksp

Assegniamo ora il valore espresso in ogni manopola alle varie memorie dell’array che esprime la sequenza degli arpeggiatori. Questa assegnazione deve avvenire all’interno del ciclo while più interno.

on note
 ignore_event ($EVENT_ID)
 while ($NOTE_HELD = 1)
  $cont := 0
  while ($cont<8 and $NOTE_HELD = 1)
   %Arpeggio[0] :=  $Seq1
   %Arpeggio[1] :=  $Seq2
   %Arpeggio[2] :=  $Seq3
   %Arpeggio[3] :=  $Seq4
   %Arpeggio[4] :=  $Seq5
   %Arpeggio[5] :=  $Seq6
   %Arpeggio[6] :=  $Seq7
   %Arpeggio[7] :=  $Seq8
 play_note ($EVENT_NOTE+%Arpeggio[$cont], $EVENT_VELOCITY, 0, $DURATION_EIGHTH)
  wait ($DURATION_EIGHTH)
  inc($cont)
 end while
end while
end on

Applichiamo ora le informazioni inserite. Lo script diventa:

on init
 declare ui_knob $Seq1(-12,24,1)
 $Seq1 := 0
 make_persistent($Seq1)

 declare ui_knob $Seq2(-12,24,1)
 $Seq2 := 0
 make_persistent($Seq2)

 declare ui_knob $Seq3(-12,24,1)
 $Seq3 := 0
 make_persistent($Seq3)

 declare ui_knob $Seq4(-12,24,1)
 $Seq4 := 0
 make_persistent($Seq4)

 declare ui_knob $Seq5(-12,24,1)
 $Seq5 := 0
 make_persistent($Seq5)

 declare ui_knob $Seq6(-12,24,1)
 $Seq6 := 0
 make_persistent($Seq6)

 declare ui_knob $Seq7(-12,24,1)
 $Seq7 := 0
 make_persistent($Seq7)

 declare ui_knob $Seq8(-12,24,1)
 $Seq8 := 0
 make_persistent($Seq8)

 declare %Arpeggio[8] 

 declare $cont

 make_perfview

end on

on note
 ignore_event ($EVENT_ID)
 while ($NOTE_HELD = 1)
  $cont := 0
  while ($cont<8 and $NOTE_HELD = 1)
   %Arpeggio[0] :=  $Seq1
   %Arpeggio[1] :=  $Seq2
   %Arpeggio[2] :=  $Seq3
   %Arpeggio[3] :=  $Seq4
   %Arpeggio[4] :=  $Seq5
   %Arpeggio[5] :=  $Seq6
   %Arpeggio[6] :=  $Seq7
   %Arpeggio[7] :=  $Seq8
 play_note ($EVENT_NOTE+%Arpeggio[$cont], $EVENT_VELOCITY, 0, $DURATION_EIGHTH)
  wait ($DURATION_EIGHTH)
  inc($cont)
 end while
end while
end on

Se provate a suonare una nota ora la sequenza produrrà tutte note della stessa altezza perché ogni nota dell’arpeggiatore è dato ancora dalla formula:

Nota ascoltate = Nota suonata + valore manopola

ovvero (inserendo i dati contenuti nello script):

Nota ascoltata = $EVENT_NOTE + %Arpeggio[$cont]

Poiché tutte le manopole sono di default impostate a zero, le 8 note ascoltate sono tutte di altezza pari a quella suonata. Provate ora a impostare la sequenza come quella definita a suo tempo nella prima assegnazione di valori per l’array che abbiamo fatto.

082 ksp

Infine completiamo lo script aggiungendo un menu per scegliere il valore musicale e quindi la durata della sequenza. possiamo riferinci al codice già scritto per lo Step Sequencer. Inseriamo quindi nella callback init la dichiarazione del menu e la creazione di oggetti al suo interno che fanno riferimento al valore delle note.

declare ui_menu $Durata
add_menu_item ($Durata, “1/4”, $DURATION_QUARTER)
add_menu_item ($Durata, “1/8”, $DURATION_EIGHTH)
add_menu_item ($Durata, “1/16”, $DURATION_SIXTEENTH)
add_menu_item ($Durata, “1/4T”, $DURATION_QUARTER_TRIPLET)
add_menu_item ($Durata, “1/8T”, $DURATION_EIGHTH_TRIPLET)
add_menu_item ($Durata, “1/16T”, $DURATION_SIXTEENTH_TRIPLET)
$Durata := $DURATION_QUARTER
make_persistent ($Durata)

Cliccate su Apply. Nella performance View è apparso il menu.

083 ksp

Spostiamo subito il menu inserendo l’istruzione

move_control ($Durata, 3, 3)

nella seguente posizione:

declare ui_menu $Durata
add_menu_item ($Durata, “1/4”, $DURATION_QUARTER)
add_menu_item ($Durata, “1/8”, $DURATION_EIGHTH)
add_menu_item ($Durata, “1/16”, $DURATION_SIXTEENTH)
add_menu_item ($Durata, “1/4T”, $DURATION_QUARTER_TRIPLET)
add_menu_item ($Durata, “1/8T”, $DURATION_EIGHTH_TRIPLET)
add_menu_item ($Durata, “1/16T”, $DURATION_SIXTEENTH_TRIPLET)
$Durata := $DURATION_QUARTER
make_persistent ($Durata)
move_control ($Durata, 3, 3)

Cliccando su apply ora il menu si sposta nella posizione desiderata.

084 ksp

Colleghiamo ora il menu alla durata per cui occorre modificare le seguenti istruzioni:

play_note ($EVENT_NOTE+%Arpeggio[$cont], $EVENT_VELOCITY, 0, $Durata)
wait ($Durata)

Cliccate su Apply. Provate a scegliere diversi valori e suonate una nota.

Concludendo, lo script completo è il seguente:

on init
 declare ui_knob $Seq1(-12,24,1)
 $Seq1 := 0
 make_persistent($Seq1)

 declare ui_knob $Seq2(-12,24,1)
 $Seq2 := 0
 make_persistent($Seq2)

 declare ui_knob $Seq3(-12,24,1)
 $Seq3 := 0
 make_persistent($Seq3)

 declare ui_knob $Seq4(-12,24,1)
 $Seq4 := 0
 make_persistent($Seq4)

 declare ui_knob $Seq5(-12,24,1)
 $Seq5 := 0
 make_persistent($Seq5)

 declare ui_knob $Seq6(-12,24,1)
 $Seq6 := 0
 make_persistent($Seq6)

 declare ui_knob $Seq7(-12,24,1)
 $Seq7 := 0
 make_persistent($Seq7)

 declare ui_knob $Seq8(-12,24,1)
 $Seq8 := 0
 make_persistent($Seq8)

 declare %Arpeggio[8]
 declare $cont

 declare ui_menu $Durata
 add_menu_item ($Durata, “1/4”, $DURATION_QUARTER)
 add_menu_item ($Durata, “1/8”, $DURATION_EIGHTH)
 add_menu_item ($Durata, “1/16”, $DURATION_SIXTEENTH)
 add_menu_item ($Durata, “1/4T”, $DURATION_QUARTER_TRIPLET)
 add_menu_item ($Durata, “1/8T”, $DURATION_EIGHTH_TRIPLET)
 add_menu_item ($Durata, “1/16T”, $DURATION_SIXTEENTH_TRIPLET)
 $Durata := $DURATION_QUARTER
 make_persistent ($Durata)
 move_control ($Durata, 3, 3)

 make_perfview

end on

on note
 ignore_event ($EVENT_ID)
 while ($NOTE_HELD = 1)
  $cont := 0
  while ($cont<8 and $NOTE_HELD = 1)
   %Arpeggio[0] :=  $Seq1
   %Arpeggio[1] :=  $Seq2
   %Arpeggio[2] :=  $Seq3
   %Arpeggio[3] :=  $Seq4
   %Arpeggio[4] :=  $Seq5
   %Arpeggio[5] :=  $Seq6
   %Arpeggio[6] :=  $Seq7
   %Arpeggio[7] :=  $Seq8
   play_note ($EVENT_NOTE+%Arpeggio[$cont], $EVENT_VELOCITY, 0, $Durata)
  wait ($Durata)
  inc($cont)
 end while
end while
end on

Possiamo salvare lo script realizzato in un preset. Cliccate sul menu a comparsa Preset all’interno dello slot dello script e scegliete la voce Save Preset.

085 ksp

Nella finestra che compare creiamo una ns cartella e nominiamo il file relativo al preset.

086 ksp

Una volta salvato il preset questo comparirà nella sezione User.

087 ksp

parte 12

Pubblicità

Informazioni su silviorelandini

sound designer, docente di tecnologie musicali (Conservatorio S. Cecilia, Saint Louis College of Music), direttore iitm
Questa voce è stata pubblicata in Campionamento, Software, Sound Designing e contrassegnata con , , . Contrassegna il permalink.

Una risposta a Kontakt: gli script (parte 11)

  1. Pingback: Kontakt: gli script (parte 10) | tecnologiamusicale

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...