Quick Sign In:  

Forum: Greek Forum

Topic: ΔΗΜΙΟΥΡΓΙΑ SKIN - Page: 3

This part of topic is old and might contain outdated or incorrect information

Επιπρόσθετα ο ορισμός του icon σου θα έπρεπε να είναι τετράγωνος, και τα "βαμμένα" pixels να βρίσκονται στο κάτω μέρος του τετραγώνου. Έτσι δεν σου χρειάζεται το dx/dy
 

Posted Fri 09 Mar 18 @ 12:13 pm
djdad wrote :
Μπορείς να χρησιμοποιήσεις dx="" dy="" μέσα στα icon που δηλώνουν ποσά pixels είναι μακρυά από το κέντρο (παίρνουν και αρνητικές τιμές)
Είχα δει αυτές τις παραμέτρους, αλλά επειδή δεν είχα βρει εξήγηση αυτών στο VDJPedia, δεν μπήκα στην διαδικασία να πειραματιστώ και κατ' επέκταση να μάθω και να τα χρησιμοποιήσω.
Μπάμπη σε ευχαριστώ πολύ, αλλά την ιδέα του "κοινού" background μάλλον θα την εγκαταλείψω τελικά. Ο λόγος είναι ότι σε κάποια buttons και στην περίπτωση του mouseover ή του down θα χρειαστεί να αλλάζει το background. Και σε αυτή την περίπτωση, δεν βρήκα τρόπο να υλοποιείται, με την κάτωθι σύνταξη σε 1 define:

<define class="button_Exit" action="close">
<size width="30" height="20"/>
<up x="1885" y="1750"/>
<icon x="1893" y="1780" width="14" height="14">
<over x="1893" y="1800" width="14" height="14"/>
<down x="1893" y="1800" width="14" height="14"/>
</icon>
<tooltip>Exit</tooltip>
</define>

PhantomDeejay wrote :
Επιπρόσθετα ο ορισμός του icon σου θα έπρεπε να είναι τετράγωνος, και τα "βαμμένα" pixels να βρίσκονται στο κάτω μέρος του τετραγώνου. Έτσι δεν σου χρειάζεται το dx/dy
Γιώργο, δεν κατάλαβα τι εννοείς...
 

Posted Sat 10 Mar 18 @ 5:34 am


Εδώ βλέπεις ένα εικονίδιο 32x32 pixels (όπου το πράσινο χρώμα κανονικά θα είναι transparent στο αρχείο png)
Πρόσεξε πως η γραμμή (τα βαμμένα λευκά pixels) βρίσκεται στην "κάτω μεριά" της περιοχής των 32pixels
Έτσι λοιπόν αν κάνεις define αυτή την περιοχή των 32x32 pixels σαν εικονίδιο τότε θα δεις την γραμμή όχι στο κέντρο του κουμπιού σου, αλλά στο κάτω μέρος.
 

Posted Mon 12 Mar 18 @ 8:29 am
Κατανοητό! Μία βοήθεια ακόμη…

Έχω τα ακόλουθα στοιχεία:

1. Background πεδίου (διαφορετικό, από το συνολικό):
<size width="120" height="60"/>
<pos x="+15" y="+160"/>
<up x="+15" y="+1775"/>
2. Label πεδίου:
<size width="+60" height="+10"/>
<pos x="+15+2" y="+160+2"/>
<text visibility="not loaded" size="14" color="#666666" align="left" weight="bold" scroll="no" format="ELAPSED"/>
3. Τιμή πεδίου:
<size width="116" height="56"/>
<pos x="+15+2" y="+160+2"/>
<text size="34" color="#99ffcc" align="center" weight="bold" scroll="no" action="get_time elapsed"/>
<tooltip>Elapsed Time</tooltip>

Το ερώτημα είναι εάν είναι εφικτό να συμπεριλάβουμε όλα τα άνωθεν στοιχεία σε 1 definition, γιατί έκανα κάποιες δοκιμές και δεν μου βγήκε. Εάν όχι, τότε μπορούμε έστω σε 2 (background + label μαζί σε 1 definition) ή αναγκαστικά πάμε σε 3, όσα δηλαδή και τα στοιχεία που απαρτίζουν το πεδίο?
 

Posted Mon 12 Mar 18 @ 4:26 pm
Να που σου χρειάζονται τα "κακά" panels :P

<define class="pnl_TimeElapsed">
<size width="120" height="60"/>
<pos x="+15" y="+160"/>
<up x="+15" y="+1775"/>

<textzone visibility="not loaded">
<text size="14" color="#666666" align="left" weight="bold" scroll="no" format="ELAPSED"/>
<size width="60" height="10"/>
<pos x="+2" y="+2"/>
</textzone>

<textzone>
<text size="34" color="#99ffcc" align="center" weight="bold" scroll="no" action="get_time elapsed"/>
<tooltip>Elapsed Time</tooltip>
<size width="116" height="56"/>
<pos x="+2" y="+2"/>
</textzone>

</define>

Με κόκκινο είναι τα στοιχεία του panel, με πράσινο ένα textzone και με πορτοκαλί ένα δεύτερο textzone
Προσοχή: Οι σχετικές συντεταγμένες <pos x="+2" y="+2"/> των textzones είναι πλέον σχετικές ως προς το panel (το element στο οποίο περιέχονται) και όχι ως προς το γονικό element που είχες πριν.
 

