Quick Sign In:  

Forum: Greek Forum

Topic: Script Challenge...

Dieses Thema ist veraltet und kann veraltete oder falsche Informationen enthalten.

Έστω ότι έχουμε το Α κομμάτι, στο οποίο έχουμε δημιουργήσει ένα POI, με NAME: Cut, TYPE: Remix Point, CUE: Marker Only.
Το εν λόγω POI βρίσκεται π.χ. στο 256 beat του κομματιού και μας υποδεικνύει ότι στο συγκεκριμένο σημείο υφίσταται μία “πόρτα”, η οποία ενδείκνυται για αλλαγή (“κοφτή”).

Έστω ότι έχουμε το Β κομμάτι, στο οποίο έχουμε δημιουργήσει ένα πρώτο POI, με NAME: Cue1, TYPE: HotCue, CUE: Cue1. Το εν λόγω POI βρίσκεται π.χ. στο 1 beat του κομματιού, όπου όπου αρχίζει η “μπότα”.
Και ένα δεύτερο POI, με NAME: Cue2, TYPE: HotCue, CUE: Cue2. Το εν λόγω POI βρίσκεται π.χ. στο 32 beat του κομματιού, όπου αρχίζουν τα φωνητικά.

Θεωρούμε ότι το κομμάτι Α βρίσκεται On-Air και θέλουμε να επιτύχουμε μίξη, κατά την οποία το κομμάτι B να ξεκινήσει να παίζει από το Cue1 εκείνη την χρονική στιγμή, ώστε το Cue2 να ταυτιστεί με το Cut.

Στην συγκεκριμένη περίπτωση, το κομμάτι Β θα πρέπει να ξεκινήσει να παίζει από το Cue1 στο 256 – 32 = 224 beat του A κομματιού, ώστε μετά από 32 beats (όπου μπαίνουν τα φωνητικά στο B κομμάτι) να συμπέσει με το Cut point του A κομματιού.

Το ζητούμενο, λοιπόν, είναι ο κώδικας (ο οποίος θα αντιστοιχεί σε κάποιο text ή γραφικό), ο οποίος θα μας υποδεικνύει (εάν υφίστανται οι άνωθεν προϋποθέσεις), πότε θα πρέπει να ξεκινήσει να παίζει το Β κομμάτι.

Έκανα κάποιες δοκιμές, χρησιμοποιώντας την εντολή %PBnextcue, αλλά δεν πέτυχα αυτό που ήθελα… Καμιά ιδέα?
 

geposted Tue 03 Sep 19 @ 7:15 am
djpap63PRO InfinityMember since 2010
Στο Α κομματι δοκιμασε ενα cue με action στα 224 beat "play deck_2"

Δεν το εχω δοκιμασει αλλα εκει παει το μυαλο μου
 

geposted Tue 03 Sep 19 @ 8:10 am
DjPap63 αυτό θα μπορούσε να γίνει μόνο για την συγκεκριμένη περίπτωση. Εγώ αναφέρομαι σε όλες τις περιπτώσεις, όπου υφίστανται next poi επί των κομματιών... Πέραν αυτού, δεν επιθυμώ κάτι το "αυτόματο", αλλά μία ένδειξη (text ή graphics), η οποία να με ενημερώνει για το πότε θα πρέπει να "μπει" το 2ο κομμάτι...
 

geposted Tue 03 Sep 19 @ 8:20 am
PANOSVPRO InfinityMember since 2007
αν και ειμαι παντελως ασχετως απο αυτο που λετε επικροτω την υπαρξη τοπικ για αναζητηση script! σκεφτομουν και γω να το κανω!
 

geposted Tue 03 Sep 19 @ 9:54 am
Από τη στιγμή που στο κομμάτι Α το σημείο εξάρτησης είναι marker only, δεν υπάρχει κανένας τρόπος καθώς μόνο οι πληροφορίες των POI με Cue = Cue X είναι προσπελάσιμες μέσω script.

