Tradotto da: [Devi essere iscritto e connesso per vedere questo link]
Tratto da: [Devi essere iscritto e connesso per vedere questo link]
VDJscript
VDJscript e' il linguaggio con cui si programmano i comandi di VirtualDJ6.
Si utilizza negli SKIN, nelle mappature della tastiera, di tutte le consolle,
e in tutti i controller.
E' un linguaggio sintetico, pensato per riassumere tante operazioni in una sola
riga di comandi, per operazioni semplici e mirate, ma abbastanza sofisticato
per poter definire variabili e MACRO.
Nella sua forma più semplice, e' possibile scrivere comandi come
"PLAY", "PAUSE", "GOTO_CUE 1", "VOLUME 70%", "PITCH 0,5%", ecc ..
Oppure e' possibile scrivere operazioni complesse come
"PLAY ? CROSSFADER 12,3% & EFFECT 'flanger' ACTIVE : DECK 2 LOOP 4 & SET $MYVAR 42"
Verbi
Gli elementi fondamentali di VDJscript sono i "VERBI".
Potete trovare un elenco dei verbi riconusciuti da VirtualDJ nella finestrina
"SEE ALSO" che sta dentro la sheda di impostazionidei mappers e della tastiera,
Oppure, in alternativa, e' possibile leggere la lista completa
(con la loro spiegazione) dentro il file XML della propria lingua
aprendo la cartella "...Documenti/VirtualDJ/Languages/"
dove sono elencati come TAG
Comandi
La maggior parte dei comandi di base consiste solo di un verbo
(come il "PLAY" o "PAUSE").
In alternativa, il verbo può essere accompagnato da vari modificatori e parametri:
- Deck: è possibile specificare che il comando agisca solo su un deck particolare
con l'aggiunta di "DECK XXX" prima del verbo.
Per XXX si intende il numero del DECK (1 o 2), oltre che "LEFT", "RIGHT", "DEFAULT"
o "ACTIVE" ( "1" equivale al deck di sinistra, come "LEFT", e "2" a quello
di destra "RIGHT". Essendo sinomini, si possono usare indifferentemente
sia i numeri che la loro posizione).
- Parametri: il verbo può essere seguito da uno o due parametri.
La funzione di questi parametri dipende dal verbo.
I parametri possono essere stringhe, percentuali, valori booleani, tempi,
valori interi, o valori decimali.
- Effetti: per i verbi che agiscono sugli effetti, e' necessario anteporre al
verbo la parola chiave "EFFECT", eventualmente seguita dal nome dell'effetto
o dal suo numero di slot.
Come ad esempio : "EFFECT ACTIVATE" che accende l'effetto precedentemente
selezionato, o "EFFECT "FLANGER" SLIDER 1 100%" che ivece alza al massimo
il primo potenziomentro di controllo dell'effetto Flanger.
- Sample: per i verbi che agiscono sul campionatore, e' necessario anteporre
al verbo la parola chiave "SAMPLER", eventualmente seguita dal numero del
campione (da 1 a 12).
Come ad esempio : "SAMPLER ACTIVATE" che manda in esecuzione il campione
sonoro selezionato in precedenza, o "SAMPLE 3 VOLUME=100%" che alza il volume
al massimo del campione caricato nel terzo slot.
"campionatore attivare" o "3 campionatore volume del 100%".
- Query: alcune operazioni specifiche necessitano di utilizzare alcuni dati.
Vari dati si possono ottenere con l'uso della parola chiave "GET"
prima del verbo.
Come ad esempio : "GET TIME_MS".ritorna la lunghezza in millisecondi
della traccia caricata nel deck attivo.
- Azioni Temporanee: e possibile specificare quando il comando imposto da verbo
deve agire solo per il tempo in cui preme il suo pulsante, con l'aggiunta
di "WHILE_PRRESSED" alla fine del comando.
Come ad esempio : "VOLUME 100% WHILE_PRRESSED" che alza al massimo il volume
(del deck, del sample, del master o della cudffia) solo nei momenti in cui
e' premuto il tasto corrispondente.
- Blink: per alcune oprazioni condizionate, e' possibile aggiungere "BLINK"
o "BLINKFAST" per ottenere una risposta booleana, vera e falsa, quando
si vuole sapere se qualche lucina o disegno sullo skin sta lampeggiando.
(per far lampggiare un led di una consolle, o una grafica sullo skin,
si usa il comando "PLAY BLINK")
Macro
Se avete bisogno di scrivere operazioni molto complesse, e' possibile utilizzare
l'operatore "&" per concatenare i comandi, o gli operatori "?" e ":" per scrivere
condizioni ramificate.
Utilizzo di "COMANDO1 & COMANDO2 & COMANDO3" eseguira' tutta la lista di comandi
nell'esatta sequenza con cui sono stati scritti,
Utilizzo invece "COMANDO1 ? COMANDO2 : COMANDO3" verra' valutato prima COMANDO1
e se il risultato e' vero, si eseguira' COMANDO2, altrimenti, se la condizione
di COMANDO1 non e' rispettata, eseguira' COMANDO3.
Action e Query
I comandi possono essere utilizzati sia come azioni o come richiesta di dati,
a seconda del contesto.
Ad esempio, il comando "PLAY" utilizzato in una scorciatoia da tastiera,
sara' u'azione, che inizia a far suonare la musica non appena impartita.
Lo stesso comando "PLAY" puo' essere utilizzato come una richiesta, e restituisce
"TRUE" (vero) se il brano del deck specificato e' effetivamente in riproduzione,
o "FALSE" se e' in stop o in pausa.
Con queste tecniche di Query, si possno condizionare i comandi in base alle
situazioni misurate, e far eseguire operazioni diverse in base al contesto.
Alcuni comandi possono restituire un valore booleano (vero o falso) o un valore
numerico, a seconda dei parametri:
- "CROSSFADER" ritorna il valore decimale (tra 0,0 e 1,0),
- "CROSSFADER 42%" restituisce VERO se il crossfader e' al 42% della sua corsa
e FALSO se si trova in un altra posizione.
I comandi che utilizzano la parola chiave "GET" possono anche restituire una
stringa di caratteri, un nome, o un numero a seconda del verbo utilizzato.
Parametri
VDJscript riconosce 6 tipi di parametri:
- TEXT: le stringhe di testo devono essere racchiuse in virgolette singole (')
o virgolette doppie (")
Come ad esempio : "LOAD 'MiaCanzone.mp3'" o "LOAD "MiaTraccia.wav""
- BOOLEAN: i valori booleani possono essere le parole chiave "ON", "OFF"
o "TOGGLE", equivalenti ai rispettivi numeri "1", "0" e "-1"
Un esempio potrebbe essere "SMART_PLAY OFF" che disttiva la sincronia automatica
quando si mette in esecuzione una traccia.
- TIME: sono riconosiuti come numeri temporali tutte le cifre seguite da "MS"
che ne impongono la scala in millisecondi.
Esempio : "NUDGE +100ms" sposta in avanti la traccia di un decimo di secondo.
- INTEGER: numeri intieri che si possono sommare e sotrarre ad altri valori.
Come ad esempio "EFFECT SELECT +1" sposta la selezioe dell'effetto alla prossima
voce dell'elenco degli effetti installati.
- DECIMAL: numeri decimali che possono essere sommati e sotratti ad altri valori.
Da notare che la virgola decimale matematica e' sempre rappresentata
dal punto ".", e che questi valori, spesso servono a rappresentare una
proporzione matematica frazinaria tra 0 e 1.
Come ad esempio : "CROSSFADER 0.5" sposta lo slider del crossfade al centro.
- PERCENTAGE: numeri percentuali, seguiti dall'apposito simbolo "%"
Anche questi valori servono a rappresentare proporzioni, come "CROSSFADER 50%"
che ha lo stesso effetto di "CROSSFADER 0.5".
Ci sono alcune eccezioni, come il verbo "PITCH", che e' una regolazione con lo
zero centrale, e quindi "PITCH 100%" imposta il cursore a meta',
mentre "Pitch 1,0" imposta il cursore al massimo della sua corsa.
del cursore.
Da tenere inoltra presente che "NUDGE +1" e "NUDGE +1,0" non e' la stessa cosa.
Il primo fa avanzare la traccia di una battuta, mentre il secondo equivale
"NUDGE 100%" che salta alla fine della canzone.
La maggior parte del parameti relativi al tempo, si dovrebbe usare in valori
percentuali invece di decimali, ma se si scrivono script complessi
e' meglio ricordarselo bene.
Parametri Impliciti
Quando un comando viene utilizzato come un azione di un dispositivo di scorrimento
(o manopola, jogwheel, ecc), il valore del cursore viene aggiunto come un
parametro implicito.
Quando un parametro è aggiunto implicitamente, si va ad aggiungere alla fine del
comando, come un ulteriore parametro solo dopo quelli gia' esistenti.
Quindi, se si vuole regolare il "VOLUME" al 42% della sua corsa, l'azione giusta
da programmare sara' "VOLUME 0.42". Se il cursore si trova gia' in quella posizione
e si vuole alterarla del 10%, scrivendo "VOLUME 10%" sara' come aver scritto
"VOLUME 10% 0,42" e dato che questo comando accetta solo un parametro
il numero "0.42" sara' igniorato, portando la corsa del cursore a un decimo
della sua scala.
Se si vogliono modificare i parametri impliciti, si possoo adoperare verbi come
"PARAM_MULTIPLY", "PARAM_ADD", ecc .
Per esempio "PARAM_MULTIPLY 0,1 & VOLUME" dal caso di prima si tradurra' come
l'impostazione del volume al 4,2%.
Se si usano una macro con vari comandi, tutti i comandi avrano il loro
particolare parametro implicito aggiunto.
Quindi, se si scrive "CROSSFADER & LOOP" con la posizione del cursore che si sposta
al 42%, tale parametro sara' ripetuto ancnche per il verbo LOOP
e avremo un azione cossrispondente a ""CROSSFADER 0.42 & LOOP 0.42".
Se si vuole evitare che il parametro implicito agisca su alcuni comandi,
e' possibile utilizzare la parola chiave "VALUE" per specificare
dove il parametro implicito dovrebbe andare.
Quindi ""CROSSFADER VALUE & LOOP" invia i comandi ""CROSSFADER 0.42 & LOOP".
(si puossono avere varie esigenze di specifiare il valore "VALUE" nei tanti
comandi di una macro complessa, ognuno sara' sostituito dal parametro implicito).
.
E' utile sapere che i cursori usano parametri decimali
("CROSSFADER" -> "CROSSFADER 0,42").
Con i JogWheel si usano numeri decimali relativi
("JOGWHELL +1,0" equivale a un giro completo della ruota),
e gli encoder usano numeri relativi intieri.
Se si utilizza un encoder per un verbo che si aspetta un cursore,
il numero intiero sara' automaticamente convertito in un numero decimale
dividendo il suo valore per 32 (in modo che ci vogliono 32 scatti di spostamento
per muovere il cursore da 0% al 100%).
Quindi, nell'esempio precedente "crossfader 1" è equivalente a "crossfader 0,03125".
Se si ha bisogno di altre risoluzionidi passi d'avanzamento
e' possibile usare "PARAM_MULTIPLY"
Variabili
VDJscript e'in grado di memorizzare numeri di variabili interne.
Se il nome della variabile inizia con un $ (come "SET $MiaVariabile"),
la variabile sarà 'globale' per entrambi i decks.
Se il nome della variabile inizia con un "%" (come "SET %MioValore")
o senza nulla (come "SET 'MioNumero'"), la variabile sara' 'locale' per i suo deck.
(e lo stesso nome potrebbe avere un valore diverso nell'altro deck).
Le variabili sono persistenti per tutto il tempo in cui VirtualDJ e' in esecuzione
e sono comuni a qualsiasi controller e Skin
Per impostare una variabile,
si possono utilizzare verbi come "SET", "TOGGLE", o "CYCLE"
Per leggere una variabile, e' invecece possibile utilizzare verbi come
"VAR", "VAR_EQUAL", "VAR_SMALLER", ecc.
Un tipico esempio di utilizzo delle variabili e' quello di avere
"SET $MioShift WHILE_PRESSED" su un pulsante di spostamento,
e "$ VAR $MioShift ? Comando1 : Comando2" su un altro pulsante.
Tradotto da: [Devi essere iscritto e connesso per vedere questo link]
Tratto da: [Devi essere iscritto e connesso per vedere questo link]
Tratto da: [Devi essere iscritto e connesso per vedere questo link]
VDJscript
VDJscript e' il linguaggio con cui si programmano i comandi di VirtualDJ6.
Si utilizza negli SKIN, nelle mappature della tastiera, di tutte le consolle,
e in tutti i controller.
E' un linguaggio sintetico, pensato per riassumere tante operazioni in una sola
riga di comandi, per operazioni semplici e mirate, ma abbastanza sofisticato
per poter definire variabili e MACRO.
Nella sua forma più semplice, e' possibile scrivere comandi come
"PLAY", "PAUSE", "GOTO_CUE 1", "VOLUME 70%", "PITCH 0,5%", ecc ..
Oppure e' possibile scrivere operazioni complesse come
"PLAY ? CROSSFADER 12,3% & EFFECT 'flanger' ACTIVE : DECK 2 LOOP 4 & SET $MYVAR 42"
Verbi
Gli elementi fondamentali di VDJscript sono i "VERBI".
Potete trovare un elenco dei verbi riconusciuti da VirtualDJ nella finestrina
"SEE ALSO" che sta dentro la sheda di impostazionidei mappers e della tastiera,
Oppure, in alternativa, e' possibile leggere la lista completa
(con la loro spiegazione) dentro il file XML della propria lingua
aprendo la cartella "...Documenti/VirtualDJ/Languages/"
dove sono elencati come TAG
Comandi
La maggior parte dei comandi di base consiste solo di un verbo
(come il "PLAY" o "PAUSE").
In alternativa, il verbo può essere accompagnato da vari modificatori e parametri:
- Deck: è possibile specificare che il comando agisca solo su un deck particolare
con l'aggiunta di "DECK XXX" prima del verbo.
Per XXX si intende il numero del DECK (1 o 2), oltre che "LEFT", "RIGHT", "DEFAULT"
o "ACTIVE" ( "1" equivale al deck di sinistra, come "LEFT", e "2" a quello
di destra "RIGHT". Essendo sinomini, si possono usare indifferentemente
sia i numeri che la loro posizione).
- Parametri: il verbo può essere seguito da uno o due parametri.
La funzione di questi parametri dipende dal verbo.
I parametri possono essere stringhe, percentuali, valori booleani, tempi,
valori interi, o valori decimali.
- Effetti: per i verbi che agiscono sugli effetti, e' necessario anteporre al
verbo la parola chiave "EFFECT", eventualmente seguita dal nome dell'effetto
o dal suo numero di slot.
Come ad esempio : "EFFECT ACTIVATE" che accende l'effetto precedentemente
selezionato, o "EFFECT "FLANGER" SLIDER 1 100%" che ivece alza al massimo
il primo potenziomentro di controllo dell'effetto Flanger.
- Sample: per i verbi che agiscono sul campionatore, e' necessario anteporre
al verbo la parola chiave "SAMPLER", eventualmente seguita dal numero del
campione (da 1 a 12).
Come ad esempio : "SAMPLER ACTIVATE" che manda in esecuzione il campione
sonoro selezionato in precedenza, o "SAMPLE 3 VOLUME=100%" che alza il volume
al massimo del campione caricato nel terzo slot.
"campionatore attivare" o "3 campionatore volume del 100%".
- Query: alcune operazioni specifiche necessitano di utilizzare alcuni dati.
Vari dati si possono ottenere con l'uso della parola chiave "GET"
prima del verbo.
Come ad esempio : "GET TIME_MS".ritorna la lunghezza in millisecondi
della traccia caricata nel deck attivo.
- Azioni Temporanee: e possibile specificare quando il comando imposto da verbo
deve agire solo per il tempo in cui preme il suo pulsante, con l'aggiunta
di "WHILE_PRRESSED" alla fine del comando.
Come ad esempio : "VOLUME 100% WHILE_PRRESSED" che alza al massimo il volume
(del deck, del sample, del master o della cudffia) solo nei momenti in cui
e' premuto il tasto corrispondente.
- Blink: per alcune oprazioni condizionate, e' possibile aggiungere "BLINK"
o "BLINKFAST" per ottenere una risposta booleana, vera e falsa, quando
si vuole sapere se qualche lucina o disegno sullo skin sta lampeggiando.
(per far lampggiare un led di una consolle, o una grafica sullo skin,
si usa il comando "PLAY BLINK")
Macro
Se avete bisogno di scrivere operazioni molto complesse, e' possibile utilizzare
l'operatore "&" per concatenare i comandi, o gli operatori "?" e ":" per scrivere
condizioni ramificate.
Utilizzo di "COMANDO1 & COMANDO2 & COMANDO3" eseguira' tutta la lista di comandi
nell'esatta sequenza con cui sono stati scritti,
Utilizzo invece "COMANDO1 ? COMANDO2 : COMANDO3" verra' valutato prima COMANDO1
e se il risultato e' vero, si eseguira' COMANDO2, altrimenti, se la condizione
di COMANDO1 non e' rispettata, eseguira' COMANDO3.
Action e Query
I comandi possono essere utilizzati sia come azioni o come richiesta di dati,
a seconda del contesto.
Ad esempio, il comando "PLAY" utilizzato in una scorciatoia da tastiera,
sara' u'azione, che inizia a far suonare la musica non appena impartita.
Lo stesso comando "PLAY" puo' essere utilizzato come una richiesta, e restituisce
"TRUE" (vero) se il brano del deck specificato e' effetivamente in riproduzione,
o "FALSE" se e' in stop o in pausa.
Con queste tecniche di Query, si possno condizionare i comandi in base alle
situazioni misurate, e far eseguire operazioni diverse in base al contesto.
Alcuni comandi possono restituire un valore booleano (vero o falso) o un valore
numerico, a seconda dei parametri:
- "CROSSFADER" ritorna il valore decimale (tra 0,0 e 1,0),
- "CROSSFADER 42%" restituisce VERO se il crossfader e' al 42% della sua corsa
e FALSO se si trova in un altra posizione.
I comandi che utilizzano la parola chiave "GET" possono anche restituire una
stringa di caratteri, un nome, o un numero a seconda del verbo utilizzato.
Parametri
VDJscript riconosce 6 tipi di parametri:
- TEXT: le stringhe di testo devono essere racchiuse in virgolette singole (')
o virgolette doppie (")
Come ad esempio : "LOAD 'MiaCanzone.mp3'" o "LOAD "MiaTraccia.wav""
- BOOLEAN: i valori booleani possono essere le parole chiave "ON", "OFF"
o "TOGGLE", equivalenti ai rispettivi numeri "1", "0" e "-1"
Un esempio potrebbe essere "SMART_PLAY OFF" che disttiva la sincronia automatica
quando si mette in esecuzione una traccia.
- TIME: sono riconosiuti come numeri temporali tutte le cifre seguite da "MS"
che ne impongono la scala in millisecondi.
Esempio : "NUDGE +100ms" sposta in avanti la traccia di un decimo di secondo.
- INTEGER: numeri intieri che si possono sommare e sotrarre ad altri valori.
Come ad esempio "EFFECT SELECT +1" sposta la selezioe dell'effetto alla prossima
voce dell'elenco degli effetti installati.
- DECIMAL: numeri decimali che possono essere sommati e sotratti ad altri valori.
Da notare che la virgola decimale matematica e' sempre rappresentata
dal punto ".", e che questi valori, spesso servono a rappresentare una
proporzione matematica frazinaria tra 0 e 1.
Come ad esempio : "CROSSFADER 0.5" sposta lo slider del crossfade al centro.
- PERCENTAGE: numeri percentuali, seguiti dall'apposito simbolo "%"
Anche questi valori servono a rappresentare proporzioni, come "CROSSFADER 50%"
che ha lo stesso effetto di "CROSSFADER 0.5".
Ci sono alcune eccezioni, come il verbo "PITCH", che e' una regolazione con lo
zero centrale, e quindi "PITCH 100%" imposta il cursore a meta',
mentre "Pitch 1,0" imposta il cursore al massimo della sua corsa.
del cursore.
Da tenere inoltra presente che "NUDGE +1" e "NUDGE +1,0" non e' la stessa cosa.
Il primo fa avanzare la traccia di una battuta, mentre il secondo equivale
"NUDGE 100%" che salta alla fine della canzone.
La maggior parte del parameti relativi al tempo, si dovrebbe usare in valori
percentuali invece di decimali, ma se si scrivono script complessi
e' meglio ricordarselo bene.
Parametri Impliciti
Quando un comando viene utilizzato come un azione di un dispositivo di scorrimento
(o manopola, jogwheel, ecc), il valore del cursore viene aggiunto come un
parametro implicito.
Quando un parametro è aggiunto implicitamente, si va ad aggiungere alla fine del
comando, come un ulteriore parametro solo dopo quelli gia' esistenti.
Quindi, se si vuole regolare il "VOLUME" al 42% della sua corsa, l'azione giusta
da programmare sara' "VOLUME 0.42". Se il cursore si trova gia' in quella posizione
e si vuole alterarla del 10%, scrivendo "VOLUME 10%" sara' come aver scritto
"VOLUME 10% 0,42" e dato che questo comando accetta solo un parametro
il numero "0.42" sara' igniorato, portando la corsa del cursore a un decimo
della sua scala.
Se si vogliono modificare i parametri impliciti, si possoo adoperare verbi come
"PARAM_MULTIPLY", "PARAM_ADD", ecc .
Per esempio "PARAM_MULTIPLY 0,1 & VOLUME" dal caso di prima si tradurra' come
l'impostazione del volume al 4,2%.
Se si usano una macro con vari comandi, tutti i comandi avrano il loro
particolare parametro implicito aggiunto.
Quindi, se si scrive "CROSSFADER & LOOP" con la posizione del cursore che si sposta
al 42%, tale parametro sara' ripetuto ancnche per il verbo LOOP
e avremo un azione cossrispondente a ""CROSSFADER 0.42 & LOOP 0.42".
Se si vuole evitare che il parametro implicito agisca su alcuni comandi,
e' possibile utilizzare la parola chiave "VALUE" per specificare
dove il parametro implicito dovrebbe andare.
Quindi ""CROSSFADER VALUE & LOOP" invia i comandi ""CROSSFADER 0.42 & LOOP".
(si puossono avere varie esigenze di specifiare il valore "VALUE" nei tanti
comandi di una macro complessa, ognuno sara' sostituito dal parametro implicito).
.
E' utile sapere che i cursori usano parametri decimali
("CROSSFADER" -> "CROSSFADER 0,42").
Con i JogWheel si usano numeri decimali relativi
("JOGWHELL +1,0" equivale a un giro completo della ruota),
e gli encoder usano numeri relativi intieri.
Se si utilizza un encoder per un verbo che si aspetta un cursore,
il numero intiero sara' automaticamente convertito in un numero decimale
dividendo il suo valore per 32 (in modo che ci vogliono 32 scatti di spostamento
per muovere il cursore da 0% al 100%).
Quindi, nell'esempio precedente "crossfader 1" è equivalente a "crossfader 0,03125".
Se si ha bisogno di altre risoluzionidi passi d'avanzamento
e' possibile usare "PARAM_MULTIPLY"
Variabili
VDJscript e'in grado di memorizzare numeri di variabili interne.
Se il nome della variabile inizia con un $ (come "SET $MiaVariabile"),
la variabile sarà 'globale' per entrambi i decks.
Se il nome della variabile inizia con un "%" (come "SET %MioValore")
o senza nulla (come "SET 'MioNumero'"), la variabile sara' 'locale' per i suo deck.
(e lo stesso nome potrebbe avere un valore diverso nell'altro deck).
Le variabili sono persistenti per tutto il tempo in cui VirtualDJ e' in esecuzione
e sono comuni a qualsiasi controller e Skin
Per impostare una variabile,
si possono utilizzare verbi come "SET", "TOGGLE", o "CYCLE"
Per leggere una variabile, e' invecece possibile utilizzare verbi come
"VAR", "VAR_EQUAL", "VAR_SMALLER", ecc.
Un tipico esempio di utilizzo delle variabili e' quello di avere
"SET $MioShift WHILE_PRESSED" su un pulsante di spostamento,
e "$ VAR $MioShift ? Comando1 : Comando2" su un altro pulsante.
Tradotto da: [Devi essere iscritto e connesso per vedere questo link]
Tratto da: [Devi essere iscritto e connesso per vedere questo link]