Posted Tue 13 Mar 18 @ 8:55 am
Κατ’ αρχήν ένα μεγάλο ευχαριστώ σε σένα, αλλά και στον Μπάμπη, για την τόσο πολύτιμη βοήθειά σας. Και το λέω και το εννοώ, διότι (κακά τα ψέματα) οι όποιες πληροφορίες δίδονται για την κατασκευή skin μέσω των σχετικών κειμένων του VDj, δεν επαρκούν, ούτε για να “βοηθήσουν” κάποιον με μια πιο “έξυπνη” προσέγγιση του όλου θέματος, ούτε για να γλυτώσουν κάποιον από αχρείαστο (τελικά) κώδικα…

Όσον αφορά στo τελευταίο θέμα, συνειδητοποίησα πολλά (κάλιο αργά, παρά ποτέ), οπότε προχωράω και ενημερώνω…
 

Posted Tue 13 Mar 18 @ 11:20 am
Μία διευκρίνηση παρακαλώ πολύ...

Έχω π.χ. το ακόλουθο definition, για το "στατικό" text:

<define class="txt_Cpu">
<pos x="+258+25" y="+5-1"/>
<size width="40" height="20"/>
<text size="14" color="#bebebe" align="left" weight="bold" scroll="no" action="get_text 'CPU:'"/>
<tooltip>Cpu Usage Percent</tooltip>
</define>

Και το ακόλουθο για το "μεταβλητή" value:

<define class="val_Cpu">
<pos x="+258+15+40" y="+5-1"/>
<size width="40" height="20"/>
<text size="14" color="`param_bigger 0.75 get_cpu ? color 'red' : param_bigger 0.5 get_cpu ? color 'yellow' : param_bigger 0.25 get_cpu ? color 'cyan' : color 'green'`" align="left" weight="bold" scroll="no" action="get_text '`get_cpu & param_cast percentage & param_cast int_trunc`%'"/>
<tooltip>Cpu Usage Percent</tooltip>
</define>

Το ερώτημα είναι εάν υπάρχει κατάλληλη σύνταξη, ώστε να συγχωνευτούν τα εν λόγω definitions, αρκεί το αποτέλεσμα να είναι ίδιο. Δηλαδή το text "CPU:" να παραμένει αχρωμάτιστο κατά την όποια μεταβολή της τιμής της cpu, ενώ η value να χρωματίζεται ...
 

Posted Mon 07 Jan 19 @ 7:23 am
Όχι
 

Posted Mon 07 Jan 19 @ 11:35 am
Ενώ θεωρητικά είναι απλό, πρακτικά μου έχει βγάλει την ψυχή εδώ και μία ώρα...

action="param_equal get_loaded_song bpm ? get_text 'Master Tempo' : get_text ''"

Κονώς, να εμφανίζεται το κείμενο: Master Tempo, όταν δεν έχουν αλλαχθεί τα BPM και να μην εμφανίζεται κείμενο, όταν αυτά έχουν αλλαχθεί (μέσω pitch)...


Ευχαριστώ εκ των προτέρων...
 

Posted Thu 10 Jan 19 @ 10:53 am
1) Στην εντολή σύγκρισης δεν συγκρίνεις κάτι. Με λόγια αντί για κώδικα ρωτάς:
Είναι ίσο το BPM ? Τότε "Master Tempo", αλλιώς κενό
Ίσο με τι;;;

2) Ακόμα κι αν κάνεις σύγκριση του original BPM με το τρέχον πλέκεις υπερβολικά τον κώδικα. Είναι προτιμότερο να ελέγξεις το pitch:

action="param_equal get_pitch 0 ? get_text 'Master Tempo' : get_text ''"

Ακόμα καλύτερα στην προκειμένη περίπτωση:
action="get_pitch_zero ? get_text 'Master Tempo' : get_text ''"

Επίσης, ΔΕΝ χρειάζεσαι το get_text "". Μπορείς είτε να γράψεις nothing είτε να το παραβλέψεις τελείως

Συνεπώς οι σωστές εντολές για αυτό που θες να κάνεις είναι:

1) action="param_equal get_pitch 0 ? get_text 'Master Tempo' : get_text ''"
2) action="param_equal get_pitch 0 ? get_text 'Master Tempo' : nothing
3) action="param_equal get_pitch 0 ? get_text 'Master Tempo'
4) action="get_pitch_zero ? get_text 'Master Tempo' : get_text ''"
5) action="get_pitch_zero ? get_text 'Master Tempo' : nothing
6) action="get_pitch_zero ? get_text 'Master Tempo'

Όλες είναι σωστές, αλλά εγώ προσωπικά θα χρησιμοποιούσα την τελευταία (για αυτό που καταλαβαίνω οτι θες να κάνεις)


 

Posted Thu 10 Jan 19 @ 12:03 pm
Σε ευχαριστώ πολύ, για μία ακόμη φορά...

Σχετικά με την πρότασή σου, επειδή έχω και άλλες παρόμοιες περιπτώσεις στο skin, ποια θα ήταν η ορθή σύνταξη της εντολής:

action="param_equal get_loaded_ song παράμετρος ? get_text 'κείμενο'"