Ο μοναδικός τρόπος θα ήταν να τοποθετείτε χειροκίνητα κάποιο συγκεκριμένο hotcue (π.χ. hotcue 20)
Τότε τα υπόλοιπα είναι εύκολα...
 

geposted Tue 03 Sep 19 @ 9:55 am
Δε νομίζω ότι θα "κολλήσουμε" στο είδος του POI... Έστω, λοιπόν, ότι το σημείο "Cut" στο Α κομμάτι είναι το Cue5... Θα μπορούσα να χρησιμοποιήσω την εντολή param_equal σε συνδυασμό με το %PBnextcue του Α κομματιού και το %PBnextcue του Β κομματιού?
 

geposted Tue 03 Sep 19 @ 10:06 am
get_text '%PBtocue5' & param_cast int
Αυτό σου δίνει ένα ακέραιο αριθμό με την απόσταση μέχρι το cue 5
Οπότε μπορείς να το συγκρίνεις με άλλο ακέραιο και γενικά να το κάνεις οτι θέλεις.

ΔΕΝ θέλεις το nextcue γιατί το nextcue δεν είναι απαραίτητα το σημείο "εξόδου"

Επίσης αντί του %PBnextcue υπάρχει το πολύ πιο εύκολο cue_countdown (και αντίστοιχα το cue_countup)

Επίσης κάτι ακόμα που μπορεί να χρησιμοποιηθεί για άλλους σκοπούς (όσον αφορά τα cues) είναι το cue_pos (π.χ. cue_pos 5 mseconly)
 

geposted Tue 03 Sep 19 @ 12:18 pm
Γιώργη σε ευχαριστώ πολύ... Διάβασε λίγο το σκεπτικό μου και εάν θες πες γράψε μου την γνώμη σου...

Συνήθως (και ιδίως στην EDM) δημιουργώ τα κάτωθι POI:

- Cue 1 όταν ξεκινάει το κομμάτι, γιατί κάποια κομμάτια μπορεί να έχουν "άσχετη" εισαγωγή.
- Cue 2 όταν ξεκινάει η "μπότα" του κομματιού.
- Cue 3 όταν ξεκινάει η μελωδία ή τα φωνητικά του κομματιού.
- Cue 4 όταν ξεκινάει το refrain.

Να σημειώσω ότι τα Cues θα μπορούσαν να είναι περισσότερα, αλλά επέλεξα μόνο 4 στο σύνολο, καθότι η Denon MC6000Mk2 (με την οποία ξεκίνησα το Digital Djing) διαθέτει μόνο 4 pads. Άρα, η "αμεσότητα" είναι περιορισμένη, έναντι άλλων controllers που διαθέτουν 8 pads...

Εφόσον τα 4 πρώτα pads χρησιμοποιούνται (άμεσα) κατά περίπτωση και περίσταση, δεν υπάρχει "πρόβλημα" στο να χρησιμοποιήσω το επόμενο Cue ως "σημείο ένδειξης αλλαγής". Το "πρόβλημα", όπως το διαστασιολογώ πλέον, είναι ότι θα πρέπει "αναγκαστικά" να είναι το Cue 5 (ή το Cue 6, κ.ο.κ), εφόσον η εντολή θα συνταχθεί με βάση αυτό. Άρα, εάν έχω 2 "σημεία ένδειξης αλλαγής" ή περισσότερα, τι κάνω?

Εδώ μία λύση νομίζω ότι θα ήταν να υπάρξει μία προσθήκη στα scripts, ώστε πέρα από το cue_countdown, να υπάρχει το savedloop_countdown ή το action_countdown ή το remix_countdown, κ.ο.κ. Κατ' αυτόν τον τρόπο, δεν θα ήταν απαραίτητο να αντιστοιχηθεί το όποιο "σημείο ένδειξης αλλαγής" (ή οποιοδήποτε άλλο σημείο ενδιαφέροντος) αναγκαστικά σε Cue. Το countdown θα λειτουργούσε απολύτως ικανοποιητικά και ως "marker only", με ότι αυτό θετικά θα συνεπαγόταν...

