ελληνική μουσική
    Η Ελληνική Μουσική Κοινότητα από το 1997

    μετατροπή τόνου σε ήχο οργάνου

    analogion
    22.10.2005, 06:43
    Χαίρετε.

    Έχω το εξής πρόβλημα, αν μπορείτε να με βοηθήσετε: Θέλω να ξέρω αν υπάρχει πρόγραμμα έστω και αλγόριθμος που να μετατρέπει έναν ημιτονοειδή ήχο (π.χ. έναν τόνο στα 440Hz) σε ήχο οργάνου· δηλ. να δημιουργεί αυτόματα τις αρμονικές του οργάνου με τα όποια σχετικά πλάτη.

    Με άλλα λόγια η είσοδος θα είναι απλός τόνος μιας συχνότητας και η έξοδος θα είναι ο ήχος ενός οργάνου (π.χ. κιθάρας ή και midi) στην ίδια βασική συχνότητα με τον εισαχθέντα τόνο.

    Ευχαριστώ,
    Παναγιώτης.


    pclos
    22.10.2005, 10:57
    den nomizw oti yparxei kati tetoio! an kai to spoydaiotero provlhma sthn
    texnhth anaparagwgh fysikwn organwn den einai to swma toy hxoy,alla to
    attack dld to xekinhma toy hxoy(allo pena,allo daxtylo,allo peristomio,allo
    doxari)px to swma twn violiwn kai twn pneystwn einai panw katw to idio(polla
    organa!) alla h xarakthristikh diafora toy hxoy einai h arxh(attack)tnx
    analogion
    22.10.2005, 11:11
    Δεν ενδιαφέρομαι να βγάζω 100% π.χ. κιθάρα, αλλά κάτι που να μοιάζει π.χ. με κιθάρα. Ο λόγος είναι ότι ο σκέτος τόνος είναι βαρετός και εκνευριστικός στο αυτί.

    Μια μέθοδο που εφάρμοσα για την φωνή, αλλά δεν με ικανοποίησε αρκετά, είναι ότι έκανα φασματική ανάλυση π.χ. στο "αααα", και παρήγαγα τις αρμονικές με τα σχετικά πλάτη από την ανάλυση για την συχνότητα του τόνου που ήθελα. Επειδή δεν μου άρεσαν τα αποτελέσματα δεν το έχω δοκιμάσει το ίδιο με φασματική ανάλυση π.χ. κιθάρας. Για αυτό ήμουν περίεργος αν κάποιος έχει παρόμοιες ανησυχίες.

    Ο σκοπός που το θέλω είναι ότι έχω φτιάξει ένα πρόγραμμα σε MATLAB για να παίζει τις κλίμακες Βυζαντινής Μουσικής, και θα ήθελα να βελτιώσω τον ήχο του.

    Παναγιώτης.
    pclos
    22.10.2005, 11:26
    den gnwrizw to matlab alla an einai programma anaparagwghs hxwn,giati den allazeis to wave (sine,triangle klp)me kapoio sample fysikoy hxoy?yparxoyn ta panta pleon!kai fwnes gia kalytero apotelesma. yparxei kai h ekdoxh toy na triggareis kapoio stand alone sampler(nomizw yparxei ena akai,oxi vst).an mu peis perissotera gia to matlab isws kati ginei.dimitrhs
    analogion
    22.10.2005, 20:12
    Γεια σου Δημήτρη.

    Είμαι άσχετος με τα samplers, αλλά θα το ερευνήσω το θέμα.

    Για το "an mu peis perissotera gia to matlab isws kati ginei", θα με βόλευε π.χ. ακόμη και ένας αλγόριθμος υλοποιημένος σε γλώσσα C που να κάνει αυτό που ζητώ (τόνος στην είσοδο, ήχος οργάνου στην ίδια βασική συχνότητα με τον τόνο στην έξοδο). Πιστεύω να μπορεί να γίνει με κάποιον συνδυασμό ψηφιακών φίλτρων.

    Χονδρικά, MATLAB = γλώσσα προγραμματισμού C, με πολλές έτοιμες υπορουτίνες και βιβλιοθήκες.

    Το MATLAB είναι πρόγραμμα γενικό με το οποίο μπορείς να κάνεις από μια απλή προσθαφαίρεση, μέχρι να εξομοιώσεις ένα δίκτυο κινητής τηλεφωνίας, και μέχρι να εξομοιώσεις στοιχεία για την αποστολή της NASA στον Άρη:
    http://www.mathworks.com/company/newsletters/news_notes/june04/mars.html

    Παναγιώτης.




    grammophone
    23.10.2005, 19:14
    Quote:

    Το μέλος analogion στις 22-10-2005 στις 06:43 έγραψε:

    Χαίρετε.

    Έχω το εξής πρόβλημα, αν μπορείτε να με βοηθήσετε: Θέλω να ξέρω αν υπάρχει πρόγραμμα έστω και αλγόριθμος που να μετατρέπει έναν ημιτονοειδή ήχο (π.χ. έναν τόνο στα 440Hz) σε ήχο οργάνου· δηλ. να δημιουργεί αυτόματα τις αρμονικές του οργάνου με τα όποια σχετικά πλάτη.

    Με άλλα λόγια η είσοδος θα είναι απλός τόνος μιας συχνότητας και η έξοδος θα είναι ο ήχος ενός οργάνου (π.χ. κιθάρας ή και midi) στην ίδια βασική συχνότητα με τον εισαχθέντα τόνο.

    Ευχαριστώ,
    Παναγιώτης.







    Αγαπητέ Παναγιώτη,

    Για την παραπάνω δυνατότητα ενημερώσου σχετικά με το Melodyne. Είναι προγραμμα χειρισμού μονοφωνικού ήχου με σκοπό την αλλαγή τόνων ή χροιάς. Φτιάχτηκε, μεταξύ άλλων, για να διορθώνει 'φάλτσα' (ό, τι πρέπει για το στάρ σύστεμ που στηρίζει αταλάντους με νύχια και με δόντια...), αλλά και για να αλλάζει εντυπωσιακά την χροιά τής φωνής ή τού μονοφωνικού οργάνου. Πολύ χρήσιμο για συνθέτες που θέλουν να κάνουν δοκιμές, όπως 'αλλαγή φύλου' στην φωνή τους για να δοκιμάσουν ένα τραγούδι τους. Το πρόγραμμα χειρίζεται εκπληκτικά τον μονοφωνικό ήχο σαν να είναι MIDI δεδομένα. Ως εκ τούτου, επιτρέπει και εξαγωγή MIDI. Προσοχή όμως, για τον σκοπό όμως που περιέγραψες παρακάτω, ίσως χρειάζεσαι κάτι άλλο:


    Quote:

    Το μέλος analogion έγραψε:

    Ο σκοπός που το θέλω είναι ότι έχω φτιάξει ένα πρόγραμμα σε MATLAB για να παίζει τις κλίμακες Βυζαντινής Μουσικής, και θα ήθελα να βελτιώσω τον ήχο του.




    Μάθε για τα κουρδίσματα των συνθεσάιζερ. Μερικά υποστηρίζουν τροποποίηση των 12 τόνων τής οκτάβας κατά +/-64 cents, όπως το πρωτόκολλο Yamaha XG ή Roland GS. Άλλα, ακόμη καλύτερα, επιτρέπουν αυθαίρετο κούρδισμα οποιασδήποτε νότας. Πρέπει να ενημερωθείς οπωσδήποτε για το πρόγραμμα Scala, το οποίο κάνει μαθηματική παραγωγή και ανάλυση κλιμάκων. Το συνοδεύει πλήθος άνω των 2000 αρχαίων και συγχρόνων κλιμάκων. Είναι δε πολύ εύκολο να ορίσεις κλίμακες σύμφωνα με το πρότυπό του. Άρα, αφού γνωρίζεις τούς τόνους των κλιμάκων τής Βυζαντινής μουσικής, μπορείς εύκολα να τις αναπαραστήσεις στην μορφή κατά Scala. Καθώς το Scala υποστηρίζει κουρδισμα πολλών τύπων συνθεσάιζερ, μπορεί να σε καλύψει. Και αντιστρόφως, υπάρχουν software synthesizers που 'διαβάζουν' κλίμακες ωρισμένες κατά Scala. Παράδειγμα είναι το z3ta+. Δές κάτω πέρι microtuning (αυτός είναι ο παραδεδεγμένος όρος για κούρδισμα ηλεκτρονικών οργάνων, ψάξε τον Γούγλη για περισσότερα).


    [ Το μήνυμα τροποποιήθηκε από τον/την : grammophone στις 23-10-2005 19:30 ]
    analogion
    24.10.2005, 05:37
    Γεια σου φίλε και σε ευχαριστώ για τις πληροφορίες.

    Ναι υπάρχουν midi keyboards (από ότι μου είπε ένας φίλος) με +/- 100σεντς ακρίβεια. Αλλά να σου δώσω για παράδειγμα η σκληρή χρωματική κλίμακα της βυζαντινής μουσικής σε σεντς είναι:

    Πα - 90 - Βου - 337 - Γα - 71 - Δι - 204 - Κε - 90 - Ζω’ - 337 - Νη’ - 71 - Πα’

    δηλ. διαστήματα μεγαλύτερα του 200 (που δεν παίζονται από τα παραπάνω keyboards).

    Αν γνωρίζεις κάποιο keyboard με αυθαίρετη ακρίβεια πες το μου σε παρακαλώ (αλλά υποθέτω θα κοστίζει ο κούκος αηδόνι). Πάντως αυτό που θέλω περισσότερο, είναι η αναπαραγωγή "αληθινών" (όπως τις λέω - ασυγκέραστων δηλαδή) κλιμάκων.

    Για παράδειγμα, η παραπάνω συγκερασμένη κλίμακα έχει ασυγκέραστη ως εξής (έτσι την έδωσε η Μουσική Επιτροπή 1881):


    Πα - 256/243 - Βου - 243/200 - Γα - 25/24 - Δι - 9/8 - Κε - 256/243 - Ζω’ - 243/200 - Νη’ - 25/24 - Πα’

    (σε λόγους μηκών γειτονικών χορδών).

    Το "Σκάλα" το ανακάλυψα (και είναι πολύ καλό), αλλά

    α. να αφήσω την δουλειά μου (το πρόγραμμά μου) και να πάω στο "Σκάλα" θα είναι σαν να γκρεμίζω το σπίτι μου, επειδή η πόρτα δεν ταιριάζει :)

    β. πιστεύω ότι για τον σκοπό που το θέλω (εκμάθηση βυζαντινής μουσικής για τρίτους) το "Σκάλα" κάπου θα ...σκαλώσει, και για το γεγονός ότι δεν μπορώ να το τροποποιήσω όπως θέλω (εκτός των κλιμάκων).

    Βρήκα πάντως κάτι που πιστεύω θα με βοηθήσει να κάνω τελικά την δουλειά μου (το δίνω και για όποιον ίσως γνωρίζει MATLAB):

    http://www.jyu.fi/musica/miditoolbox/

    που ουσιαστικά σου δίνει εργαλεία για να χειρίζεσαι midi μέσω του MATLAB.

    Παναγιώτης.

    grammophone
    26.10.2005, 17:36
    Quote:

    Το μέλος analogion στις 24-10-2005 στις 05:37 έγραψε:

    Ναι υπάρχουν midi keyboards (από ότι μου είπε ένας φίλος) με +/- 100σεντς ακρίβεια. Αλλά να σου δώσω για παράδειγμα η σκληρή χρωματική κλίμακα της βυζαντινής μουσικής σε σεντς είναι:

    Πα - 90 - Βου - 337 - Γα - 71 - Δι - 204 - Κε - 90 - Ζω’ - 337 - Νη’ - 71 - Πα’

    δηλ. διαστήματα μεγαλύτερα του 200 (που δεν παίζονται από τα παραπάνω keyboards).





    Αγαπητέ Παναγιώτη,

    Δεν πρόκειται περί MIDI keyboards, γιατί τo βασικό πρωτόκολλο MIDI δεν ορίζει κούρδισμα (microtuning). Πρόκειται για συνθεσάιζερ. Το κούρδισμα γίνεται στο συνθεσάιζερ με αποστολή ειδικού κατά περίπτωση πακέτου SYSEX ή με άλλο τρόπο έξω από MIDI. Εάν κάποιο MIDI keyboard ισχυρίζεται ότι μπορεί να το κάνει, θέλει προσοχή! Ενδεχομένως να το επιτυγχάνει στέλνοντας μαζί με κάθε μήνυμα νότας και ένα μήνυμα pitch bend. Αυτό άλλωστε μπορεί να το κάνει και το Scala όταν το συνθεσάιζερ δεν υποστηρίζει κούρδισμα. Περιττό να σου πώ ότι είναι χάλια προσέγγιση.

    Το τελείως ελεύθερο κούρδισμα δεν είναι πλέον κάτι σπάνιο για synthesizer. Μάλιστα δε πολύ συχνό είναι στα software synthesizers. Τα περισσότερα εξ αυτών κουρδίζονται απ΄ευθείας με αρχεία τύπου Scala. Τα software synthesizers κατά κανόνα είναι φθηνά.
    analogion
    29.10.2005, 20:41
    Γεια σου φίλε.

    Δηλώνω άγνοια ως προς τα κίμπορντς και τα συνθεσάϊζερς αλλά έτσι μου είπε ένας φίλος, που χρησιμοποιεί κάποιο μιντι κίμπορντ (χαρακτηριστικά μου είπε όποιο κίμπορντ πάρεις απλά πρόσεξε να είναι μίντι) με ανάλογο πρόγραμμα στον υπολογιστή για να προγραμματίσει +/- 100 σέντς.

    Για κοίτα αυτό: Yamaha DGX-505

    http://music.yamaha.com/products/specifications.html?hierarchyId=1&groupId=24&productId=42

    όπου στο κούρδισμα λέει: A3 = 440Hz (-100 to +100 cents).

    Ως προς το: "τo βασικό πρωτόκολλο MIDI δεν ορίζει κούρδισμα (microtuning)" νομίζω έχεις δίκιο οπότε και η προηγούμενη "λύση" δεν φαίνεται να δουλεύει.

    Για να σου δώσω παράδειγμα, σου δίνω τον ήχο του προγράμματός μου:

    http://music.analogion.net/Klimakes/mp3klimakes/diatonic_didymos_262.mp3

    Μια χρήσιμη σελίδα που βρήκα:

    http://www.acoustics.salford.ac.uk/acoustics_world/id/SoundSynthesis/SoundSynthesis.htm

    (κοίτα παράγραφο 4: 4 Subtractive Synthesis)

    αλλά δεν δίνουν αναφορές για τα ψηφιακό φίλτρο στην σύνθεση.

    Ψάξιμο λοιπόν...

    Παναγιώτης.










    analogion
    29.10.2005, 22:57
    Αφαιρετική Σύνθεση (Subtractive synthesis)

    Ένα αλγόριθμος-πρόγραμμα που κάνει την δουλειά, δηλ. μετατροπή τόνου σε ήχο οργάνου εκτίθεται παρακάτω (σε γλώσσα MATLAB):

    % Subtractive synthesis example MB 11/17/04

    clear
    f = 150; % fundamental frequency of synthesized tone
    R = 22050; % sampling rate
    tmax = 2; % time duration of sound
    NFFT = 4096; % data for spectral analysis
    NOVERLAP = 0;
    Window = hamming(NFFT);
    t = 0:1/R:tmax; % define the time vector
    rawsound = zeros(1:tmax/R+1); % It's wise to set up an arrayof zeros for the sound array
    for j = 1:30 % Create the harmonic rich starting sound
    rawsound = rawsound + sin(2*pi*j*f*t);
    end
    low = 0.03; % Set the low and high frequency cutoffs of the bandpass filter
    high = 0.1; % These are expressed as a fraction of the Nyquist frequency
    order = 4; % define the order of the filter ? determines sharpness
    [B,A] = butter(order,[low high]); % band pass Butterworth filter,
    filtsound = filter(B,A,rawsound); % this does the filtering
    soundsc(rawsound,R); % listen to the starting sound
    pause(3)
    soundsc(filtsound,R); % listen to the processed sound

    % Compute spectrograms and plot
    [B1,F,T] = specgram(rawsound,NFFT, R, Window, NOVERLAP);
    subplot(211)
    plot(F, abs(B1(:,1)))
    axis([0 3000 0 1200])
    [B2,F,T] = specgram(filtsound,NFFT, R, Window, NOVERLAP);
    subplot(212)
    plot(F,abs(B2(:,1)))
    axis([0 3000 0 1200])

    και το βρήκα στο: http://66.102.7.104/search?q=cache:nPJ8USyNCvAJ:www.ece.rochester.edu:8080/courses/ECE140/ECE140_Labs/m_files/subsyn.m+subsyn.m&hl=el&client=firefox-a

    και είναι από τον καθηγητή Mark F. Bocko: http://www.ece.rochester.edu/people/faculty/MBocko.php.



    Εν περιλήψει το πρόγραμμα αυτό:

    α. δημιουργεί σήμα από άθροισμα ημιτονοειδών κυματομορφών με συχνότητες πολλαπλάσιες της θεμελιώδους (η οποία δίνεται ως παράμετρος)

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

    Σχετική πληροφορία δίνεται στο:

    http://66.102.7.104/search?q=cache:Fgt6E7XI594J:www.ece.rochester.edu:8080/courses/ECE140/ECE140_Labs/Lab9.html+matlab+%22subtractive+synthesis%22&hl=el&client=firefox-a

    όπου τα βήματα για την παραγωγή του ήχου, σε μεγαλύτερη λεπτομέρεια είναι:

    α. Προσδιόρισε το περίγραμμα του πλάτους του ήχου
    β. Προσδιόρισε το χρονο-εξαρτώμενο φίλτρο
    γ. Δημιούργησε κυματομορφή πλούσια σε αρμονικές
    δ. Φιλτράρισε την κυματομορφή με το σχεδιασμένο φίλτρο.


    Το (α) μάλλον ενδιαφέρει αν θέλεις να προσομοιώσεις ακριβώς το "attack" κτλ. όπως ανέφερε προηγουμένως ο Δημήτρης.

    Για αυτό περισσότερες πληροφορίες εδώ:

    http://www.harmony-central.com/MIDI/Doc/tutorial.html#tech

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

    Παναγιώτης




    [ Το μήνυμα τροποποιήθηκε από τον/την : analogion στις 29-10-2005 23:52 ]
    grammophone
    29.10.2005, 23:09
    Αγαπητέ Παναγιώτη,

    Η σελίδα που παραθέτεις για το Yamaha DGX-505 απλώς λέει κάτι τετριμμένο, ότι το όργανο είναι κανονικά κουρδισμένο στο μεσαίο ΛΑ με 440Ηz και ότι σου προσφέρει συνολική απόκλιση (δηλαδή για όλες τις νότες) +/-100 cents ώστε να ταιριάξει με πιθανές αποκλίσεις άλλων οργάνων στην ορχήστρα σου που δεν ρυθμίζονται. Προβλέπω λοιπόν την ερώτησή σου. Το όργανο υποστηρίζει microtuning; Η απάντηση είναι ναι κατά βάση, αλλά όχι επαρκώς για σένα. Γιατί υποστηρίζει XG, το οποίο είναι μία καλά σχεδιασμένη από την Yamaha επέκταση τού General MIDI. Σε αυτό όμως το πρότυπο επιτρέπεται ορισμός τόνων με απόκλιση +/-64 cents μόνον από την συγκερασμένη κλίμακα.

    Η σελίδα sound synthesis που παραθέτεις είναι μία καλή αρχή για να γνωρίσεις των κόσμο των συνθετητών. Δεν αναφέρεται βεβαίως στο θέμα τών κλιμάκων. Καθώς είναι εισαγωγικό άρθρο, ας μη περιμένουμε λεπτομέρειες για τα φίλτρα και άλλα συστατικά τών συνθετητών. Ξέρω τι ορέγεσαι... να τα φτιάξεις στο Matlab, αλλά πολύ φοβούμαι ότι θα πάρεις επάνω σου έτσι την επανανακάλυψη τού συνθεσάιζερ, και δεν ξέρω εάν το Matlab μπορεί να σου δώσει την απαραίτητη διασύνδεση με τον συνήθη κόσμο των προγραμμάτων συνθέσεως. Βλέπε πρωτόκολλα DXi, VST και άλλα. Εάν θέλεις να κτίσεις συνθετητή μόνος σου, σού προτείνω δύο δρόμους. Αλλιώς υπάρχει κίνδυνος να καταπονηθείς πολύ ανακαλύπτοντας τον τροχό με πτωχά αποτελέσματα συνάμα.


    • Native Instruments Reaktor. Υποστηρίζει όλα τα γνωστά πρωτόκολλα software synthesizer. Δημιουργείς συνθετητή χρησιμοποιώντας βασικά δομικά υλικά όπως ταλαντωτές, διαμορφωτές, φίλτρα και άλλα. Μπορείς να ορίσεις συνήθεις λειτουργικές μονάδες από αυτά ώστε να μη ξεκινάς από το μηδέν σε κάθε νέα σου κατασκευή. Με το πρόγραμμα περιλαμβάνεται βιβλιοθήκη από τέτοιες μονάδες. Σε αυτήν περιλαμβάνεται μονάδα microtuning, για παράδειγμα.

    • SynthEdit. Δεν το έχω δουλέψει αυτό. Αλλά νομίζω ότι σκοπός του είναι η δημιουργία ενός software synthesizer σύμφωνα με το πρωτόκολλο VST με γραφικό τρόπο παρόμοιο με το Reaktor, χωρίς γνώση προγραμματισμού. Εν αντιθέσει όμως με το Reaktor, παράγει αυτόνομο εκτελέσιμο αρχείο, σαν compiler, και δεν έχει ανάγκη να τρέχει μέσω του κεντρικού προγράμματος.




    analogion
    29.10.2005, 23:27
    Γεια σου φίλε.

    Σε ευχαριστώ για τις πληροφορίες.

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

    Προς αυτή την κατεύθυνση είναι (όπως έμαθα) ο κλάδος της "αφαιρετικής σύνθεσης" που έδωσα δείγματα στο μήνυμά μου στις "29-10-2005 στις 22:57".

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


    Να'σαι καλά,
    Παναγιώτης.




    [ Το μήνυμα τροποποιήθηκε από τον/την : analogion στις 29-10-2005 23:30 ]
    analogion
    27.12.2005, 19:23
    Ένας τρόπος για να κουρδιστούν οι νότες +/-100σεντς από την "C major", που μου εξήγησε ένας φίλος, είναι ο εξής απλός:

    Παίρνεις το πρόγραμμα "Audio Compositor" το οποίο σου δίνει δυνατότητα προγραμματισμού +/- 100σεντς, και απλώς χρησιμοποιείς ένα midi keyboard ως "χαζό" όργανο για να πατάς τα πλήκτρα.

    Χρόνια πολλά,
    Παναγιώτης.

    Υ.Γ. Για την Βυζαντινή μουσική όμως αυτη η τεχνική δεν βοηθάει σε όλες τις κλίμακες, γιατί μερικές φορές χρειάζονται να κουρδιστούν διαφορετικά νότες που ανήκουν σε 2 οκτάβες και το παραπάνω πρόγραμμα αλλοιώνει μόνο νότες σε μια οκτάβα. Το πρόγραμμά μου βέβαια δεν έχει αυτό το πρόβλημα :)