Όπου παράμετρος, θα μπορεί να είναι (κυρίως) οποιαδήποτε από τα tags ενός κομματιού...
 

Posted Thu 10 Jan 19 @ 6:09 pm
Χωρίς να μπορώ να καταλάβω τι θες να κάνεις, ένα παράδειγμα σωστής σύνταξης είναι:

action="param_equal get_loaded_song 'artist' 'Avicii' ? get_text 'EDM Artist RIP'"
Την παράμετρο 'artist' πρέπει με κάτι να την συγκρίνεις ('Avicii')
 

Posted Thu 10 Jan 19 @ 6:45 pm
Κάνω κάποιες δοκιμές, ώστε να δω κατά πόσο "εξυπηρετούν". Παραδείγματα:

TAGS: Όταν π.χ. τα BPM του loaded_song είναι τα original (άρα δεν έχει πειραχθεί το pitch), να εμφανίζεται π.χ. το κείμενο "Master". Το αυτό, με την περίπτωση του Pitch, του Key, του Gain.

COMMANDS: Όταν έχει ενεργοποιηθεί (απ' τον controller) π.χ. το KeyLock, να εμφανίζεται π.χ. το αντίστοιχο κείμενο. Το αυτό με το VinylMode, το SlipMode, το AutoLoop, κ.α.

Σύνθετο παράδειγμα (επ 'αυτών) που προσπαθούσα σήμερα το μεσημέρι και δεν έβγαλα άκρη: Έστω ότι στο Deck A ήδη παίζει κομμάτι και κάνω upload στο Deck B το επόμενο κομμάτι. Αλλά τα original Keys τους δεν ταιριάζουν. Αυτό να το λάμβανα ως text στο Deck B, κοινώς "Key Not Match"...

Υ.Γ. Μην με πάρεις απ' τα μούτρα, απάντησε ψύχραιμα... :-)
 

Posted Thu 10 Jan 19 @ 9:02 pm
Μετά από μελέτη άλλων skins και αρκετές δοκιμές, αρκετά προβληματάκια και απορίες λύθηκαν… Απλά, Γιώργο – Μπάμπη, εάν έχετε το χρόνο και την διάθεση, δώστε μου διευκρινήσεις επί των ακόλουθων:

1. get_license: Η εντολή δεν εμφανίζει την σχετική άδεια…

2. <text … color="`is_battery false ? color 'green' : color '#c0c0c0'`" action="`is_battery true ? get_text 'SOURCE: Battery' : get_text 'SOURCE: AC'`"/>: Η εντολή δεν “λειτουργεί”, ούτε ως προς το 1 σκέλος (color), ούτε ως προς το 2ο (action).

3. get_loaded_song 'gain': Η εντολή δεν εμφανίζει το gain του κομματιού, όπως αυτό εμφανίζεται στα tags. Γενικά, ποια εντολή θα πρέπει να χρησιμοποιήσω ώστε να εμφανίζεται η τιμή του gain, πριν αυτή μεταβληθεί, εάν το AutoGain είναι ενεργοποιημένο?

4. <text … color="`get_pitch_zero ? color '#ffff00' : color '#4d4d00'`" action="get_text 'Master'"/>: Η χρωματική αλλαγή επιτυγχάνεται σωστά μόνο όταν χρησιμοποιηθεί το pitch-fader του skin. Στην περίπτωση που χρησιμοποιηθεί το pitch-fader του controller, δεν υφίσταται επαναφορά στο color '#ffff00'. Γιατί συμβαίνει αυτό και πως μπορεί να διορθωθεί?

5. <text … color="`param_equal gain 0.5 ? color 'green' : color 'red'`" action="`param_equal gain 0.5 ? get_text '+0.0db' : param_smaller gain 0.5 ? get_text '+%Pleveldb' : get_text '%Pleveldb'`"/>: Η χρωματική αλλαγή επιτυγχάνεται σωστά μόνο όταν χρησιμοποιηθεί το pitch-fader του skin. Στην περίπτωση που χρησιμοποιηθεί το pitch-fader του controller, δεν υφίσταται επαναφορά στο color 'green'. Γιατί συμβαίνει αυτό και πως μπορεί να διορθωθεί?

6. <text … color="`get_loaded_song 'key' true ? color 'green' : color '#c0c0c0'`" action="get_loaded_song 'key'"/>: Εντολή ίδιας φιλοσοφίας με την περίπτωση 4 & 5, αλλά στην συγκεκριμένη περίπτωση η μεταβολή δεν υφίσταται καθόλου. Γιατί συμβαίνει αυτό και πως μπορεί να διορθωθεί?

7. Προσπάθησα να βρω σχετικό script, ώστε όταν ενεργοποιείται το AutoLoop, να εμφανίζεται σχετικό κείμενο. Δεν βρήκα κάτι, για να το επιτύχω αυτό. Μπορεί να υλοποιηθεί τελικά?

8. Για τα % special textzone commands: %Ppitch και %Pleveldb δεν βρήκα κάτι “νεότερο”, του τύπου: action='get_something_via_script'. Δεν υφίστανται ή δεν πρόσεξα καλά?

Αυτά, προς το παρόν...
 

Posted Mon 14 Jan 19 @ 6:34 am
Theios Giorgos wrote :
Κάνω κάποιες δοκιμές, ώστε να δω κατά πόσο "εξυπηρετούν". Παραδείγματα:

TAGS: Όταν π.χ. τα BPM του loaded_song είναι τα original (άρα δεν έχει πειραχθεί το pitch), να εμφανίζεται π.χ. το κείμενο "Master". Το αυτό, με την περίπτωση του Pitch, του Key, του Gain.

COMMANDS: Όταν έχει ενεργοποιηθεί (απ' τον controller) π.χ. το KeyLock, να εμφανίζεται π.χ. το αντίστοιχο κείμενο. Το αυτό με το VinylMode, το SlipMode, το AutoLoop, κ.α.

Σύνθετο παράδειγμα (επ 'αυτών) που προσπαθούσα σήμερα το μεσημέρι και δεν έβγαλα άκρη: Έστω ότι στο Deck A ήδη παίζει κομμάτι και κάνω upload στο Deck B το επόμενο κομμάτι. Αλλά τα original Keys τους δεν ταιριάζουν. Αυτό να το λάμβανα ως text στο Deck B, κοινώς "Key Not Match"...

Υ.Γ. Μην με πάρεις απ' τα μούτρα, απάντησε ψύχραιμα... :-)


Δεν σε παίρνω από τα μούτρα... :P
1) Το αν έχει πειραχθεί το Pitch μπορείς να το δεις απ' το Pitch. Δεν χρειάζεται να συγκρίνεις τα BPM του tag με το τρέχων BPM. Και μάλιστα προγραμματιστικά αυτό απαιτεί περισσότερα resources καθώς συγκρίνεις δύο κείμενα και όχι αριθμούς.

2) Δεν υπάρχει τρόπος να ξέρεις αν κάτι άλλαξε από τον controller ή από το software/gui/skin. Όταν ενεργοποιείται το keylock είτε αυτό ενεργοποιηθεί από το skin είτε από τον controller είτε από το πληκτρολόγιο είναι το ίδιο και το αυτό. Το αν είναι το keylock ενεργοποιημένο ή όχι είναι απλό να το δεις καθώς όλα τα commands λειτουργούν και σαν queries (ερωτήματα)

3) Για σύνθετες λειτουργίες χρειάζεσαι σύνθετη σκέψη. Δεν υπάρχει προφανώς έτοιμο query για αυτό που λες αλλά μπορείς να το κάνεις ως εξής:
masterdeck ? get_key : param_equal '`deck master get_key` 'Cm' ? param_equal '`get_key`' 'Cm' ? get_text 'Match' : param_equal '`get_key`' 'Gm' ? get_text 'Match' : param_equal '`get_key`' 'Fm' ? get_text 'Match' : param_equal '`get_key`' 'Eb' ? get_text 'Match' : get_text 'Keys Don't Match' : param_equal '`deck master get_key` 'Gm' ? ...

Τι είναι όλο αυτό τώρα;
Στο πρώτο σκέλος ελέγχουμε αν το deck είναι master. Αν είναι τότε απλά "εκτυπώνουμε" το τρέχων κλειδί. Αν ΔΕΝ είναι, τότε προχωράμε:
1) Ρωτάμε αν το κλειδί του masterdeck είναι το Cm. Αν είναι, τότε
1A) Ρωτάμε αν το κλειδί του τρέχων deck είναι το Cm. Αν είναι τότε έχουμε match.
1Β) Αν δεν είναι, ρωτάμε αν είναι το Gm. Αν είναι έχουμε match.
1Γ) Aν δεν είναι τότε ρωτάμε αν είναι το Fm. Αν είναι έχουμε match.
1Δ) Αν δεν είναι τότε ρωτάμε αν είναι το Eb. Αν είναι έχουμε match.
1Ε) Aν δεν είναι κανένα από τα παραπάνω, τότε δεν έχουμε ταύτιση, οπότε εκτυπώνουμε "Keys Don't Match"
Στη συνέχεια προχωράμε στο επόμενο κλειδί (για το master deck) Gm και επαναλαμβάνουμε την διαδικασία. Οπότε όπως καταλαβαίνεις θα πρέπει να κάνεις copy/paste το μεγαλύτερο τμήμα του παραπάνω script άλλες 23 φορές και να προσαρμόσεις τα κλειδιά.