Λοιπόν, ποια η γνώμη σου?

Πέραν αυτού και επί του παρόντος, ποια θα έπρεπε να είναι η σύνταξη της εντολής, κάνοντας χρήση του script: cue_countdown? Αυτό που με μπερδεύει είναι ο προσδιορισμός των decks...
 

geposted Tue 03 Sep 19 @ 4:12 pm
Έχει ήδη ζητηθεί να δημιουργηθεί κάποιος τρόπος ώστε όλες οι πληροφορίες όλων των POI να είναι προσπελάσιμες μέσω VDJ script.

Τώρα αυτό που ζητάς εξαρτάται που θα το βάλεις και αν θα είναι "global" ή "per deck"

Γενικά δεν θα έπρεπε να σε μπερδεύει. Έστω οτι παίζει το deck 1
Σε ένα custom button του deck 1 βάζεις εντολή cue_countdown και όνομα query. (ή σε ένα label κτλ)
Όπως παίζει το κομμάτι βλέπεις πόσα beats υπολείπονται μέχρι το επόμενο cue ή μέχρι το τέλος.
Όταν το νούμερο αυτό γίνει π.χ. 32 είναι η ώρα να ξεκινήσεις το άλλο deck.

Αν τώρα θες αυτή η πληροφορία να εμφανίζεται στο άλλο deck (σε αυτό που είναι έτοιμο να παίξει, και όχι αυτό που παίζει) τότε έχουμε θέμα.
Όχι με το πως θα συντάξεις την εντολή, αλλά με το πως θα ξέρει το πρόγραμμα πιο είναι το "άλλο" deck.
Έτσι λοιπόν δοκίμασε το εξής:
<text action="loaded ? masterdeck ? get_text '' : param_bigger 36 `deck master cue_countdown & param_cast int` ? get_text 'WAIT' : param_bigger 33 `deck master cue_countdown & param_cast int` ? deck master cue_countdown & param_cast int & param_add -33 : param_bigger 32 `deck master cue_countdown & param_cast int` ? get_text 'GO' : get_text 'ΒΥΕ ΒΥΕ'"/>
Ελπίζω να καταλαβαίνεις τι κάνει... :P
To "πρόβλημα" είναι οτι αν παίζει το deck 1 (master deck) και τα deck 2 & 4 είναι φορτωμένα και σε αναμονή, το κείμενο θα εμφανιστεί ίδιο και στα δύο deck.
Θεωρητικά θα μπορούσες να εμπλέξεις και το PFL για να εμφανίζεται το κείμενο μόνο αν το deck είναι σε pfl, αλλά δεν ξέρω πόσο σίγουρη λύση είναι αυτή (ανάλογα με το στυλ παιξίματος του καθενός)
 

geposted Tue 03 Sep 19 @ 6:25 pm
Γιώργο...

Κατ' αρχήν θεωρώ πιο ορθό η πληροφορία για το πότε πρέπει να εκκινήσει το κομμάτι σε αναμονή να βρίσκεται στο "deck area" του κομματιού σε αναμονή και όχι σε αυτό του κομματιού που βρίσκεται ήδη on-air. Αυτό, όπως ανέφερες, είναι το "δύσκολο" θέμα. Και ερωτώ: Κάνοντας εξαρχής χρήση της εντολής: masterdeck_auto ή της εντολής: is_audible στον κώδικα, δεν βοηθάει καλύτερα, έναντι του pfl?

Από κει και πέρα...

Στον κώδικα που έγραψες (και σε ευχαριστώ πολύ) έχεις τον περιορισμό των 32beats, γεγονός που όπως αντιλαμβάνεσαι δεν εξυπηρετεί. Και το ερώτημα που θέτω είναι: Πως θα πρέπει (αρχικά) να συντάξουμε τον κώδικα, ώστε να αντικαταστήσουμε το 32, με το cue_countdown & param_cast int του deck που δεν είναι master?
 

