ΑΣΚΗΣΗ 1 Συνθεση µουσικών φθόγγων και ήχων ΨΗΦΙΑΚΗ ΕΠΕΞΕΡΓΑΣΙΑ ΣΗΜΑΤΟΣ Μεταπτυχιακό Πρόγραµµα Σχετικές εντολές του Matlab: soun, specgram octave C 3 D 3 E 3 F 3 G 3 A 3 B 3 C 4 D 4 E 4 F 4 G 4 A 4 B 4 C 5 D 5 E 5 F 5 G 5 A 5 B 5 28 30 32 33 35 37 39 40 42 44 45 47 49 51 52 54 56 57 59 61 63 Mile-C Ντό A-440 Λά Σχήµα 1 -Πληκτρολόγιο πιάνου Σχήµα 2- Πως σχετίζεται η θέση και το σχήµα κάποιας νότας µε την συχνότητα και την διάρκεια Σχετική θεωρία: α. Κάθε νότα έχει συγκεκριµµένη συχνότητα. πχ. η Νο 49 Α 4 έχει f=440h Eίναι η νότα λά. Η συχνότητα κάθε νότας έχει σταθερό λόγο προς την προηγούµενη και ίσο προς 2 1/12. Ετσι πχ. η νότα Ε πάνω από την mile-c (Νο 43) είναι έξη πλήκτρα "κάτω" και εποµένως έχει συχνότητα f= 440 x 2-6/12 =440 2 311 Hz β. Η συχνότητα κάθε νότας δεικνύεται στο µουσικό διάγραµµα (πεντάγραµµο) µε την καθύψος θέση της (βλ. σχήµα 2) γ. Η διάρκεια κάθε νότας καθορίζεται από το σχήµα της στο πεντάγραµµο και είναι πολλαπλάσιο ή υποπολλαπλάσιο ενός βασικού χρονικού διαστήµατος.
2 A. Παραγωγή µουσικών τόνων (ήχου) Α1. Να πραγµατοποιηθεί ένα (συν)ηµιτονικό σήµα διαρκείας 2 sec που να παριστά την νότα E 5 (Νο 56). Αν η συχνότητα δειγµατοληψίας επιλεγεί f s = 8kHz τότε θα πρέπει να παραχθούν: 8000 x 2 = 16000 σηµεία. Η σχετική εντολή του matlab θα είναι: tt=0:(1/8000):2; και το (συν)ηµιτονικό σήµα θα είναι: xx=cos(2*pi*440*tt); Χρησιµοποιείστε την εντολή soun για να ακούσετε τον ήχο: soun(xx,8000) A2. Γράψτε ένα function file που να παράγει µία νότα (συχνότητα) συγκεκριµµένης διάρκειας. fumction tone = note(keynum,ur) fs=8000; tt=0:(1/fs):ur; freq =... tone =... A3. Γράψτε ένα script file που να παράγει µια σειρά (σκάλα) απο νότες keys = [40 42 44 45 47 49 51 52]; % notes:c D E F G A B C ur = 0.25*ones(1,length(keys)); fs = 8000; xx = zeros(1,sum(ur)*fs+1); n1 = 1; for kk=1:length(keys) keynum = keys(kk); tone =... n2 = n1 + length(tone)-1; xx(n1:n2) = xx(n1:n2)+tone; n1=n2; en soun(xx,fs)
3 Α4. Πραγµατοποιείστε ενα απο τα µουσικά κοµµάτια που δίνονται στο τέλος. Για την διαδικασία αυτή θα πρέπει πρώτα να αντιστοιχίσετε την κάθε νότα του πενταγράµµατος σε µία συχνοτητα και µία χρονική διάρκεια. Στη συνέχεια µπορείτε να καλέσετε επανειληµµένα το function file tone ή να φτιάξετε ένα script file όπως το προηγούµενο. Α5. Βελτίωση των ήχων Η παραγωγή των µουσικών φθόγγων γίνεται πιό πραγµατική άν διαµορφωθεί το αντίστοιχο "καθαρό" (συν)ηµίτονο µε κατάλληλο σήµα: x(t)=e(t)cos(2πft) H περιβάλλουσα Ε(t) συνήθως έχει την µορφή του σχ.3. H διάρκεια Τ αντιστοιχεί στη E(t) D S A R 0 T t Σχήµα 3 - περιβάλλουσα µουσικού φθόγγου χρονική διάρκεια της νότας. Μια ακόµη βελτίωση της ποιότητας του ήχου γίνεται µε παρεµβολή µερικών µηδενικών µεταξύ των φθόγγων. Η παρεµβολή αυτή αντιστοιχεί στο χρόνο που απαιτείται για τα κτυπήµατα µεταξύ των διαφόρων πλήκτρων. Επαναλάβετε την διαδικασία Α1 διαµορφώνοντας τον ήχο µε περιβάλλουσα Ε(t) της επιλογής σας 1 και τροποποιώντας κατάλληλα το function file note.m (A2) Α6. Χρησιµοποιείστε την εντολή specgram µε το σήµα της διαδικασίας Α3 για να δείτε (και να σχεδιάσετε) το φασµατόγραµµα. Μπορείτε να προτείνετε µια εφαρµογή της διαδικασίας αυτής για "αναγνώριση" µουσικών φθόγγων; 1 Πχ. Τριγωνική, τραπεζοειδή, ηµικύκλιο, εκθετική κλπ.
4 B. Σήµατα µε διαµόρφωση συχνότητας Ένα σήµα x(t)=acos(ωt+φ) Έχει συχνότητα ω= (ωt+φ) Γενικεύοντας µπορούµε να θεωρήσουµε ότι η φάση είναι µία συνάρτηση του χρόνου : ψ(t). Αρα x(t)=acos(ψ(t)) και η (στιγµιαία) συχνότητα ω(t) βρίσκεται από την σχέση: ω(t) = (ψ(t)) B.1. Eάν η φάση αυξάνει τετραγωνικά µε τον χρόνο τότε η στιγµιαία συχνότητα αυξάνει γραµµικά ηλ. ψ(t) = 2πµt 2 +2πf o t+φ ω(t) = (ψ(t))= 4πµt + 2πfo (σε ra/sec) ή f(t) = 2µt+f o (σε Hz) To σήµα x(t)=acos(2πµt 2 +2πf o t+φ) που έχει γραµµικά µεταβαλλόµενη συχνότητα ονοµάζεται chirp signal Β.2 Πραγµατοποιείστε ένα chirp signal µε παραµέτρους ειγµατοληψία f s =8000 Hz ιάρκεια ur=3secs µ=500 f o =200 Ηz φ= 2π100 Γ. Σύνθεση ήχων µουσικών οργάνων Με την διαµόρφωση συχνότητας δίνεται η δυνατότητα εξοµοίωσης ήχων διαφόρων µουσικών οργάνων (κλαρίνου, διαφόρων πνευστών,φλογέρας, καµπάνας κλπ) Είδαµε ότι το σήµα µε διαµόρφωση συχνότητας έχει µορφή : x(t)=acos(ψ(t)) Eάν η ψ(t) είναι ηµιτονική τότε η στιγµιαία συχνότητα είναι επίσης ηµιτονική. Μία γενικώτερη συνάρτηση της ψ(t) όµως µας εξυπηρετεί πολύ περισσότερο διότι δίνει περισσότερους βαθµούς ελευθερίας για αναπαραγωγή περισσοτέρων ήχων. Η γενική συνάρτηση για ένα FM synthesizer έχει την µορφή: x(t)=a(t) cos{2πf c t+i(t)cos(2πf m t+φ m )+φ c }
5 To πλάτος Α(t) είναι η περιβάλλουσα του σήµατος, είναι συνάρτηση του χρόνου και «σβύνει» αργά είτε απότοµα. Ι(t) είναι η περιβάλλουσα του δείκτη διαµόρφωσης f c είναι η φέρουσα συχνότητα και είναι σταθερή. Η στιγµιαία συχνότητα είναι : f(t)=1/2π (ψ(t))= fc -I(t)f m sin(2πf m t+φ m ) + 1/2π Ι cos(2πfm t+φ m ) Γ.1 Σύνθεση ήχου καµπάνας Σαν εφαρµογή των παραπάνω θα δηµιουργήσουµε τον ήχο καµπάνας Στην περίπτωση αυτή η περιβάλλουσες A(t) και Ι(t) έχουν την (ίδια) µορφή: I(t)=I o e -t/τ και Α(t)=Α o e -t/τ Κατασκευάστε ένα m-file που να παράγει ήχο καµπάνας µε τις εξής προδιαγραφές: f c =110 Hz f m =200Hz I o =10=A o τ=2secs διάρκεια =6secs συχνότητα δειγµατοληψίας f s =11.024 Hz