Απ' ότι γνωρίζω εσύ έχεις συνηθίσει τα κλειδιά οπότε καταλαβαίνεις τις συμβατότητες.

Για όποιον άλλο διαβάζει αυτό το νήμα θα το κάνω λίγο πιο εύκολο:
Στον κύκλο του Camelot, συμβατά είναι τα κλειδιά +/-1 + το major/minor του ίδιου αριθμού.
Δηλαδή για το 1Α, συμβατά είναι τα κλειδιά 12A, 1A, 1B & 2A

Οπότε το script γίνεται:
masterdeck ? get_harmonic :
param_equal '`deck master get_harmonic` '1Α' ?
param_equal '`get_harmonic`' '12Α' ? get_text 'Match' : param_equal '`get_harmonic`' '1Α' ? get_text 'Match' : param_equal '`get_harmonic`' '1Β' ? get_text 'Match' : param_equal '`get_harmonic`' '2Α' ? get_text 'Match' :
get_text 'Keys Don't Match' :
param_equal '`deck master get_harmonic` '2Α' ?
param_equal '`get_harmonic`' '1Α' ? get_text 'Match' : param_equal '`get_harmonic`' '2Α' ? get_text 'Match' : param_equal '`get_harmonic`' '2Β' ? get_text 'Match' : param_equal '`get_harmonic`' '3Α' ? get_text 'Match' :
get_text 'Keys Don't Match' :
param_equal '`deck master get_harmonic` '3Α' ?
param_equal '`get_harmonic`' '2Α' ? get_text 'Match' : param_equal '`get_harmonic`' '3Α' ? get_text 'Match' : param_equal '`get_harmonic`' '3Β' ? get_text 'Match' : param_equal '`get_harmonic`' '4Α' ? get_text 'Match' :
get_text 'Keys Don't Match' : ... κ.ο.κ.
 

