Sadim, αυτό που παρατήρησες ήταν τελικά! Σε ευχαριστώ πολύ... Απλά, θα πρέπει να το παιδέψω λίγο, γιατί τα γραφικά δεν εμφανίζονται ορθά. Μία διευκρίνιση, επί την ευκαιρία: Η τιμή nb τί ακριβώς ορίζει?
Posté Fri 08 Mar 19 @ 6:45 pm
Για τα custom visuals ορίζει πόσα γραφικά (καρέ) σχεδιάζεις μέχρι η τιμή να γίνει 100%
Έτσι αν έχεις π.χ. ένα vu-meter με 10 leds και το ορίσεις σαν custom visual τότε λογικά το nb πρέπει να είναι 11 καθώς χρειάζεσαι 11 καρέ για να δείξεις το vu-meter (1 με όλα τα leds σβηστά, + 1 με ένα led αναμμένο, +1 με 2 leds ανμμένα .κ.ο.κ. =11)
Έτσι αν έχεις π.χ. ένα vu-meter με 10 leds και το ορίσεις σαν custom visual τότε λογικά το nb πρέπει να είναι 11 καθώς χρειάζεσαι 11 καρέ για να δείξεις το vu-meter (1 με όλα τα leds σβηστά, + 1 με ένα led αναμμένο, +1 με 2 leds ανμμένα .κ.ο.κ. =11)
Posté Sat 09 Mar 19 @ 9:48 am
και το κάθε καρέ το βαζεις δίπλα δίπλα με το προηγούμενο!!!
Posté Sat 09 Mar 19 @ 6:55 pm
Και αν δεν χωράνε όλα τα καρέ σε μία "γραμμή" τότε χρησιμοποιείς και το nbx="5" όπου ορίζεις πόσα καρέ έχει κάθε γραμμή (και το πρόγραμμα συνεχίζει να διαβάζει από κάτω)
Posté Sun 10 Mar 19 @ 3:17 pm
Έκανα κάποιους πειραματισμούς, αλλά δεν έλαβα το αποτέλεσμα που ήθελα. Οπότε και θα ξαναδώ το θέμα εν καιρώ.
Μία "βοήθεια" στο κάτωθι θέμα...
Έχω το ακόλουθο (ημιτελές) element:
<define class="txt_Status">
<size width="80" height="20"/>
<text font="Segoe UI" size="20" align="center" scroll="no" color="`play ? color 'green' : pause ? blink ? color 'green' : color 'darkgreen' : cue ? color 'orange' : color '#808080'`" action="play ? get_text 'Play' : pause ? get_text 'Pause' : cue ? get_text 'Cue' : stop ? get_text 'Stop' : loop_out ? get_text 'Loop' : nothing"/>
<tooltip>Audio Status</tooltip>
</define>
- Όταν επιλεχθεί το Play, εμφανίζεται το text "Play", όλα καλώς.
- Όταν επιλεχθεί το Pause, αναβοσβήνει το text "Pause", όλα καλώς.
- Όταν επιλεχθεί το Cue, αναβοσβήνει το text "Pause", ενώ θα ήθελα να εμφανίζεται το text "Cue" και (εάν είναι εφικτό) ο αριθμός του επιλεγμένου Cue (π.χ. "Cue 2").
- Όταν επιλεχθεί το Stop, δεν εμφανίζεται text, ενώ θα ήθελα να εμφανίζεται το text "Stop".
- Όταν επιλεχθεί το Auto Loop ή το Loop In ή το Loop Out, θα ήθελα να εμφανίζονται τα αντίστοιχα texts.
Ευχαριστώ προκαταβολικά...
Μία "βοήθεια" στο κάτωθι θέμα...
Έχω το ακόλουθο (ημιτελές) element:
<define class="txt_Status">
<size width="80" height="20"/>
<text font="Segoe UI" size="20" align="center" scroll="no" color="`play ? color 'green' : pause ? blink ? color 'green' : color 'darkgreen' : cue ? color 'orange' : color '#808080'`" action="play ? get_text 'Play' : pause ? get_text 'Pause' : cue ? get_text 'Cue' : stop ? get_text 'Stop' : loop_out ? get_text 'Loop' : nothing"/>
<tooltip>Audio Status</tooltip>
</define>
- Όταν επιλεχθεί το Play, εμφανίζεται το text "Play", όλα καλώς.
- Όταν επιλεχθεί το Pause, αναβοσβήνει το text "Pause", όλα καλώς.
- Όταν επιλεχθεί το Cue, αναβοσβήνει το text "Pause", ενώ θα ήθελα να εμφανίζεται το text "Cue" και (εάν είναι εφικτό) ο αριθμός του επιλεγμένου Cue (π.χ. "Cue 2").
- Όταν επιλεχθεί το Stop, δεν εμφανίζεται text, ενώ θα ήθελα να εμφανίζεται το text "Stop".
- Όταν επιλεχθεί το Auto Loop ή το Loop In ή το Loop Out, θα ήθελα να εμφανίζονται τα αντίστοιχα texts.
Ευχαριστώ προκαταβολικά...
Posté Tue 12 Mar 19 @ 7:50 am
Εδώ εισέρχεσαι στα περίεργα και στον μαγικό κόσμο της VDJScript.
Να εξηγήσω κάτι:
Τα queries που εκτελούνται στο VirtualDJ είναι διαδοχικά και η εντολή που τα περιέχει σταματάει να εκτελείται αφού λάβει την πρώτη θετική απάντηση.
Και εξηγώ πιο αναλυτικά:
Στο VirtualDJ τα decks έχουν 2 status μόνο. Playing & Paused (2 state deck status) Δεν υπάρχει τρίτο state (3 state deck status) όταν το deck είναι σταματημένο σε cue. Το αν ένα deck είναι σε cue ή όχι είναι διαφορετικό status. Με λίγα λόγια αν βάλεις σε ένα led / custom button κτλ σκέτη το query "cue" θα δεις οτι ανάβει όταν η θέση αναπαραγωγής είναι ακριβώς στο σημείο cue ανεξάρτητα από το αν το deck παίζει, είναι paused, κάνει scratch κτλ.
Έτσι όταν ρωτάς play ? this : pause ? that : query ? ... το 3ο query στη σειρά δεν εκτελείται ποτέ. Κι αυτό γιατί είτε το play ? είτε το pause ? θα επιστρέψουν true και θα σταματήσει η εκτέλεση των περαιτέρω ερωτημάτων.
Αν μέχρι εδώ κατάλαβες τι εννοώ τότε θα πρέπει να κατάλαβες και την μερική λύση του προβλήματος σου:
Αλλάζεις την σειρά των ερωτημάτων!
play ? this : cue ? that : pause ? something else
Σε αυτή την περίπτωση το ερώτημα θα δουλέψει όπως περιμένεις. Κι αυτό γιατί όταν το deck ΔΕΝ είναι σε κατάσταση play εξετάζει πρώτα αν είναι σε μνήμη cue και μετά αν είναι paused (Θα μπορούσες και να μην ρωτήσεις καν το pause ? και να γράψεις play ? this : cue ? that : something else)
Τώρα συνεχίζουμε:
ΔΕΝ υπάρχει όπως προφανώς κατάλαβες κατάσταση "stop"
To stop είναι μια εντολή που κάνει συγκεκριμένα πράγματα, αλλά δεν υπάρχει σαν state/status. Ναι η εντολή stop αν την χρησιμοποιήσεις σε led ανάβει το led όταν το deck είναι "σταματημένο", αλλά στην ουσία "εσωτερικά" η εντολή ανάβει το led όταν το deck "δεν είναι play"
Επίσης:
ΔΕΝ υπάρχει διαχωρισμός μεταξύ autoloop (όταν δηλαδή ορίζεις μια loop με την εντολή "loop") και manual loop (όταν χρησιμοποιείς τα loop in / loop out για να ορίσεις loop)
Η loop ανεξάρτητα από τον τρόπο που δημιουργήθηκε είναι ΜΙΑ και σε κάθε περίπτωση έχει σημεία loop_in και loop_out.
Το μοναδικό "αξιόλογο" και "αξιόπιστο" query για μία loop είναι το "loop ?" που σου δείχνει πότε μια loop είναι ενεργή
Προσπαθώντας πλέον να συνδυάσεις τα play ? cue ? loop ? pause ? πρέπει να καταλήξεις σε μία σειρά που να δείχνει ακριβώς τι θέλεις όποτε το θέλεις.
Θα σου δώσω κάποια παραδείγματα για να καταλάβεις:
Εντολή 1:
play ? loop ? get_text 'Loop ' & get_loop_size : get_text 'Play' : cue ? get_text 'Cue ' & get_cue : get_text 'Pause'
Εντολή 2:
loop ? get_text 'Loop ' & get_loop_size : play ? get_text 'Play' : cue ? get_text 'Cue ' & get_cue : get_text 'Pause'
Και οι δύο εντολές είναι σωστές και στο 99% των περιπτώσεων θα δείχνουν το ίδιο πράγμα. Αλλά έχουν μία βασική διαφορά!
Την προτεραιότητα στην απεικόνιση!
Με την πρώτη εντολή αν το deck είναι σταματημένο σε ένα cue με μία loop ενεργοποιημένη, το κείμενο θα γράφει "Cue 2"
Με την δεύτερη εντολή αν το deck είναι σταματημένο σε ένα cue με μία loop ενεργοποιημένη, το κείμενο θα γράφει "Loop 4"
Το γιατί θα συμβαίνει αυτό νομίζω οτι πλέον μπορείς να το καταλάβεις! Η εντολή σταματάει να εκτελείται μετά το πρώτο true. Οπότε είναι θέμα προτεραιότητας!
Σημείωση:
Θα μπορούσες αν ήθελες να έχεις σαν αποτέλεσμα 'Cue 2 - Loop 4'
Το πως θα στο αφήσω σαν άσκηση για να καταλάβεις καλύτερα την δόμηση των queries.
Να θυμάσαι μόνο ότι η εντολή σταματάει να εκτελείται μετά το πρώτο true.
Να εξηγήσω κάτι:
Τα queries που εκτελούνται στο VirtualDJ είναι διαδοχικά και η εντολή που τα περιέχει σταματάει να εκτελείται αφού λάβει την πρώτη θετική απάντηση.
Και εξηγώ πιο αναλυτικά:
Στο VirtualDJ τα decks έχουν 2 status μόνο. Playing & Paused (2 state deck status) Δεν υπάρχει τρίτο state (3 state deck status) όταν το deck είναι σταματημένο σε cue. Το αν ένα deck είναι σε cue ή όχι είναι διαφορετικό status. Με λίγα λόγια αν βάλεις σε ένα led / custom button κτλ σκέτη το query "cue" θα δεις οτι ανάβει όταν η θέση αναπαραγωγής είναι ακριβώς στο σημείο cue ανεξάρτητα από το αν το deck παίζει, είναι paused, κάνει scratch κτλ.
Έτσι όταν ρωτάς play ? this : pause ? that : query ? ... το 3ο query στη σειρά δεν εκτελείται ποτέ. Κι αυτό γιατί είτε το play ? είτε το pause ? θα επιστρέψουν true και θα σταματήσει η εκτέλεση των περαιτέρω ερωτημάτων.
Αν μέχρι εδώ κατάλαβες τι εννοώ τότε θα πρέπει να κατάλαβες και την μερική λύση του προβλήματος σου:
Αλλάζεις την σειρά των ερωτημάτων!
play ? this : cue ? that : pause ? something else
Σε αυτή την περίπτωση το ερώτημα θα δουλέψει όπως περιμένεις. Κι αυτό γιατί όταν το deck ΔΕΝ είναι σε κατάσταση play εξετάζει πρώτα αν είναι σε μνήμη cue και μετά αν είναι paused (Θα μπορούσες και να μην ρωτήσεις καν το pause ? και να γράψεις play ? this : cue ? that : something else)
Τώρα συνεχίζουμε:
ΔΕΝ υπάρχει όπως προφανώς κατάλαβες κατάσταση "stop"
To stop είναι μια εντολή που κάνει συγκεκριμένα πράγματα, αλλά δεν υπάρχει σαν state/status. Ναι η εντολή stop αν την χρησιμοποιήσεις σε led ανάβει το led όταν το deck είναι "σταματημένο", αλλά στην ουσία "εσωτερικά" η εντολή ανάβει το led όταν το deck "δεν είναι play"
Επίσης:
ΔΕΝ υπάρχει διαχωρισμός μεταξύ autoloop (όταν δηλαδή ορίζεις μια loop με την εντολή "loop") και manual loop (όταν χρησιμοποιείς τα loop in / loop out για να ορίσεις loop)
Η loop ανεξάρτητα από τον τρόπο που δημιουργήθηκε είναι ΜΙΑ και σε κάθε περίπτωση έχει σημεία loop_in και loop_out.
Το μοναδικό "αξιόλογο" και "αξιόπιστο" query για μία loop είναι το "loop ?" που σου δείχνει πότε μια loop είναι ενεργή
Προσπαθώντας πλέον να συνδυάσεις τα play ? cue ? loop ? pause ? πρέπει να καταλήξεις σε μία σειρά που να δείχνει ακριβώς τι θέλεις όποτε το θέλεις.
Θα σου δώσω κάποια παραδείγματα για να καταλάβεις:
Εντολή 1:
play ? loop ? get_text 'Loop ' & get_loop_size : get_text 'Play' : cue ? get_text 'Cue ' & get_cue : get_text 'Pause'
Εντολή 2:
loop ? get_text 'Loop ' & get_loop_size : play ? get_text 'Play' : cue ? get_text 'Cue ' & get_cue : get_text 'Pause'
Και οι δύο εντολές είναι σωστές και στο 99% των περιπτώσεων θα δείχνουν το ίδιο πράγμα. Αλλά έχουν μία βασική διαφορά!
Την προτεραιότητα στην απεικόνιση!
Με την πρώτη εντολή αν το deck είναι σταματημένο σε ένα cue με μία loop ενεργοποιημένη, το κείμενο θα γράφει "Cue 2"
Με την δεύτερη εντολή αν το deck είναι σταματημένο σε ένα cue με μία loop ενεργοποιημένη, το κείμενο θα γράφει "Loop 4"
Το γιατί θα συμβαίνει αυτό νομίζω οτι πλέον μπορείς να το καταλάβεις! Η εντολή σταματάει να εκτελείται μετά το πρώτο true. Οπότε είναι θέμα προτεραιότητας!
Σημείωση:
Θα μπορούσες αν ήθελες να έχεις σαν αποτέλεσμα 'Cue 2 - Loop 4'
Το πως θα στο αφήσω σαν άσκηση για να καταλάβεις καλύτερα την δόμηση των queries.
Να θυμάσαι μόνο ότι η εντολή σταματάει να εκτελείται μετά το πρώτο true.
Posté Tue 12 Mar 19 @ 8:38 am
PhantomDeejay wrote :
Χμ... Σπαζοκεφαλιά βλέπω, όχι μαγεία... :-)Εδώ εισέρχεσαι στα περίεργα και στον μαγικό κόσμο της VDJScript.
PhantomDeejay wrote :
Άρα, εφόσον αναφερόμαστε σε 2 status μόνο, η λογική λέει ότι ο κώδικας: play ? get_text 'Play' : pause ? get_text 'Pause' θα πρέπει να βρίσκεται στο τέλος. Επίσης, εφόσον σε ένα deck δεν είναι uploaded κάποιο κομμάτι, συμπληρώνουμε στο τέλος και : nothing, ώστε να μην εμφανίζεται το text Pause.Τα queries που εκτελούνται στο VirtualDJ είναι διαδοχικά και η εντολή που τα περιέχει σταματάει να εκτελείται αφού λάβει την πρώτη θετική απάντηση. ... Στο VirtualDJ τα decks έχουν 2 status μόνο. Playing & Paused (2 state deck status) Δεν υπάρχει τρίτο state (3 state deck status) όταν το deck είναι σταματημένο σε cue.
Εν συνεχεία, μεταξύ Play και Pause, "παρεμβάλλουμε" το Cue, αφού είναι ένα state πριν το Pause, και έτσι ο κώδικας διαμορφώνεται ως ακολούθως:
play ? get_text 'Play' : cue ? get_text 'Cue ' & get_cue : pause ? get_text 'Pause' : nothing"
PhantomDeejay wrote :
Κατανοητό, οπότε δεν ασχολούμαι καν με το θέμα αυτό... ...ΔΕΝ υπάρχει όπως προφανώς κατάλαβες κατάσταση "stop". To stop είναι μια εντολή που κάνει συγκεκριμένα πράγματα, αλλά δεν υπάρχει σαν state/status. Ναι η εντολή stop αν την χρησιμοποιήσεις σε led ανάβει το led όταν το deck είναι "σταματημένο", αλλά στην ουσία "εσωτερικά" η εντολή ανάβει το led όταν το deck "δεν είναι play"
PhantomDeejay wrote :
Επίσης κατανοητό, οπότε και η εντολή διαμορφώνεται πλέον:Επίσης: ΔΕΝ υπάρχει διαχωρισμός μεταξύ autoloop (όταν δηλαδή ορίζεις μια loop με την εντολή "loop") και manual loop (όταν χρησιμοποιείς τα loop in / loop out για να ορίσεις loop). Η loop ανεξάρτητα από τον τρόπο που δημιουργήθηκε είναι ΜΙΑ και σε κάθε περίπτωση έχει σημεία loop_in και loop_out. Το μοναδικό "αξιόλογο" και "αξιόπιστο" query για μία loop είναι το "loop ?" που σου δείχνει πότε μια loop είναι ενεργή.
action="loop ? get_text 'Loop ' & get_loop_size : play ? get_text 'Play' : cue ? get_text 'Cue ' & get_cue : pause ? get_text 'Pause' : nothing"
PhantomDeejay wrote :
Θα πειραματιστώ...Θα μπορούσες αν ήθελες να έχεις σαν αποτέλεσμα 'Cue 2 - Loop 4'. Το πως θα στο αφήσω σαν άσκηση για να καταλάβεις καλύτερα την δόμηση των queries. Να θυμάσαι μόνο ότι η εντολή σταματάει να εκτελείται μετά το πρώτο true.
Σε ευχαριστώ πολύ!
Posté Tue 12 Mar 19 @ 10:45 am
Μία μικρή παρατήρηση.
Χωρίς να είναι λάθος αυτό που κάνεις, το : pause ? that δεν το χρειάζεσαι. To pause είναι πάντα το αντίθετο του play, οπότε ισχύει πάντα το "αν όχι play, τότε pause"
Επίσης σωστότερο για να μην δείχνει τίποτα το deck θα ήταν να χρησιμοποιήσεις το query loaded ? στην αρχή
Οπότε:
loaded ? loop ? get_text 'Loop ' & get_loop_size : play ? get_text 'Play' : cue ? get_text 'Cue ' & get_cue : get_text 'Pause' : get_text ''
Σου αντικατέστησα το nothing με get_text '' για τα αυτόματα tooltips, και για να είναι πιο ευανάγνωστη η εντολή με "ανθρώπινη" λογική. Θα μπορούσε να είναι και get_text 'Empty' ή get_text 'Not Loaded' :P
Χωρίς να είναι λάθος αυτό που κάνεις, το : pause ? that δεν το χρειάζεσαι. To pause είναι πάντα το αντίθετο του play, οπότε ισχύει πάντα το "αν όχι play, τότε pause"
Επίσης σωστότερο για να μην δείχνει τίποτα το deck θα ήταν να χρησιμοποιήσεις το query loaded ? στην αρχή
Οπότε:
loaded ? loop ? get_text 'Loop ' & get_loop_size : play ? get_text 'Play' : cue ? get_text 'Cue ' & get_cue : get_text 'Pause' : get_text ''
Σου αντικατέστησα το nothing με get_text '' για τα αυτόματα tooltips, και για να είναι πιο ευανάγνωστη η εντολή με "ανθρώπινη" λογική. Θα μπορούσε να είναι και get_text 'Empty' ή get_text 'Not Loaded' :P
Posté Tue 12 Mar 19 @ 11:22 am
Μερικά "θεματάκια" προς διευκρίνηση - επίλυση...
1. Key Difference
Δεν απεικονίζει το ορθό αποτέλεσμα, ούτε έτσι: action="get_loaded_song key difference", ούτε έτσι: action="key difference". Τί κάνω λάθος?
2. Bpm Difference
Το ίδιο και σε αυτή την περίπτωση...
3. Get Limiter
Ο κώδικας: get_limiter 'master', get_limiter 'sampler', get_limiter 'mic', "λειτουργεί" κανονικά. Πως θα πρέπει να συντάξω τον κώδικα, ώστε να λάβω το limiter επί του channel / deck?
4. Button & Menu
Έχω δημιουργήσει ένα label, το οποίο είναι ουσιαστικά button, ως ακολούθως:
<define class="lbl_Master" leftclick="cycle '@Master_Layout' 2">
<size width="100" height="16"/>
<down x="10" y="1730"/>
<text font="Calibri" size="18" align="center" scroll="no" color="#c0c0c0" format="MASTER"/>
<tooltip>LC: Change Master Layout</tooltip>
</define>
Ταυτόχρονα έχω δημιουργήσει ένα menu, όπου για την συγκεκριμένη περίπτωση έχω:
<submenu text="Master">
<item text="Layout A" action="set '@Master_Layout' 0" hascheck="true"/>
<item text="Layout B" action="set '@Master_Layout' 1" hascheck="true"/>
</submenu>
Το αποτέλεσμα είναι αυτό που ζητώ, δηλαδή η εναλλαγή του Layout πραγματοποιείται, είτε από το button, είτε από το menu. Το πρόβλημα είναι επί των decks...
Έχω δημιουργήσει ένα label, το οποίο είναι ουσιαστικά button, ως ακολούθως:
<define class="lbl_Decks" action="cycle '@Deck_Layout' 4" rightclick="action_deck 1 ? deck 3 leftdeck : action_deck 2 ? deck 4 rightdeck : action_deck 3 ? deck 1 leftdeck : action_deck 4 ? deck 2 rightdeck : nothing">
<size width="80" height="18"/>
<down x="10" y="1730"/>
<text font="Calibri" size="18" align="center" scroll="no" weight="bold" color="`param_equal 1 get_deck ? color 'blue' : param_equal 2 get_deck ? color 'red' : param_equal 3 get_deck ? color 'green' : param_equal 4 get_deck ? color 'yellow'`" action="param_equal 1 get_deck ? get_text 'DECK 1' : param_equal 2 get_deck ? get_text 'DECK 2' : param_equal 3 get_deck ? get_text 'DECK 3' : param_equal 4 get_deck ? get_text 'DECK 4'"/>
<tooltip>LC: Change Layout\nRC: Change Deck</tooltip>
</define>
Ταυτόχρονα έχω δημιουργήσει ένα menu, όπου για την συγκεκριμένη περίπτωση έχω:
<submenu text="Decks">
<item text="Layout A" action="set '$@Deck_Layout' 0" hascheck="true"/>
<item text="Layout B" action="set '$@Deck_Layout' 1" hascheck="true"/>
<item text="Layout C" action="set '$@Deck_Layout' 2" hascheck="true"/>
<item text="Layout D" action="set '$@Deck_Layout' 3" hascheck="true"/>
</submenu>
Σε αυτή την περίπτωση δεν επιτυγχάνεται η εναλλαγή των layouts. Τί κάνω λάθος?
1. Key Difference
Δεν απεικονίζει το ορθό αποτέλεσμα, ούτε έτσι: action="get_loaded_song key difference", ούτε έτσι: action="key difference". Τί κάνω λάθος?
2. Bpm Difference
Το ίδιο και σε αυτή την περίπτωση...
3. Get Limiter
Ο κώδικας: get_limiter 'master', get_limiter 'sampler', get_limiter 'mic', "λειτουργεί" κανονικά. Πως θα πρέπει να συντάξω τον κώδικα, ώστε να λάβω το limiter επί του channel / deck?
4. Button & Menu
Έχω δημιουργήσει ένα label, το οποίο είναι ουσιαστικά button, ως ακολούθως:
<define class="lbl_Master" leftclick="cycle '@Master_Layout' 2">
<size width="100" height="16"/>
<down x="10" y="1730"/>
<text font="Calibri" size="18" align="center" scroll="no" color="#c0c0c0" format="MASTER"/>
<tooltip>LC: Change Master Layout</tooltip>
</define>
Ταυτόχρονα έχω δημιουργήσει ένα menu, όπου για την συγκεκριμένη περίπτωση έχω:
<submenu text="Master">
<item text="Layout A" action="set '@Master_Layout' 0" hascheck="true"/>
<item text="Layout B" action="set '@Master_Layout' 1" hascheck="true"/>
</submenu>
Το αποτέλεσμα είναι αυτό που ζητώ, δηλαδή η εναλλαγή του Layout πραγματοποιείται, είτε από το button, είτε από το menu. Το πρόβλημα είναι επί των decks...
Έχω δημιουργήσει ένα label, το οποίο είναι ουσιαστικά button, ως ακολούθως:
<define class="lbl_Decks" action="cycle '@Deck_Layout' 4" rightclick="action_deck 1 ? deck 3 leftdeck : action_deck 2 ? deck 4 rightdeck : action_deck 3 ? deck 1 leftdeck : action_deck 4 ? deck 2 rightdeck : nothing">
<size width="80" height="18"/>
<down x="10" y="1730"/>
<text font="Calibri" size="18" align="center" scroll="no" weight="bold" color="`param_equal 1 get_deck ? color 'blue' : param_equal 2 get_deck ? color 'red' : param_equal 3 get_deck ? color 'green' : param_equal 4 get_deck ? color 'yellow'`" action="param_equal 1 get_deck ? get_text 'DECK 1' : param_equal 2 get_deck ? get_text 'DECK 2' : param_equal 3 get_deck ? get_text 'DECK 3' : param_equal 4 get_deck ? get_text 'DECK 4'"/>
<tooltip>LC: Change Layout\nRC: Change Deck</tooltip>
</define>
Ταυτόχρονα έχω δημιουργήσει ένα menu, όπου για την συγκεκριμένη περίπτωση έχω:
<submenu text="Decks">
<item text="Layout A" action="set '$@Deck_Layout' 0" hascheck="true"/>
<item text="Layout B" action="set '$@Deck_Layout' 1" hascheck="true"/>
<item text="Layout C" action="set '$@Deck_Layout' 2" hascheck="true"/>
<item text="Layout D" action="set '$@Deck_Layout' 3" hascheck="true"/>
</submenu>
Σε αυτή την περίπτωση δεν επιτυγχάνεται η εναλλαγή των layouts. Τί κάνω λάθος?
Posté Mon 18 Mar 19 @ 6:14 pm
1. Αν δεν με απατά η μνήμη μου τα key_difference και bpm_difference έχουν νόημα μόνο για το κομμάτι που είναι επιλεγμένο στον browser. Για την διαφορά ενός deck από το master deck θα πρέπει να τα υπολογίσεις
2. Ναι λειτουργούν. Το πως θα τα συντάξεις εξαρτάται από το τι θες να πετύχεις. Γενικά οι εντολές αυτές επιστρέφουν αριθμό από το 0 (no limit) μέχρι το 1 (-οο db συμπίεση)
3. Το προφανές λάθος που βλέπω είναι οτι στο button έχεις τοπικές μεταβλητές, αλλά στο μενού καθολικές. Λογικά θα θες να αφαιρέσεις το $ από το όνομα της μεταβλητής στο menu
2. Ναι λειτουργούν. Το πως θα τα συντάξεις εξαρτάται από το τι θες να πετύχεις. Γενικά οι εντολές αυτές επιστρέφουν αριθμό από το 0 (no limit) μέχρι το 1 (-οο db συμπίεση)
3. Το προφανές λάθος που βλέπω είναι οτι στο button έχεις τοπικές μεταβλητές, αλλά στο μενού καθολικές. Λογικά θα θες να αφαιρέσεις το $ από το όνομα της μεταβλητής στο menu
Posté Mon 18 Mar 19 @ 8:31 pm
PhantomDeejay wrote :
Βασικά εμφανίζονται οι όποιες διαφορές, μεταξύ του loaded song και αυτών στο browser. Το θέμα είναι να εμφανίζεται η διαφορά μεταξύ των decks, οπότε για τον "υπολογισμό" να υποθέσω ότι υπονοείς κάποιο script, όπως param_cast?1. Αν δεν με απατά η μνήμη μου τα key_difference και bpm_difference έχουν νόημα μόνο για το κομμάτι που είναι επιλεγμένο στον browser. Για την διαφορά ενός deck από το master deck θα πρέπει να τα υπολογίσεις
PhantomDeejay wrote :
Εάν υποθέσουμε ότι πρόκειται περί ενός led, πώς αυτό θα ενεργοποιείται όταν το channel clipάρει? Διευκρινίζω ότι αυτό μπορεί να επιτευχθεί, εάν π.χ. έχουμε αυξήσει το gain του channel...2. Ναι λειτουργούν. Το πως θα τα συντάξεις εξαρτάται από το τι θες να πετύχεις. Γενικά οι εντολές αυτές επιστρέφουν αριθμό από το 0 (no limit) μέχρι το 1 (-οο db συμπίεση)
PhantomDeejay wrote :
Κι όμως, δεν λειτουργεί ούτε έτσι. Πέραν αυτού, η επιδίωξή μου είναι από το "button" να αλλάζει μόνο το αντιστοιχιζόμενο deck, ενώ απ' το menu να αλλάζει το layout σε όλα τα decks. Ή μήπως αυτό δεν γίνεται?
3. Το προφανές λάθος που βλέπω είναι οτι στο button έχεις τοπικές μεταβλητές, αλλά στο μενού καθολικές. Λογικά θα θες να αφαιρέσεις το $ από το όνομα της μεταβλητής στο menu
Posté Mon 18 Mar 19 @ 9:06 pm
Μία "γεύση" από το preview, με το 1ο layout σχεδόν έτοιμο, όχι όμως και τον browser, τον οποίο δεν έχω διαμορφώσει ακόμα...
Που είναι ο PanosV να με "κράξει", γιατί είναι "φορτωμένο"? :P
Που είναι ο PanosV να με "κράξει", γιατί είναι "φορτωμένο"? :P
Posté Mon 18 Mar 19 @ 9:42 pm
Παρων!!!
πωωω ρε φιλε πολυ γραμματακι και πληροφορια...
τελειως διαφορετικο απο τα γουστα μου...
αυτο δε σημαινει παντως οτι δεν επικροτω την προσπαθεια και το πακετο που τρως με τον προγραμματισμο οπως βλεπω...
καλη συνεχεια και καλα κουραγια!!
πωωω ρε φιλε πολυ γραμματακι και πληροφορια...
τελειως διαφορετικο απο τα γουστα μου...
αυτο δε σημαινει παντως οτι δεν επικροτω την προσπαθεια και το πακετο που τρως με τον προγραμματισμο οπως βλεπω...
καλη συνεχεια και καλα κουραγια!!
Posté Mon 18 Mar 19 @ 10:24 pm
Σε ευχαριστώ πολύ, αν και οφείλω να ομολογήσω ότι παρά την όρεξή μου, χωρίς την βοήθεια του Phantom, θα ήμουν ακόμη στην αρχή...
Όσον αφορά στο skin, προσπάθησα και προσπαθώ να εφαρμόσω 2 αρχές:
1. Δεν θα είναι το κλασσικό skin, όπου τουλάχιστον τις μισές πληροφορίες τις βλέπεις στον controller! Με άλλα λόγια, όπως έχει αναφέρει κατά καιρούς και ο Master (βλέπε Phantom), στο laptop οφείλεις να βλέπεις ότι δεν βλέπεις στον controller...
2. Όπως "προδίδει" και η (μάλλον) τελική ονομασία του (Transformer), θα έχει τελείως διαφορετικά layouts (ανά decks ή και συνολικά). Με άλλα λόγια, ο εκάστοτε χρήστης θα μπορεί να διαλέγει το layout που τον ικανοποιεί περισσότερο, είτε αυτό θα είναι μόνο text ή μόνο graphics ή και τα δύο. Άρα τα layouts δεν θα είναι απλή μετατόπιση των υπαρχόντων, υπό νέα διάταξη, αλλά τελείως διαφορετικά...
Αυτό βέβαια συνεπάγεται ακόμα πάρα πολύ δουλειά, αλλά προς το παρόν η όρεξη δεν έχει χαθεί. Και αυτό, διότι νομίζω ότι όταν πλέον αποκτήσω την ευχέρεια με τα scripts, τα πράγματα θα είναι πολύ πιο εύκολα...
Πέρα από αυτά, οι δικές σου προτάσεις (γενικά και ειδικά) ποιες είναι?
Όσον αφορά στο skin, προσπάθησα και προσπαθώ να εφαρμόσω 2 αρχές:
1. Δεν θα είναι το κλασσικό skin, όπου τουλάχιστον τις μισές πληροφορίες τις βλέπεις στον controller! Με άλλα λόγια, όπως έχει αναφέρει κατά καιρούς και ο Master (βλέπε Phantom), στο laptop οφείλεις να βλέπεις ότι δεν βλέπεις στον controller...
2. Όπως "προδίδει" και η (μάλλον) τελική ονομασία του (Transformer), θα έχει τελείως διαφορετικά layouts (ανά decks ή και συνολικά). Με άλλα λόγια, ο εκάστοτε χρήστης θα μπορεί να διαλέγει το layout που τον ικανοποιεί περισσότερο, είτε αυτό θα είναι μόνο text ή μόνο graphics ή και τα δύο. Άρα τα layouts δεν θα είναι απλή μετατόπιση των υπαρχόντων, υπό νέα διάταξη, αλλά τελείως διαφορετικά...
Αυτό βέβαια συνεπάγεται ακόμα πάρα πολύ δουλειά, αλλά προς το παρόν η όρεξη δεν έχει χαθεί. Και αυτό, διότι νομίζω ότι όταν πλέον αποκτήσω την ευχέρεια με τα scripts, τα πράγματα θα είναι πολύ πιο εύκολα...
Πέρα από αυτά, οι δικές σου προτάσεις (γενικά και ειδικά) ποιες είναι?
Posté Mon 18 Mar 19 @ 10:53 pm
1. Μεταξύ των decks ναι πρέπει να κάνεις μαθηματικά.
2. action="get_limiter & param_bigger 0 ? on : off"
3. Οι μεταβλητές @$Var, @Var, $Var και Var ΔΕΝ ΕΙΝΑΙ ίδιες. έχουν διαφορετικό όνομα (και σκοπό)
Επίσης μια τοπική μεταβλητή Var ή @Var δεν "ελέγχεται" αλλάζοντας τις καθολικές $Var ή @$Var
Γενικά μην σε μπερδεύουν τα σύμβολα. Δεν είναι "η ίδια μεταβλητή με άλλα σύμβολα / σκοπό". Είναι 4 διαφορετικές μεταβλητές.
Τώρα: Αν στα decks χρησιμοποιείς τοπικές μεταβλητές τότε στο menu για να πετύχεις αυτό που θέλεις θα πρέπει να αλλάξεις και τις 4 τοπικές μεταβλητές ταυτόχρονα.
Επομένως ή θα γράψεις
deck 1 set 'Decks_Layout' 0 & deck 2 set 'Decks_Layout' 0 & deck 3 set 'Decks_Layout' 0 & deck 4 set 'Decks_Layout' 0
ή την πιο κομψή
deck all set 'Decks_Layout' 0
2. action="get_limiter & param_bigger 0 ? on : off"
3. Οι μεταβλητές @$Var, @Var, $Var και Var ΔΕΝ ΕΙΝΑΙ ίδιες. έχουν διαφορετικό όνομα (και σκοπό)
Επίσης μια τοπική μεταβλητή Var ή @Var δεν "ελέγχεται" αλλάζοντας τις καθολικές $Var ή @$Var
Γενικά μην σε μπερδεύουν τα σύμβολα. Δεν είναι "η ίδια μεταβλητή με άλλα σύμβολα / σκοπό". Είναι 4 διαφορετικές μεταβλητές.
Τώρα: Αν στα decks χρησιμοποιείς τοπικές μεταβλητές τότε στο menu για να πετύχεις αυτό που θέλεις θα πρέπει να αλλάξεις και τις 4 τοπικές μεταβλητές ταυτόχρονα.
Επομένως ή θα γράψεις
deck 1 set 'Decks_Layout' 0 & deck 2 set 'Decks_Layout' 0 & deck 3 set 'Decks_Layout' 0 & deck 4 set 'Decks_Layout' 0
ή την πιο κομψή
deck all set 'Decks_Layout' 0
Posté Tue 19 Mar 19 @ 8:25 am
Ωραίο φαίνεται.. Μ αρέσει η έλλειψη jogweel. Καλή συνέχεια!
Posté Wed 20 Mar 19 @ 11:09 am
κοιτα...για να μη το προσωποποιησω τελειως θα σου πω οτι γενικα μ αρεσουν τα λιτα σκιν τυπου σερατο και με ελαχιστη πληροφορια πανω, αλλα κατα κυριο λογο με ουσιαστικη .. επισης γενικα παιζω με μικρα λαπτοπ (12,1 στο παρελθον και 13.3 τωρα) οποτε μιας και μεγαλωνουμε κιολας καταλαβαινεις οτι πρεπει να ναι ολα ευαναγνωστα... επισης γενικα δε θελω να κοιταω λαπτοπ οσο μπορω... (περα απ την επιλογη του τρακ κλπ).
τα παλια χρονια (επι εποχης ν6~ν7) ειχα αγγαρεψει το Μπαμπη και μου χε πειραξει/γδυσει ενα σκιν και μου το χε κανει καπως ετσι...
απ την αλλη τωρα που εχω αλλαξει αρκετα στυλ παιξιματος και ταυτοχρονα κανω και πολυ συχνα εγγραφη και broadcast και φυσικα εχουν αυξηθει οι αναγκες γενικοτερα (παιζω με hotcues κανω juggling κλπ) χρησιμοποιω το controller του dennyo το οποιο και αυτο πρεπει καποια στιγμη να βρω την ορεξη και να κατσω να το παραμετροποιησω και να αφαιρεσω πολυ πληροφορια...
οπως καταλαβες θελω το σκιν να χει platter αλλα και καθαρες και μεγαλες κυμματομορφες ωστε να βλεπω τα hotcues πανω του.. φυσικα πληροφοριες για τον χρονο το κλειδι και τα bpm ειναι στανταρ οπως επισης θελω και slider για το pitch...
δε ξερω βγαινει νοημα απ αυτα που λεω η μπα?
τα παλια χρονια (επι εποχης ν6~ν7) ειχα αγγαρεψει το Μπαμπη και μου χε πειραξει/γδυσει ενα σκιν και μου το χε κανει καπως ετσι...
απ την αλλη τωρα που εχω αλλαξει αρκετα στυλ παιξιματος και ταυτοχρονα κανω και πολυ συχνα εγγραφη και broadcast και φυσικα εχουν αυξηθει οι αναγκες γενικοτερα (παιζω με hotcues κανω juggling κλπ) χρησιμοποιω το controller του dennyo το οποιο και αυτο πρεπει καποια στιγμη να βρω την ορεξη και να κατσω να το παραμετροποιησω και να αφαιρεσω πολυ πληροφορια...
οπως καταλαβες θελω το σκιν να χει platter αλλα και καθαρες και μεγαλες κυμματομορφες ωστε να βλεπω τα hotcues πανω του.. φυσικα πληροφοριες για τον χρονο το κλειδι και τα bpm ειναι στανταρ οπως επισης θελω και slider για το pitch...
δε ξερω βγαινει νοημα απ αυτα που λεω η μπα?
Posté Mon 25 Mar 19 @ 6:08 pm
Κατ' αρχήν σε ευχαριστώ για τις ιδέες... Γενικά δεν είμαι κατά του minimal. Και δεδομένου ότι το εν λόγω skin θα έχει διάφορα variations, ένα minimal είναι must...
Posté Mon 25 Mar 19 @ 9:01 pm
Δημιούργησα το κάτωθι panel, με σκοπό να προσθέσω δίπλα από το search bar κάποια buttons.
<panel name="Browser" x="5" y="500">
<browser class="Browser"><size width="1920-10" height="1080-500"/><pos x="+0" y="+0"/></browser>
<menu class="btn_Browser_Menu" x="+900" y="+10"/>
</panel>
Κατόπιν δημιούργησα ένα button menu:
<define class="btn_Browser_Menu">
<size width="30" height="20"/>
<up x="1710" y="1240"/>
<over x="1710" y="1265"/>
<selected x="1710" y="1265"/>
<tooltip>Browser Menu</tooltip>
<submenu text="Folders">
<item text="Add Filter Folder" action="add_filterfolder" hascheck="false"/>
<item text="Add Virtual Folder" action="add_virtualfolder" hascheck="false"/>
<item text="Add Favorite Folder" action="add_favoritefolder" hascheck="false"/>
</submenu>
<submenu text="List">
<item text="Export List" action="browser_export" hascheck="false"/>
</submenu>
</define>
Το 1o πρόβλημα είναι ότι ενώ το menu button εμφανίζεται κανονικά, δεν εκτελείται καμία εκ των εντολών που περιλαμβάνει! Τί έχω κάνει "λάθος"?
To 2o πρόβλημα είναι ότι το menu button δεν μετακινείται, όταν μετακινώ το διαχωριστικό μεταξύ Folfders και List. Πώς αντιμετωπίζεται αυτό?
<panel name="Browser" x="5" y="500">
<browser class="Browser"><size width="1920-10" height="1080-500"/><pos x="+0" y="+0"/></browser>
<menu class="btn_Browser_Menu" x="+900" y="+10"/>
</panel>
Κατόπιν δημιούργησα ένα button menu:
<define class="btn_Browser_Menu">
<size width="30" height="20"/>
<up x="1710" y="1240"/>
<over x="1710" y="1265"/>
<selected x="1710" y="1265"/>
<tooltip>Browser Menu</tooltip>
<submenu text="Folders">
<item text="Add Filter Folder" action="add_filterfolder" hascheck="false"/>
<item text="Add Virtual Folder" action="add_virtualfolder" hascheck="false"/>
<item text="Add Favorite Folder" action="add_favoritefolder" hascheck="false"/>
</submenu>
<submenu text="List">
<item text="Export List" action="browser_export" hascheck="false"/>
</submenu>
</define>
Το 1o πρόβλημα είναι ότι ενώ το menu button εμφανίζεται κανονικά, δεν εκτελείται καμία εκ των εντολών που περιλαμβάνει! Τί έχω κάνει "λάθος"?
To 2o πρόβλημα είναι ότι το menu button δεν μετακινείται, όταν μετακινώ το διαχωριστικό μεταξύ Folfders και List. Πώς αντιμετωπίζεται αυτό?
Posté Tue 26 Mar 19 @ 6:51 am
Ξεκινάμε από το 2ο που είναι πιο εύκολο (να καταλάβεις)
Από τη στιγμή που ζωγραφίζεις ένα κουμπί/μενού σε σταθερές συντεταγμένες, πως περιμένεις το κουμπί να μετακινηθεί;
Και επιστρέφουμε στο πρώτο. Οι εντολές που έχεις βάλει στο μενού θα πρέπει να λειτουργούν, αλλά υπό προϋποθέσεις (διάβασε τι κάνει κάθε action και πότε το κάνει και θα καταλάβεις)
Γενικά, ή θα φτιάξεις έναν browser όπου θα παραμετροποιήσεις μόνο την εμφάνιση ( <browser /> element) ή θα πρέπει να σχεδιάσεις μόνος σου όλο τον browser από το μηδέν (custom browser) όπου θα πρέπει να χρησιμοποιήσεις splits για να διαχειριστείς τις περιοχές του browser και πάνω σ' αυτό να χτίσεις ότι λίστες / παράθυρα χρειάζεσαι.
Custom browser έχει φτιάξει μόνο ο Μπάμπης νομίζω, και αν θυμάμαι καλά δεν λειτουργεί 100% σωστά εξ αιτίας ενός bug. Το θέμα είναι οτι ο custom browser έχει πολύ δουλειά με "ελάχιστο" κέρδος (αν θες την προσωπική μου άποψη)
Από τη στιγμή που ζωγραφίζεις ένα κουμπί/μενού σε σταθερές συντεταγμένες, πως περιμένεις το κουμπί να μετακινηθεί;
Και επιστρέφουμε στο πρώτο. Οι εντολές που έχεις βάλει στο μενού θα πρέπει να λειτουργούν, αλλά υπό προϋποθέσεις (διάβασε τι κάνει κάθε action και πότε το κάνει και θα καταλάβεις)
Γενικά, ή θα φτιάξεις έναν browser όπου θα παραμετροποιήσεις μόνο την εμφάνιση ( <browser /> element) ή θα πρέπει να σχεδιάσεις μόνος σου όλο τον browser από το μηδέν (custom browser) όπου θα πρέπει να χρησιμοποιήσεις splits για να διαχειριστείς τις περιοχές του browser και πάνω σ' αυτό να χτίσεις ότι λίστες / παράθυρα χρειάζεσαι.
Custom browser έχει φτιάξει μόνο ο Μπάμπης νομίζω, και αν θυμάμαι καλά δεν λειτουργεί 100% σωστά εξ αιτίας ενός bug. Το θέμα είναι οτι ο custom browser έχει πολύ δουλειά με "ελάχιστο" κέρδος (αν θες την προσωπική μου άποψη)
Posté Tue 26 Mar 19 @ 8:19 am