Λίγο μπερδεμένο αυτό που έχω στο μυαλό μου, θα προσπαθήσω να το περιγράψω όσο πιο απλά μπορώ:
1. Θέλω να δημιουργήσω ένα ξεχωριστό “παράθυρο” (όπως π.χ. του EQ), το οποίο θα περιέχει custom buttons, textzones, κ.α.
Το να δημιουργηθεί ένα τέτοιο “παράθυρο” μέσα σε ένα skin, είναι εφικτό. Το ερώτημα είναι εάν μπορώ να δημιουργήσω ένα ξεχωριστό xml + png , το οποίο κατόπιν θα το “μετατρέψω” σε plug-in, ώστε να μην “εξαρτάται” το παράθυρο από το εκάστοτε skin που χρησιμοποιώ (όπως ακριβώς του EQ).
2. Εάν και εφόσον αυτό είναι εφικτό, υπάρχει η δυνατότητα να “ελέγχω” τον controller μέσω του παραθύρου?
Παράδειγμα: Το SilverSleek 3 που χρησιμοποιώ έχει Pads Bank (Hot Cue, Auto Loop, Sampler, κ.α.). Εάν δημιουργήσω κάτι αντίστοιχο στο παράθυρο, αλλάζοντας την ιδιότητα των Pads από αυτό, θα αλλάζει και στο controller ή θα πρέπει αναγκαστικά η όποια αλλαγή να γίνεται μόνο μέσω του εκάστοτε skin (και όχι του plug-in)?
Ευχαριστώ εκ των προτέρων…
1. Θέλω να δημιουργήσω ένα ξεχωριστό “παράθυρο” (όπως π.χ. του EQ), το οποίο θα περιέχει custom buttons, textzones, κ.α.
Το να δημιουργηθεί ένα τέτοιο “παράθυρο” μέσα σε ένα skin, είναι εφικτό. Το ερώτημα είναι εάν μπορώ να δημιουργήσω ένα ξεχωριστό xml + png , το οποίο κατόπιν θα το “μετατρέψω” σε plug-in, ώστε να μην “εξαρτάται” το παράθυρο από το εκάστοτε skin που χρησιμοποιώ (όπως ακριβώς του EQ).
2. Εάν και εφόσον αυτό είναι εφικτό, υπάρχει η δυνατότητα να “ελέγχω” τον controller μέσω του παραθύρου?
Παράδειγμα: Το SilverSleek 3 που χρησιμοποιώ έχει Pads Bank (Hot Cue, Auto Loop, Sampler, κ.α.). Εάν δημιουργήσω κάτι αντίστοιχο στο παράθυρο, αλλάζοντας την ιδιότητα των Pads από αυτό, θα αλλάζει και στο controller ή θα πρέπει αναγκαστικά η όποια αλλαγή να γίνεται μόνο μέσω του εκάστοτε skin (και όχι του plug-in)?
Ευχαριστώ εκ των προτέρων…
Mensajes Tue 02 Oct 18 @ 6:08 pm
Αυτό που ζητάς είναι ένα skinnable window.
Ναι είναι εφικτό, αν και ο "σωστός" - ορθόδοξος τρόπος για να γίνει είναι κάνοντας edit ένα skin (οπότε και το παράθυρο είναι skin dependable)
Εφαρμόζοντας ένα "hack" μπορείς να το κάνεις όμως όπως έκανα εγώ το skin του Freestyler MRC που στην πραγματικότητα είναι skin window αλλά skin independent.
Τέλος, το PAD Bank εξ ορισμού είναι "ενιαίο" για κάθε deck. Που σημαίνει οτι απ' όπου κι αν αλλάξεις Pad mode (από το skin, από το παράθυρο, από τον controller κτλ) η αλλαγή θα εμφανιστεί παντού.
Αν θες στο extra παράθυρο να έχεις "pad modes / pad banks" τα οποία δεν θα επηρεάζουν το κυρίως skin ή και τον controller τότε θα πρέπει να κάνεις "hardcode" τα modes που θέλεις. Με λίγα λόγια δεν θα χρησιμοποιήσεις "pad_button X" σαν εντολή για τα κουμπιά σου, αλλά απ' ευθείας την εντολή που θέλεις / χρειάζεσαι (π.χ. loop_roll X)
Σημείωση: Αυτό που θες να κάνεις δεν είναι "τεχνικά" ένα plug-in (δηλαδή πρόσθετο dll) αλλά skin. Αν θες πραγματικά να κάνεις plug-in τότε και τα plug-in μπορούν να έχουν το δικό τους interface μόνο που είναι "hardcoded" μέσα στο ίδιο το plug-in.
Ναι είναι εφικτό, αν και ο "σωστός" - ορθόδοξος τρόπος για να γίνει είναι κάνοντας edit ένα skin (οπότε και το παράθυρο είναι skin dependable)
Εφαρμόζοντας ένα "hack" μπορείς να το κάνεις όμως όπως έκανα εγώ το skin του Freestyler MRC που στην πραγματικότητα είναι skin window αλλά skin independent.
Τέλος, το PAD Bank εξ ορισμού είναι "ενιαίο" για κάθε deck. Που σημαίνει οτι απ' όπου κι αν αλλάξεις Pad mode (από το skin, από το παράθυρο, από τον controller κτλ) η αλλαγή θα εμφανιστεί παντού.
Αν θες στο extra παράθυρο να έχεις "pad modes / pad banks" τα οποία δεν θα επηρεάζουν το κυρίως skin ή και τον controller τότε θα πρέπει να κάνεις "hardcode" τα modes που θέλεις. Με λίγα λόγια δεν θα χρησιμοποιήσεις "pad_button X" σαν εντολή για τα κουμπιά σου, αλλά απ' ευθείας την εντολή που θέλεις / χρειάζεσαι (π.χ. loop_roll X)
Σημείωση: Αυτό που θες να κάνεις δεν είναι "τεχνικά" ένα plug-in (δηλαδή πρόσθετο dll) αλλά skin. Αν θες πραγματικά να κάνεις plug-in τότε και τα plug-in μπορούν να έχουν το δικό τους interface μόνο που είναι "hardcoded" μέσα στο ίδιο το plug-in.
Mensajes Wed 03 Oct 18 @ 6:22 am
Γιώργο, κατ’ αρχήν σε ευχαριστώ πολύ για τις πληροφορίες! Επ’ αυτών:
Αντιλαμβάνομαι ότι ο “ορθός” τρόπος είναι να δημιουργηθεί μέσω edit ενός skin, αλλά αυτό θα με δεσμεύει ως προς την χρήση του συγκεκριμένου skin. Συνεπώς, η όποια μελλοντική αλλαγή skin, θα απαιτεί επιπλέον ενέργειες ενσωμάτωσης κώδικα και γραφικών (του “παραθύρου”), γεγονός όχι και τόσο λειτουργικό…
Για την υλοποίηση αυτού, ποια είναι τα βήματα?
1. Δημιουργώ το επιθυμητό png αρχείο.
2. Δημιουργώ το xml αρχείο? Και εάν ναι, με την ίδια φιλοσοφία του skin ή όχι?
3. Εφόσον έχω πλέον έτοιμα αυτά τα 2 αρχεία, πώς τα ενσωματώνω στο VDj και πώς ανοίγω το “παράθυρο” μέσω συντόμευσης σε custom button του skin?
Αντιλαμβάνομαι ότι ο “ορθός” τρόπος είναι να δημιουργηθεί μέσω edit ενός skin, αλλά αυτό θα με δεσμεύει ως προς την χρήση του συγκεκριμένου skin. Συνεπώς, η όποια μελλοντική αλλαγή skin, θα απαιτεί επιπλέον ενέργειες ενσωμάτωσης κώδικα και γραφικών (του “παραθύρου”), γεγονός όχι και τόσο λειτουργικό…
Για την υλοποίηση αυτού, ποια είναι τα βήματα?
1. Δημιουργώ το επιθυμητό png αρχείο.
2. Δημιουργώ το xml αρχείο? Και εάν ναι, με την ίδια φιλοσοφία του skin ή όχι?
3. Εφόσον έχω πλέον έτοιμα αυτά τα 2 αρχεία, πώς τα ενσωματώνω στο VDj και πώς ανοίγω το “παράθυρο” μέσω συντόμευσης σε custom button του skin?
Mensajes Wed 03 Oct 18 @ 3:33 pm
1 & 2 :
Δημιουργείς ένα skin όπως ακριβώς θες να εμφανίζεται το παράθυρο
3: Μεταβάλεις το Header & Footer του XML σαν το παράδειγμα εδώ:
Τέλος καλείς το παράθυρο με την εντολή
show_window 'WindowName'
Αν θες να δεις περισσότερες λεπτομέρειες κατέβασε το skin του Freestyler MRC.
Δημιουργείς ένα skin όπως ακριβώς θες να εμφανίζεται το παράθυρο
3: Μεταβάλεις το Header & Footer του XML σαν το παράδειγμα εδώ:
<Skin name="FreestylerMIDIRemoteControlUI" version="802" width="1366" height="768" breakline="765" nbdecks="1" image="FreestylerMIDIRemoteControlUI" preview="Preview.png" comment="© 2017 PhantomDj (Beta Build 02 / 2017-08-02)" author="PhantomDj">
<copyright>©2017 - PhantomDj</copyright>
<window name="FreestylerMIDIRemoteControlUI" controllerWindow="yes" controllerScreenWidth="1366" controllerScreenHeight="768" width="1366" height="768" posx="0" posy="0" image="FreestylerMIDIRemoteControlUI.png" shown="true" >
SKIN BODY
</window>
</Skin>
Τέλος καλείς το παράθυρο με την εντολή
show_window 'WindowName'
Αν θες να δεις περισσότερες λεπτομέρειες κατέβασε το skin του Freestyler MRC.
Mensajes Wed 03 Oct 18 @ 4:47 pm
Γιώργο αυτό προυποθέτει και κάτι στο definition του εκάστοτε "controller" για να φορτώσει το skin window
Mensajes Wed 03 Oct 18 @ 5:07 pm