geposted Wed 04 Sep 19 @ 7:07 am
Αυτό που ζητάς με τον τρόπο που το ζητάς (εκτός κι αν το αντιλαμβάνομαι εγώ λάθος) ξεφεύγει όχι μόνο από τις δυνατότητες του VirtualDJ αλλά και από τις δυνατότητες της τεχνητής νοημοσύνης (προς το παρών)

Μπορεί εσύ ο Γιώργος να έχεις συγκεκριμένο τρόπο παιξίματος και με τα κατάλληλα εργαλεία το πρόγραμμα να έρθει πιο κοντά στη ρουτίνα σου, αλλά είναι αδύνατο το πρόγραμμα να μαντέψει πιο θα είναι το επόμενο deck.

Τι ξέρει το πρόγραμμα:
1) Ποιο ή ποια deck είναι στον αέρα
2) Ποιο deck είναι το master (είτε αυτόματα είτε χειροκίνητα)
3) Ποιο ή ποια deck είναι επιλεγμένα στα ακουστικά.
4) Ποιο ή ποια deck παίζουν
5) Ποιο ή ποια deck είναι σταματημένα

Πρέπει με βάση αυτές τις πληροφορίες να φτιάξεις πρώτα ένα αλγόριθμο ώστε το πρόγραμμα να μαντεύει το επόμενο deck.
Θεωρητικά εξαιρούμε το masterdeck και θεωρούμε οτι αυτό είναι το deck πάνω στο οποίο θα μιξάρεις το επόμενο κομμάτι. Άρα το masterdeck είναι το απερχόμενο deck.
Ποιο είναι το επερχόμενο;;;

Φτιάξε πρώτα ένα αλγόριθμο (πως δηλαδή να βρίσκει το πρόγραμμα το επόμενο deck - πως να προβλέπει την ρουτίνα σου - αποκλειστικά τη δική σου) και μετά περνάμε και στον κώδικα.

Τώρα έγραψες και κάτι άλλο που δεν κατάλαβα...
Λες οτι η εντολή που σου έδωσα έχει τον περιορισμό των 32 beats. Αυτό δεν ζήτησες;;; Να ανάβει μια ένδειξη πριν τα τελευταία 32 beats για να ξεκινήσεις το επόμενο κομμάτι;;;
Σημείωση οτι αυτά τα 32 beats μπορεί να είναι η απόσταση από το επόμενο cue ή από το τέλος.

Κι αν θες διαφορετικές τιμές, δηλαδή να ανάβει η ένδειξη λίγο πριν τα 64, λίγο πριν τα 32, λίγο πριν τα 16, λίγο πριν τα 8 και λίγο πριν τα 4 και αυτό γίνεται. Απλά επεκτείνεις τον παραπάνω κώδικα...

Αναφέρεις το cue_countdown του deck που δεν είναι master (του επερχόμενου κομματιού δηλαδή). Τι χρησιμότητα έχει αυτό; Αν φορτώσεις ένα κομμάτι που έχει ένα hotcue στην αρχή (και τίποτα άλλο) το cue_countdown θα δίνει μια τιμή του τύπου 402,75
Αν φορτώσεις ένα κομμάτι με 2-3 hotcues οι τιμές που θα σου δίνει θα είναι πραγματικά "οτι να 'ναι"

Μην με παρεξηγήσεις, προσπαθώ να καταλάβω τι λογική σου...
Τα beats που υπολείπονται (από ένα hotcue ή από το τέλος) του απερχόμενου κομματιού έχουν μια χρησιμότητα, οκ. Του επερχόμενου;;;
Ακόμα κι αν τα συγκρίνεις μεταξύ τους (που τεχνικά είναι εφικτό) τι πληροφορία προσμένεις να πάρεις; Πότε δηλαδή θα πρέπει να ξεκινήσεις την μίξη σου;;;
Όταν τα υπολειπόμενα beats του απερχόμενου ισούνται με τί;;;

 

geposted Wed 04 Sep 19 @ 12:58 pm
Δεν σε παρεξηγώ, το αντίθετο μάλιστα! Θα το προσπαθήσω "εικονικά"...



