VDJPedia



 VDJscriptGR

VDJscript

Παραδείγματα εντολών VDJ Script
H VDJscript είναι η γλώσσα με την οποία συντάσσονται όλες οι εντολές που αφορούν τις εκδόσεις 6 και 7 του VirtualDJ. Τις εντολές αυτές τις χρησιμοποιούμε στην κατασκευή skins καθώς επίσης και στην αντιστοίχηση εντολών στο πληκτρολόγιο και στους midi contollers controller mappers.
Έχει σχεδιαστεί ώστε να είναι απλή και σύντομη για χρήση απλών εντολών, αλλά ταυτόχρονα δυνατή και ευέλικτη όταν πρόκειται για πολυπλοκότερες εντολές.
Στην απλή της μορφή μπορείτε απλά να γράψετε εντολές οπώς "play", "pause", "goto_cue 1", "volume 70%", "pitch +0.5%", κλπ...
Η μπορείτε να συντάξετε πολυπλοκότερες εντολές όπως .. "play ? crossfader +12.3% & effect 'flanger' activate : deck 2 loop 4 & set $myvar 42\\\"

Verbs
Το βασικό στοιχείο μιάς εντολής της VDJscript είναι τα "verbs".
Εδώ μπορείτε να βρείτε την λίστα με τα verbs που είναι διαθέσιμα Λίστα VirtualDJ verbsΤα verbs αυτά καθώς και μερικές σύντομες επεξηγήσεις εμφανίζονται επίσης και στο παράθυρο "See also" στο Settings/Mapper του VirtualDJ.
Ενναλακτικά μπορείτε να ανοίξετε το αρχείο English.xml που βρίσκεται στον φάκελο Documents/VirtualDJ/Languages/ folder, όπου θα δείτε όλα τα διαθέσιμα verbs στην μορφή <verb>

Εντολές (Actions)
Η πιό απλή και συνηθισμένη μορφή μιας εντολής VDJSCript αποτελείται από ένα verb (πχ "play" ή "pause").
Προαιρετικά τα verbs μπορούν να συνοδεύονται από παραμέτρους και μεταβλητές:

Η σύνταξη μιάς πλήρης εντολής VDJ Script έχει την ακόλουθη μορφή :
[deck [deck]] [sampler [slot] | effect [effectname/slot] | get] verb [param1] [param2] [blink | blinkfast] [while_pressed]

όπου
( [...] σημαίνει : προαιρετικάl )
( | σημαίνει : ή )
πιό αναλυτικά ..
- deck: μπορείτε να ορίσετε το deck στο οποίο θα έχει επίδραση το verb, προσθέτωντας "deck xxx" μπροστά από αυτό. Το xxx μπορεί να πάρει τιμές όπως "1", "2", "left", "right", "default" or "active". ("1","left" και "2" "right" είναι ακριβώς το ίδιο).
- parameters: το verb μπορεί να συνοδεύεται από μία ή δυο παραμέτρους. Η επίδραση αυτών των παραμέτρων εξαρτάται από το ίδιο το verb. Αυτές οι παράμετροι μπορεί να είναι αλφαριθμητικοί (strings), ποσοστιαίες δυαδικές (αληθές, ψευδές), χρονικές, ακαίραιες αριθμητικές ή και δεκαδικές αριθμητικές.
- effects: γιά τα verbs που επιδρούν στα effects, πρέπει να προηγηθεί το verb "effect", και προαιρετικά να ακολουθείται από το όνομα του effect ή τον αιρθμό του (effect slot number) πχ "effect activate" ή "effect 'flanger' slider 1 100%".
- sampler: για τα verbs που επιδρούν στον sampler, θα πρέπει να προηγείται το verb "sampler", και προαιρετικά να ακολουθείται από τον αριθμό του sampler (slot number), πχ: "sampler activate" ή "sampler 3 volume 100%".
- queries (ερωτήματα): όλα τα verbs μπορούν να χρησιμοποιηθούν και σε ερωτήματα σχετικά με την κατάστασή (τιμή) τους, τα οποία και επιστρέφουν μία δυαδική τιμή (true, false). Κάποια από αυτά που χρειάζεται να επιστρέψουν κάποια συγκεκριμένη τιμή (κείμενο ή αριθμό), θα πρέπει να χρησιμοποιήσουμε την έκφραση "get" πριν το verb, πχ: "get time_ms".
- temporary action (προσωρινές εντολές) : Μπορείτε να ορίσετε αν το verb θα εκτελείται μόνο κατα τη διάρκεια που το αντίστοιχο πλήκτρο θα είναι πατημένο χρησιμοποιώντας την έκφραση "while_pressed" στο τέλος της εντολής. πχ "volume 100% while_pressed".
- blinks: στα ερωτήματα μπορείτε επίσης να προσθέσετε τις παραμέτρους "blink" ή "blinkfast" ώστε να αναγκάσετε το LED του controller ή το κουμπί ενός skin να αναβοσβήνει στην περίπτωση που το ερώτημα επιστρέψει αληθής τιμή.Πχ "play blinκ" ή "play ? blink : nothing"]