Posted Mon 14 Jan 19 @ 1:05 pm
Theios Giorgos wrote :
1. get_license: Η εντολή δεν εμφανίζει την σχετική άδεια…

Η εντολή αυτή όντως λειτουργεί λίγο περίεργα καθώς δεν σχεδιάστηκε για χρήση σε skins.
Η σύνταξη της απαιτεί έλεγχο συγκεκριμένης άδειας. Για παράδειγμα:
get_license 'pro' ?
Επιστρέφει true όταν η τρέχουσα άδεια είναι PRO
Τα ορίσματα που δέχεται είναι pro, plus και le:
get_license 'pro' ?
get_license 'plus' ?
get_license 'le' ?

Theios Giorgos wrote :
2. <text … color="`is_battery false ? color 'green' : color '#c0c0c0'`" action="`is_battery true ? get_text 'SOURCE: Battery' : get_text 'SOURCE: AC'`"/>: Η εντολή δεν “λειτουργεί”, ούτε ως προς το 1 σκέλος (color), ούτε ως προς το 2ο (action).

Έχεις κάνει λάθος στην σύνταξη, και μάλιστα και στα δύο σκέλη.

Όταν ρωτάμε η σύνταξη είναι:
Ερώτηση ? Ενέργεια αν True : Ενέργεια αν False

Δεν κάνουμε σύνταξη:
Ερώτηση true ? this : that.

Οπότε:
color="`is_battery ? color '#c0c0c0' : color 'green'`" action="`is_battery ? get_text 'SOURCE: Battery' : get_text 'SOURCE: AC'`"

Σημείωση:
Υπάρχει η δυνατότητα αν θέλουμε να κάνουμε αρνητική ερώτηση ως εξής:
not Ερώτηση ? this : that
Οπότε μπορείς να γράψεις και αυτό:
color="`not is_battery ? color 'green : color '#c0c0c0'`" action="`is_battery ? get_text 'SOURCE: Battery' : get_text 'SOURCE: AC'`"


Theios Giorgos wrote :
3. get_loaded_song 'gain': Η εντολή δεν εμφανίζει το gain του κομματιού, όπως αυτό εμφανίζεται στα tags. Γενικά, ποια εντολή θα πρέπει να χρησιμοποιήσω ώστε να εμφανίζεται η τιμή του gain, πριν αυτή μεταβληθεί, εάν το AutoGain είναι ενεργοποιημένο?

Εδώ είναι από τις λίγες φορές που θα χρειαστείς την παλιά σύνταξη:
get_text '%level '

Theios Giorgos wrote :
4. <text … color="`get_pitch_zero ? color '#ffff00' : color '#4d4d00'`" action="get_text 'Master'"/>: Η χρωματική αλλαγή επιτυγχάνεται σωστά μόνο όταν χρησιμοποιηθεί το pitch-fader του skin. Στην περίπτωση που χρησιμοποιηθεί το pitch-fader του controller, δεν υφίσταται επαναφορά στο color '#ffff00'. Γιατί συμβαίνει αυτό και πως μπορεί να διορθωθεί?

Για να είναι το get_pitch_zero true, πρέπει το pitch να είναι ακριβώς 0.0000. Σε μερικούς controller παρόλο που κάνουν "κλικ" στη μέση ενδέχεται η πραγματική τιμή του Pitch που αναφέρουν να διαφέρει, π.χ 0.0100
Για αυτό το λόγο η εντολή get_pitch_zero δέχεται και όρισμα για την ακρίβεια της.
get_pitch_zero 0.05% ?
Το περίεργο με αυτή την εντολή είναι οτι μπορεί να σου επιστρέψει true όταν το pitch είναι π.χ. +3% αν το pitch_range είναι 100%
Με λίγα λόγια η ακρίβεια αφορά την ακρίβεια της διαδρομής του Pitch Fader και όχι του Tempo.

Αν θες ΑΠΟΛΥΤΗ ακρίβεια τότε υπάρχει λύση:
get_pitch_zero 'absolute' 0.05 ?

Σε αυτή την περίπτωση θα έχεις true όταν το Pitch είναι μικρότερο από +/-0.05% ανεξαρτήτως pitch_range
color="`get_pitch_zero 'absolute' 0.05 ? color '#ffff00' : color '#4d4d00'`"