Έστω ότι έχουμε το 1ο κομμάτι, το οποίο: Στο 1ο beat ξεκινάει η "μπότα", στο 16ο beat ξεκινάνε τα φωνητικά (vocals) και στο 48o beat τελειώνει η μουσική φράση και είναι το "σημείο αλλαγής" (Cut).

Έστω ότι έχουμε το 2ο κομμάτι, το οποίο (χάριν ευκολίας): Στο 1ο beat ξεκινάει η "μπότα" και στο 16ο beat ξεκινάνε τα φωνητικά (vocals).

Η "ιδεατή" μίξη αυτών των 2 κομματιών, απεικονίζεται στην κάτωθι εικόνα...



Στην εικόνα παρατηρούμε ότι το "σημείο αλλαγής" (Cut) του 1ου κομματιού, συμπίπτει με το σημείο όπου ξεκινάνε τα φωνητικά στο 2ο κομμάτι. Σημείωση: Επειδή το "Cut" επικαλύπτεται από το "Vocals", το έχω κυκλώσει.
Σε αυτή την περίπτωση, το 2ο κομμάτι ξεκινάει και παίζει (ταυτόχρονα) 16 beats πριν το σημείο "Cut". Όταν φτάσουμε στο σημείο "Cut", κόβουμε το 1ο κομμάτι, ενώ μπαίνουν τα φωνητικά του 2ου κομματιού.
Έτσι επιτυγχάνεται μία "φωνητική συνέχεια" (π.χ. τελείωμα φωνητικού refrain 1ου κομματιού, έναρξη φωνητικού refrain 2ου κομματιού), η οποία μπορεί μεν να επιτευχθεί και με "κοφτή" αλλαγή (τρόπος ο οποίος χρησιμοποιείται κατά κόρον στα ελληνικά), αλλά δεν είναι αποδεκτός στην EDM.

Επί του κώδικα...

1. Γνωρίζουμε πιο Deck ήδη παίζει, είτε μέσω του masterdeck_auto ή μέσω του is_audible.
2. Μπορούμε να υπολογίσουμε τα beats που υπολείπονται μέχρι το σημείο Cut στο 1ο κομμάτι (αρκεί το κομμάτι να έχει περάσει από το σημείο Vocals), με την χρήση του cue_countdown.
3. Μπορούμε να υπολογίσουμε τα beats που υπολείπονται μέχρι το σημείο Vocals στο 2ο κομμάτι, επίσης με την χρήση του cue_countdown.
4. Όταν τα δύο (1ου και 2ου κομματιού) cue_countdown είναι equal, τότε θα πρέπει να ξεκινάει το 2ο κομμάτι.
5. Εφόσον "βρεθεί" αυτός ο κώδικας, τότε είναι θέμα πρόσθεσης beats, ώστε να λαμβάνουμε την ανάλογη προειδοποίηση (μερικά beats πριν).

Ένα "προσεγγιστικό" παράδειγμα (το οποίο αποδίδει την ειδοποίηση χωρίς προειδοποίηση)...

action="loaded ? masterdeck ? param_equal `deck 1 cue_countdown & param_cast int` `deck 2 cue_countdown & param_cast int` ? get_text 'NOW' : get_text ' ' "

Μήπως τώρα βοήθησα λίγο παραπάνω?
 

geposted Wed 04 Sep 19 @ 3:50 pm
Να συμπληρώσω ότι αυτού του είδους η αλλαγή, δεν είναι απαραίτητο να "ενώνει" μόνο refrain, αλλά και μουσικές (χωρίς φωνητικά) φράσεις και άλλα πολλά. Είναι δε επιθυμητή από αρκετούς Digital Djs επί της EDM, καθότι υφίσταται μίξη (για 8 ή 16 ή 32 ή 64 beats) και όχι "κοφτή" αλλαγή, με ότι αυτό θετικά συνεπάγεται.