Μακροεντολές - Σύνθετες εντολές
Αν χρειαστεί μπορείτε να συνθέσετε περισσότερες από μία εντολές χρησιμοποιώντας τον χαρακτήρα "&" ώστε να τις δέσετε και να φτιάξετε μια μακροεντολή. Ακόμη μπορείτε να χρησιμοποιήσετε τα "?" και ":" για να συντάξετε κομμάτια που θα εκτελούνται υπό όρους (conditional branching).
Γράφωντας ... "εντολή1 & εντολή2 & εντολή3" η VDJ SCript θα εκτελέσει την εντολή 1, μετά την εντολή 2 και τέλος την εντολή 3 (με τη σειρά, αλλά και ταυτόχρονα.
Γράφωντας "εντολή1 ? εντολή2 : εντολή3" η VDJ Script θα εξετάσει την κατάσταση της εντολής 1 και θα εκτελέσει την εντολή 2 αν το αποτέλεσμα είναι αληθές, ενώ θα εκτελέσει την εντολή 3, αν το αποτέλεσμα της εντολής 1 είναι ψευδές.
Παράδειγμα:
Αν γράψετε .. "action_deck 1? εντολή1 : εντολή2" θα εκτελεστεί η εντολή1 αν το κουμπί στον contoller σας αφορά το deck1 (αριστερό), ενώ θα εκτελεστεί η εντολή2, αν το κουμπί που πατήσατε αφορά το deck2 (δεξί).

Ενέργειες και ερωτήματα
Οι εντολές μπορεί να έχουν την μορφή μιάς ενλέργειας ή ενός ερωτήματος, ανάλογα με το περιεχόμενό τους.
Για παράδειγμα, η εντολή "play" αν χρησιμοποιηθεί σαν συντόμευση σε ένα πληκτρολόγιο, θα εκτελέσει την ενέργεια και θα ξεκινήσει την αναπαραγωγή του κομματιού.
Η ίδια εντολή "play" αν χρησιμοποιηθεί στην αντιστοίχηση κάποιου LED ενος controller θα εκτελεστεί σαν ερώτημα, δλδ θα επιστρέψει την τιμή αληθές αν το τραγούδι είναι σε αναπαραγωγή και ψευδές στην αντίθετη περίπτωση
Μερικές εντολές μπορούν να επιστρέψουν δυαδικό αποτέλεσμα (ψευδές-αληθές), ανάλογα με την παράμετρο που θα χρησιμοποιηθεί ..
- Το "crossfader" θα επιστρέψει μία τιμή μεταξύ 0.0 και 1.0, αν χρησιμοποιηθεί σε ερώτημα.
- Το "crossfader 42%" θα επιστρέψει αληθές αν το crossfader έχει τιμή 42%,και ψευδές σε αντίθετη παρίπτωση.
Οι εντολές που χρησιμοποιούν την έκφραση "get" μπορούν επίσης να επιστρέψουν αλφαριθμητική ή αριθμητική τιμή (αποτέλεσμα), ανάλογα με το verb που θα χρησιμοποιήσετε.

Παράμετροι (Parametrs)
H VDJscript αναγνωρίζει 6 διαφορετικούς τύπους παραμέτρων :
- text (κείμενο) : θα πρέπει να εσωκλείεται σε χαρακτήρες (') ή ("), πχ : "load 'myfile.mp3'"
- boolean (δυαδική) : μπορεί να χρησιμοποιηθούν με τις εκφράσεις "on", "off" ή "toggle". (συχνά είναι αντιστοιχισμένα με τους ακέραιους 1, 0 and -1), πχ : "smart_play off"
- time (χρονική) : δηλώνονται χρησιμοποιώντας την χρονική μονάδα "ms", πχ : "nudge +100ms"
- integer (ακαίραια) πχ : "effect select +1"
- decimal (δεκαδική) πχ : "crossfader 0.5"
- percentage (ποσοστιαία) πχ : "crossfader 50%"

Τις περισσότερες φορές οι δεκαδικές και οι ποσοστιαίες μεταβλητές έχουν την ίδια επίδραση (αφού αυτόματα διαιρείται το ποσοστό % με το 100). Υπάρχουν κάποιες εξαιρέσεις, όπως το verb "pitch", όπου η εντολή "pitch 100%" ορίζει το μέσο του pitch, ενώ το "pitch 1.0" ορίζει την μέγιστη τιμή του pitch.
Αξίζει επίσης να γνωρίζετε ΄το οι εντολές "nudge +1" και "nudge +1.0" εέχουν διαφορετικό αποτέλεσμα. Με την πρώτη έχουμς μετακίνηση από το πρώτο beat, ενώ η δεύτερη ισοδυναμεί με "nudge +100%" η οποία και μεταβαίνει στο τέλος του τραγουδιού. Τις περισσότερες φορές μάλλον θα χρησιμοποιήσετε ποσοτά αντί δεκαδικών, αλλά αξίζει να γνωρίζετε αυτές τις λεπτομέρειες.

Παράμετροι ορισμού (μεταβολής) (Implicit parameters)
Όταν μία εντολή χρησιμοποιείται σαν μία ενέργεια για ένα slider (ή περιστρεφόμενο κουμπί η ένα jogwheel (ρόδα), κλπ), η τιμή αυτού μπορεί να προστεθεί στο τέλος μιας εντολής σαν παράμετρος εξ ορισμού.

Όταν προστεθεί λοιπόν μία τέτοια παράμετρος, προστίθεται πάντα στο τέλος μίας εντολής σαν πρόσθετη μετά από τις κανονικές παραμέτρους της εντολής. Έτσι αν η εντολή σας είναι "volume" και αντιστοιχίσετε σε κάποιο slider ενός controller αν δώσετε "volume 0.42", τότε θα μετακινήσει το slider στο 42% αυτού. Αλλά αν η εντολή που θα δώσετε είναι "volume +10%", τότε η ενέργεια που θα εκτελεστεί θα είναι "volume +10% 0.42" (και η δεύτερη παράμετρος 0.42 θα παραβλευθεί γιατί το verb volume περιμένει να λάβει μόνο μία παράμετρο).
Αν χρειαστεί να μεταβάλλετε μία τέτοια παράμετρο, μπορείτε να χρησιμοποιήσετε verbs όπως "param_multiply", "param_add", κλπ..
Έτσι το "param_multiply 0.1 & volume" θα έχει σαν αποτέλεσμα να μεταβάλλει το volume στην τιμη 4.2% (από 42% που είχε στην προηγούμενη κατάσταση)

Εαν έχετε μία μακροεντολή που περιέχει περισσότερες από μία εντολή, τότε κάθε εντολή θα επηρεάζεται από μία τέτοια παράμετρο.
Έτσι αν γράψετε "crossfader & loop" και την αντιστοιχήσετε σε κάποιο slider και μετακινήσετε το slider αυτό στην θέση 42%, τότε η εντολή που θα εκτελεστεί θα είναι ουσιαστικά αυτή "crossfader 0.42 & loop 0.42".
Εαν θέλετε να εμποδίσετε κάποια παράμετρο να ενεργήσει σε συγκεκριμένες εντολές και όχι σε όλες μπορείτε να χρησιμοποιήσετε την έκφραση "value" για να ορίσετε σε ποιά απο αυτές απευθύνεται η παράμετρος.
Έτσι η εντολή "crossfader value & loop" θα εκτελεστεί ως "crossfader 0.42 & loop".
Επίσης, αξίζει να γνωρίζετε ότι τα sliders προσθέτουν αυτόματα μία δεκαδική παράμετρο (δλδ το "crossfader" γίνεται "crossfader 0.42"), τα jogwheel προσθέτουν μία σχετική δεκαδική παράμετρο ("crossfader" -> "crossfader +0.42", +1.0 being a full revolution of the wheel), and encoders will add a relative integer ("crossfader" -> "crossfader +1").
Αν χρησιμοποιήσετε έναν encoder με ένα verb που αναμένει αντί αυτού ένα slider, ο ακέραιος αριθμός της παραμέτρου θα αντικατασταθεί αυτόματα από εναν δεκαδικό διαιρώντας τον με το 32 (έαν 32 είναι τα βήματα (steps) του encoder που χρειάζεται για να μεταβεί από την μία ακρη στην άλλη 0-100%). Έτσι στο προηγούμενο παράδειγμα το "crossfader +1" ισοδυναμεί με "crossfader +0.03125". Μπορείτε επίσης να χρησιμοποιήσετε την έκφραση "param_multiply" για να αλάξετε αυτήν την αναλογία (το resolution δλδ του encoder).

- Σελίδα 1 -

>>>Συνέχεια στην επόμενη σελίδα
Επιστροφή στην αρχική σελίδα GR Wiki