Theios Giorgos wrote :
5. <text … color="`param_equal gain 0.5 ? color 'green' : color 'red'`" action="`param_equal gain 0.5 ? get_text '+0.0db' : param_smaller gain 0.5 ? get_text '+%Pleveldb' : get_text '%Pleveldb'`"/>: Η χρωματική αλλαγή επιτυγχάνεται σωστά μόνο όταν χρησιμοποιηθεί το pitch-fader του skin. Στην περίπτωση που χρησιμοποιηθεί το pitch-fader του controller, δεν υφίσταται επαναφορά στο color 'green'. Γιατί συμβαίνει αυτό και πως μπορεί να διορθωθεί?

Για τους ίδιους λόγους με παραπάνω. Το gain knob του controller δεν αναφέρει ακριβώς 0.5 αλλά μια τιμή πολύ κοντινή όπως 0.501
Εδώ η λύση είναι λίγο διαφορετική
color="`param_smaller gain 0.45 ? param_bigger gain 0.55 ? color 'green' : color 'red'`"

Theios Giorgos wrote :
6. <text … color="`get_loaded_song 'key' true ? color 'green' : color '#c0c0c0'`" action="get_loaded_song 'key'"/>: Εντολή ίδιας φιλοσοφίας με την περίπτωση 4 & 5, αλλά στην συγκεκριμένη περίπτωση η μεταβολή δεν υφίσταται καθόλου. Γιατί συμβαίνει αυτό και πως μπορεί να διορθωθεί?

Πρώτον όπως κατάλαβες ήδη το script σου έχει λάθος ερώτηση (το true είναι λάθος να υπάρχει)
Δεύτερον αντί να ελέγχεις τα κλειδιά, μπορείς να ελέγξεις κατευθείαν το key_modifier
color="`param_equal get_key_modifier 0 ? color 'green' : color '#c0c0c0'`"


Theios Giorgos wrote :
7. Προσπάθησα να βρω σχετικό script, ώστε όταν ενεργοποιείται το AutoLoop, να εμφανίζεται σχετικό κείμενο. Δεν βρήκα κάτι, για να το επιτύχω αυτό. Μπορεί να υλοποιηθεί τελικά?

Τι εννοείς με το autoloop ? Γενικά στο VirtualDj δεν υπάρχει διάκριση των Loops
Οπότε χρησιμοποιείς απλά το loop για να δεις αν τρέχει μια loop η όχι.


Theios Giorgos wrote :
8. Για τα % special textzone commands: %Ppitch και %Pleveldb δεν βρήκα κάτι “νεότερο”, του τύπου: action='get_something_via_script'. Δεν υφίστανται ή δεν πρόσεξα καλά?

Για το πρώτο υπάρχει η get_pitch. Για το δεύτερο όχι, δεν υπάρχει κάτι.

 

Posted Mon 14 Jan 19 @ 1:46 pm
Κατ’ αρχήν σε ευχαριστώ θερμά!

Είναι πραγματικά απίστευτες οι δυνατότητες που παρέχει το VDj, αρκεί (όπως έχω αναφέρει αρκετές φορές και στο παρελθόν) να κάτσει ο οποιοσδήποτε να ασχοληθεί ιδιαίτερα και εντατικά.
Σημείωση: Εάν ξαναδιαβάσω τι λέξη Serato ή RecordBox εδώ μέσα, θα αρπάξω το κουμπούρι και θα γίνει μακελειό! :-)

Είναι πραγματικά απίστευτη η υποστήριξή σου (και του Μπάμπη, κατά καιρούς), μία υποστήριξη, η οποία (τουλάχιστον στο αγγλικό forum που παρακολουθώ) δεν υφίσταται τόσο άμεση – "ορεξάτη" – ολοκληρωμένη από άλλους.

Επί των ερωτήσεών μου:

1. Για το θέμα εμφάνισης της άδειας, συνέταξα την ακόλουθη εντολή:
<text size="18" align="center" scroll="no" color="`get_license pro ? color 'green' : get_license plus ? color 'cyan' : get_license le ? color 'orange' : color 'red'`" action="`get_license pro ? get_text 'License: Pro' : get_license plus ? get_text 'License: Plus' : get_license le get_text 'License: LE' : get_text 'No License!'`"/>
Και φυσικά “δουλεύει” μία χαρά…

2. Δεν είχα αντιληφθεί σωστά την σύνταξη της εντολής για ερώτηση (Ερώτηση ? True : False). Όλα τέλεια πλέον…
Η μόνη “ερώτηση” που δεν μου λειτουργεί προς το παρόν, είναι η ακόλουθη:
action="`vinyl_mode 1 ? get_text 'Vinyl' : get_text 'Cd'`"/>
Γιατί?

3. Για το θέμα του pitch, η εντολή λειτούργησε σωστά, αλλά ως ακολούθως:
color="`get_pitch_zero 'absolute' 0.0001 ? color 'green' : color '#c0c0c0'`" format="%Ppitch%"/>
Βέβαια, δεν έχω καταφέρει ακόμη να αλλάζει χρώμα και όταν η τιμή είναι π.χ. μεγαλύτερη ή μικρότερη του 4% και του 8%, που επιθυμώ...

4. Το θέμα των κλειδιών για την απεικόνιση αρμονικής μίξης, είναι αρκετά πιο σύνθετο (αλλά απόλυτα κατανοητό). Έχω κάποια ιδέα για το πως θα μπορούσε να απλοποιηθεί όλη αυτή η σύνταξη, αλλά εξήγησέ μου πρώτα (αν μπορείς), όταν κάποιοι controllers διαθέτουν “Key Sync” πως ακριβώς αυτό λειτουργεί, ώστε να προκύψει το sync των κλειδιών?