Το έχω επιχειρήσει κάποιες φορές, το ακουστικό αποτέλεσμα είναι άρτιο, άλλα χωρίς "εργαλεία", θα πρέπει να κοιτάς αποσβολωμένος το Rhythemzone, ώστε οπτικά να δεις (εάν μπορείς) πότε συμπίπτει π.χ. το "Cut" με το "Vocals", ώστε να ξεκινήσεις το επόμενο κομμάτι on-time. Και αυτό, όπως είναι φυσικό, είναι δύσκολο έως ακατόρθωτο...

Κάπως έτσι μου δημιουργήθηκε και η ιδέα για τον συγκεκριμένο κώδικα...
 

geposted Wed 04 Sep 19 @ 4:37 pm
Θα σου γράψω αναλυτικότερα (περί του κώδικα κτλ) αργότερα, αλλά τώρα αυτό που θέλω να σου πω είναι οτι αυτός ο τρόπος μίξης σίγουρα δεν απαιτεί να κοιτάς όλη την ώρα τις κυματομορφές... Μιξάραμε έτσι και πριν τις κυματομορφές, και με αναλογικά μέσα κτλ.
Αυτό που θέλει αυτός ο τρόπος μίξης είναι ΚΑΤΑΝΟΗΣΗ της δομής των κομματιών beats, bars, phrases, verses κτλ.
Αν κάποιος κατανοεί την δομή τότε του είναι πανεύκολο στο δεύτερο μισό ενός ρεφρέν να πατήσει το play για να εισάγει στο σωστό χρόνο τραγούδι με 32 beats εισαγωγή :) :P
Φυσικά και αυτό δεν το λέω για εσένα, αλλά για αυτούς που μας διαβάζουν... ;)

Υ.Γ.: Και τα περισσότερα Ελληνικά πλέον δεν μιξάρονται με κοφτές αλλαγές... Αλλά και κοφτές να κάνεις πρέπει να είσαι στο σωστό σημείο του bar/phrase/verse για να πετύχεις σωστό/καλό αποτέλεσμα!
 

geposted Wed 04 Sep 19 @ 7:58 pm
Δεν θα διαφωνήσω μαζί σου, αρκεί το εκάστοτε κομμάτι να προσφέρεται (μελωδική γραμμή, φωνητικά, κ.α.) για αυτού του είδους τις αλλαγές. Όταν όμως αυτό δεν ισχύει (π.χ. Deep & Progressive House και όχι μόνον) ή το κομμάτι είναι φρεσκαδούρα και δεν το γνωρίζεις καλά, τότε τα πράγματα αλλάζουν...

Όπως και να χει, αναμένω τις προτάσεις σου επί του κώδικα...
 

geposted Wed 04 Sep 19 @ 8:31 pm
<define class="txt_Next_Poi_C" classdeck="1" visibility="deck 2 play>
<size width="100" height="24"/>
<text font="Segoe UI" size="24" align="center" scroll="no" color="#c0c0c0" action="param_equal `deck 1 cue_countdown & param_cast int` `deck 2 cue_countdown & param_cast int` ? get_text 'GO' : get_text ' '"/>
<tooltip>Mix On Poi</tooltip>
</define>
<define class="txt_Next_Poi_C" classdeck="2" visibility="deck 1 play>
<size width="100" height="24"/>
<text font="Segoe UI" size="24" align="center" scroll="no" color="#c0c0c0" action="param_equal `deck 1 cue_countdown & param_cast int` `deck 2 cue_countdown & param_cast int` ? get_text 'GO' : get_text ' '"/>
<tooltip>Mix On Poi</tooltip>
</define>

Αυτό, για αρχή, "δουλεύει", αν και αισθάνομαι πως έτσι όπως είναι η σύνταξη, πάω από Αθήνα στην Πάτρα, μέσω Θεσσαλονίκης... Και βέβαια, αφορά μόνον 2 decks, χωρίς "προειδοποίηση". Θέλει δουλίτσα ακόμη...
 

geposted Thu 05 Sep 19 @ 6:57 am


(Alte Themen und Foren werden automatisch geschlossen)