5. Τέλος, υπάρχει τρόπος να κάνουμε συνδυασμό action?
Π.χ.: Έχω συντάξει την εντολή: color="`get_deck 1 ? color 'blue' : color '#808080'`" action="get_text 'DECK `get_deck`'"/>
Το ερώτημα είναι: Πώς θα τροποποιήσω την άνωθεν εντολή, ώστε όταν το deck 1 είναι is_audible, το text να κάνει blink?

Ευχαριστώ...
 

Posted Wed 16 Jan 19 @ 7:40 am
Και μία ερώτηση πιο πολύπλοκη, αλλά πολύ πιο ουσιώδης από τις άνωθεν...

Έστω ότι έχουμε μία “περιοχή”, η οποία απεικονίζει το DECK LEFT του skin, με π.χ.:
- Διαστάσεις: x=720 και y=240 (σταθερές).
- Θέση: x=+5 και y=+150 (σταθερή).

Στην εν λόγω περιοχή, εάν θεωρήσουμε ότι όλο το background είναι σταθερό – έτοιμο (άρα δεν απαιτείται να ορίσουμε γραφικά), θα περιλαμβάνονται (πλέον) μόνο τα δεδομένα των στοιχείων που το συνθέτουν, όπως π.χ.: texts και values.

Α. Αρχικά επιθυμώ σε αυτή την περιοχή να απεικονίζεται, είτε το Deck 1, είτε το Deck 3 (αναλόγως της επιλογής από τον εκάστοτε controller).

Β Κατόπιν επιθυμώ σε αυτή την περιοχή, να απεικονίζονται παραλλαγές, είτε του Deck 1, είτε του Deck 3 (αναλόγως της επιλογής από σχετικό button του skin).

Άρα, στο DECK LEFT, θα έχουμε (για παράδειγμα) τις κάτωθι δυνατές απεικονίσεις:

[Deck 1 / Layout 1] ή [Deck 1 / Layout 2], ή [Deck 1 / Layout 3] ή … ή [Deck 3 / Layout 1] ή [Deck 3 / Layout 2] ή [Deck 3 / Layout 3] ...

Το ερώτημά μου είναι πως ακριβώς θα πρέπει να χρησιμοποιήσω τα στοιχεία: deck, group, panel, window, stack (όποια από αυτά απαιτούνται), ώστε να επιτευχθούν οι άνωθεν απεικονίσεις, εγγράφοντας το λιγότερο δυνατό κώδικα (άρα και να υφίστανται σχετικές συντεταγμένες, κ.τ.λ.)…

Ευχαριστώ και πάλι...
 

Posted Wed 16 Jan 19 @ 1:24 pm
Theios Giorgos wrote :
2. Δεν είχα αντιληφθεί σωστά την σύνταξη της εντολής για ερώτηση (Ερώτηση ? True : False). Όλα τέλεια πλέον…
Η μόνη “ερώτηση” που δεν μου λειτουργεί προς το παρόν, είναι η ακόλουθη:
action="`vinyl_mode 1 ? get_text 'Vinyl' : get_text 'Cd'`"/>
Γιατί?

Βγάλε το 1... :
action="`vinyl_mode ? get_text 'Vinyl' : get_text 'Cd'`"

Theios Giorgos wrote :
3. Για το θέμα του pitch, η εντολή λειτούργησε σωστά, αλλά ως ακολούθως:
color="`get_pitch_zero 'absolute' 0.0001 ? color 'green' : param_bigger color '#c0c0c0'`" format="%Ppitch%"/>
Βέβαια, δεν έχω καταφέρει ακόμη να αλλάζει χρώμα και όταν η τιμή είναι π.χ. μεγαλύτερη ή μικρότερη του 4% και του 8%, που επιθυμώ...


color="`get_pitch_zero 'absolute' 0.0001 ? color 'green' : param_smaller -8 get_pitch ? color 'red' : param_smaller -4 get_pitch ? color 'orange' : param_bigger 8 get_pitch ? color 'red' : param_bigger 4 get_pitch ? color 'orange'`" format="%Ppitch%"/>

Theios Giorgos wrote :
4. Το θέμα των κλειδιών για την απεικόνιση αρμονικής μίξης, είναι αρκετά πιο σύνθετο (αλλά απόλυτα κατανοητό). Έχω κάποια ιδέα για το πως θα μπορούσε να απλοποιηθεί όλη αυτή η σύνταξη, αλλά εξήγησέ μου πρώτα (αν μπορείς), όταν κάποιοι controllers διαθέτουν “Key Sync” πως ακριβώς αυτό λειτουργεί, ώστε να προκύψει το sync των κλειδιών?

Χρησιμοποιεί τους ίδιους κανόνες που σου ανέφερα παραπάνω. +/-1 Key +Major/Minor (Ή αλλιώς ο κανόνας του Τ στον κύκλο του camelot)
Η εντολή που κάνει το sync είναι απλή (key_sync) και μεταβάλει το κλειδί στον ελάχιστο βαθμό ώστε να κάνει τα δύο κλειδιά συμβατά (αν πρέπει να κάνει -4 ή +8 για να ταιριάξει το key κάνει -4 για παράδειγμα)


Theios Giorgos wrote :
5. Τέλος, υπάρχει τρόπος να κάνουμε συνδυασμό action?
Π.χ.: Έχω συντάξει την εντολή: color="`get_deck 1 ? color 'blue' : color '#808080'`" action="get_text 'DECK `get_deck`'"/>
Το ερώτημα είναι: Πώς θα τροποποιήσω την άνωθεν εντολή, ώστε όταν το deck 1 είναι is_audible, το text να κάνει blink?


color="`get_deck 1 ? is_audible ? blink ? color 'blue' : color '#808080' : color 'blue' : color '#808080'`" action="get_text 'DECK `get_deck`'"
 

Posted Fri 18 Jan 19 @ 9:44 am
Theios Giorgos wrote :
Και μία ερώτηση πιο πολύπλοκη, αλλά πολύ πιο ουσιώδης από τις άνωθεν...

Έστω ότι έχουμε μία “περιοχή”, η οποία απεικονίζει το DECK LEFT του skin, με π.χ.:
- Διαστάσεις: x=720 και y=240 (σταθερές).
- Θέση: x=+5 και y=+150 (σταθερή).

Στην εν λόγω περιοχή, εάν θεωρήσουμε ότι όλο το background είναι σταθερό – έτοιμο (άρα δεν απαιτείται να ορίσουμε γραφικά), θα περιλαμβάνονται (πλέον) μόνο τα δεδομένα των στοιχείων που το συνθέτουν, όπως π.χ.: texts και values.

Α. Αρχικά επιθυμώ σε αυτή την περιοχή να απεικονίζεται, είτε το Deck 1, είτε το Deck 3 (αναλόγως της επιλογής από τον εκάστοτε controller).

Β Κατόπιν επιθυμώ σε αυτή την περιοχή, να απεικονίζονται παραλλαγές, είτε του Deck 1, είτε του Deck 3 (αναλόγως της επιλογής από σχετικό button του skin).

Άρα, στο DECK LEFT, θα έχουμε (για παράδειγμα) τις κάτωθι δυνατές απεικονίσεις:

[Deck 1 / Layout 1] ή [Deck 1 / Layout 2], ή [Deck 1 / Layout 3] ή … ή [Deck 3 / Layout 1] ή [Deck 3 / Layout 2] ή [Deck 3 / Layout 3] ...

Το ερώτημά μου είναι πως ακριβώς θα πρέπει να χρησιμοποιήσω τα στοιχεία: deck, group, panel, window, stack (όποια από αυτά απαιτούνται), ώστε να επιτευχθούν οι άνωθεν απεικονίσεις, εγγράφοντας το λιγότερο δυνατό κώδικα (άρα και να υφίστανται σχετικές συντεταγμένες, κ.τ.λ.)…

Ευχαριστώ και πάλι...

Εγώ θα το έκανα ως εξής:

<define class="LeftDeckPanel">
<textzone ... />
<button ... />
...
</define>

Αυτό είναι ένα PANEL που ζωγραφίζει το Left Deck

Μετά στο skin θα έγραφα:
<deck deck="1"><panel class="LeftDeckPanel" visible="deck 1 leftdeck"/></deck>
<deck deck="3"><panel class="LeftDeckPanel" visible="deck 3 leftdeck"/></deck>


Τώρα υπάρχει και κάτι πιο ενδιαφέρον:
Έστω ότι όλα τα decks έχουν ακριβώς τα ίδια γραφικά (δηλαδή είναι cloned και όχι mirrored)

<define class="DeckPanel">
<textzone ... />
<button ... />
...
</define>

Αυτό είναι ένα PANEL που ζωγραφίζει ENA Deck (σαν σημείο αναφοράς για τις συντεταγμένες ας πούμε οτι είναι το deck 1)

Μετά στο skin θα έγραφα:
<deck deck="1"><panel class="DeckPanel" visible="deck 1 leftdeck"/></deck>
<deck deck="3"><panel class="DeckPanel" visible="deck 3 leftdeck"/></deck>
<deck deck="2"><panel class="DeckPanel" visible="deck 2 rightdeck" x="+5+900" y="+150"/></deck>
<deck deck="4"><panel class="DeckPanel" visible="deck 4 rightdeck" x="+5+900" y="+150"/></deck>

Σημείωση:
Αν κάθε deck έχει περισσότερα από 1 Layouts τότε:

<define class="DeckLayout1">
<textzone />
<button />
...
</define>
<define class="DeckLayout2"
...
</define>
...

<define class="DeckPanel">
<panel class="Layout1" visible="condition1"/>
<panel class="Layout2" visible="condition2"/>
<panel class="Layout3" visible="condition3"/>
<panel class="Layout4" visible="condition4"/>
....
</define>

Και μετά όπως παραπάνω

<deck deck="1"><panel class="DeckPanel" visible="deck 1 leftdeck"/></deck>
<deck deck="3"><panel class="DeckPanel" visible="deck 3 leftdeck"/></deck>
<deck deck="2"><panel class="DeckPanel" visible="deck 2 rightdeck" x="+5+900" y="+150"/></deck>
<deck deck="4"><panel class="DeckPanel" visible="deck 4 rightdeck" x="+5+900" y="+150"/></deck>
 

Posted Fri 18 Jan 19 @ 9:54 am
16%