Παράκαμψη προς το κυρίως περιεχόμενο

Ληξούρι - ArTUNEino : Το μουσικό αφτί

Ληξούρι - ArTUNEino : Το μουσικό αφτί

Hosted by OSOS , contributed by smaragd on 14 December 2018

ArTUNEino : Το μουσικό αφτί

Ένα κουρδιστήρι για μουσικά όργανα Φιλαρμονικής Ορχήστρας.

Το Project της 4ης Ομάδας από το Ληξούρι Κεφαλονιάς για τον 4ο κύκλο του STEMpowering Youth .

Η ομάδα:

  • Αναστασία Κοντογιαννάτου
  • Φώτης Μιλτιάδης

.

Learning Objectives
STEM, Arduino

Στην πόλη μας δραστηριοποιείται η πιο παλιά φιλαρμονική σχολή στην Ελλάδα, η Φιλαρμονική Ληξουρίου (ιδρύθηκε το 1836), η οποία συμμετέχει σε όλες τις εκδηλώσεις της τοπικής κοινωνίας με συνεχή παρουσία και στην πόλη αλλά και εκτός της Κεφαλονιάς. Ένα από τα μέλη της ομάδας μας, ο Φώτης Μιλτιάδης, είναι και μέλος της φιλαρμονικής. Όταν, λοιπόν, ήρθε η στιγμή στα πλαίσια του προγράμματος STEMpowering Youth να βρούμε μια ιδέα για project που να καλύπτει μια ανάγκη της τοπικής κοινωνίας, το πρώτο πράγμα που μας ήρθε στο μυαλό ήταν να ψάξουμε τις ανάγκες της φιλαρμονικής. Ρωτήσαμε τον μαέστρο της Φιλαρμονικής, κ. Χαράλαμπο Μακρή, αν χρειάζεται κάτι και μας απάντησε πως χρειάζεται ένα κουρδιστήρι που δεν μπορεί να βρει στο εμπόριο. Το κουρδιστήρι είναι μια συσκευή που ακούει τον ήχο ενός οργάνου και δείχνει τη νότα που παίζεται. Αν υπάρχει απόκλιση από την πιο κοντινή νότα, τότε μας δείχνει και την απόκλιση αυτή ανάβοντας έναν αριθμό από λαμπάκια LED ανάλογα με το πόσο μεγάλη είναι η απόκλιση. Τα κουρδιστήρια της αγοράς δείχνουν την απόκλιση σε σχέση με τη νότα που θέλουμε να κουρδίσουμε, χρησιμοποιώντας λαμπάκια και όχι δείχνοντας ακριβώς ποια συχνότητα σε Hz παίζεται. Αποφασίσαμε λοιπόν να φτιάξουμε μια συσκευή που θα βοηθήσει στις ατομικές και ομαδικές πρόβες και στο κούρδισμα των οργάνων της Φιλαρμονικής. Η συσκευή αυτή, αφού δεν υπάρχει στο εμπόριο, θα μπορούσε να βοηθήσει και άλλες φιλαρμονικές σχολές, ωδεία, μουσικούς κλπ.

Στη συνέχεια ήρθαμε ξανά σε επαφή με το Μαέστρο για τις λεπτομέρειες της κατασκευής που θέλουμε να φτιάξουμε και τον καλύτερο τρόπο που μπορούν να εμφανίζονται οι μετρήσεις στην οθόνη.

Ψάξαμε στο Internet για να βρούμε λύσεις σχετικές με τη δημιουργία κουρδιστηριού για μουσικά όργανα με Arduino. Βρήκαμε μια σελίδα με οδηγίες που θα μας βοηθήσουν για να προγραμματίσουμε το Arduino να διακρίνει τις συχνότητες από το μικρόφωνο:

https://www.arduino.cc/en/Tutorial/SimpleAudioFrequencyMeter

Στη σελίδα αυτή είδαμε ότι χρειαζόμαστε αρχικά ένα μικρόφωνο και μια καλή λύση που προτεινόταν ήταν το MAX4466 https://www.adafruit.com/product/1063

Σκεφτήκαμε για λόγους κόστους και απλότητας να μην αγοράσουμε διαφορετική οθόνη και να χρησιμοποιήσουμε την οθόνη LCD 16x2 που είχαμε και στα μαθήματα, προσαρμόζοντας σε αυτήν τα αποτελέσματα του Arduino. Από υλικά, βρήκαμε στο Internet ένα κουτί για Arduino που έχει χώρο και για την οθόνη και για το μικρόφωνο στο εσωτερικό του. Στις οδηγίες για το κουτί έλεγε ότι μέσα του χωράνε 2 μπαταριοθήκες για 2 μπαταρίες ΑΑΑ η καθεμία, που θα δίνουν ρεύμα στη συσκευή μας. Μαζί με έναν διακόπτη για την ενεργοποίηση/απενεργοποίηση της συσκευής το συνολικό κόστος για τα επιπλέον υλικά δεν ξεπερνούσε τα 30 ευρώ.

Αφού πήραμε τα υλικά μέσα στα Χριστούγεννα, ξεκινήσαμε τη συναρμολόγηση. Βιδώσαμε και συνδέσαμε το Arduino, και την οθόνη στο κουτί.. .

Τρυπήσαμε με Dremel για να μπει το μικρόφωνο.

. .

Tο κουμπώσαμε στην τρύπα βιδώνοντάς το. Ανοίξαμε και μια μικρότερη τρύπα για ένα διακόπτη που θα συνδέεται με τις μπαταριοθήκες και θα αναβοσβήνει τη συσκευή. Κάναμε κολλήσεις με κολλητήρι και συνδέσαμε όλες τις συσκευές μεταξύ τους με καλώδια.

. .

.

Αφού τα ολοκληρώσαμε αυτά, κάναμε μια απλή δοκιμή που ανιχνεύει την ένταση του ήχου, για να δούμε αν δουλεύει καλά το μικρόφωνο, οι συνδέσεις και ο διακόπτης: https://learn.adafruit.com/adafruit-microphone-amplifier-breakout/measuring-sound-levels

Προσαρμόσαμε και το πρόγραμμα για να εμφανίζει το αποτέλεσμα στην LCD οθόνη και όχι στο Serial Monitor.

Δυστυχώς διαπιστώσαμε ότι το πρόγραμμα αναγνώρισης συχνοτήτων που είχαμε αρχικά βρει δεν έπαιζε στο Arduino UNO αλλά ήθελε άλλο τύπο Arduino, πιο δυνατό. Οπότε θα έπρεπε να ψάξουμε μόνοι μας να βρούμε πληροφορίες για τον ήχο και το πώς θα τον αναλύσουμε για να πάρουμε τη νότα.

Αρχικά βρήκαμε μια σελίδα που εξηγούσε με απλά λόγια τη θεωρία του ήχου και των κυμάτων, τη δειγματοληψία και το θεώρημα Nyquist που λέει ότι πρέπει να παίρνουμε τουλάχιστον διπλάσια συχνότητα δειγμάτων σε σχέση με τη συχνότητα του ήχου που θέλουμε να ανιχνεύσουμε.

http://meteora.csd.auth.gr/dpolitis/ds/thewriapf.htm

Στη συνέχεια, από το site του μικροφώνου ΜΑΧ4466 (https://www.adafruit.com/product/1063) είδαμε ότι χρειάζεται να χρησιμοποιήσουμε προγραμματάκι για μετατροπή FFT. Ψάξαμε να βρούμε πληροφορίες για το τι είναι το FFT αλλά δεν καταλαβαίναμε πολλά. Αυτό που βρήκαμε μετά από αρκετή αναζήτηση και κρατώντας ό,τι καταλαβαίναμε από κάθε σελίδα είναι ότι το FFT παίρνει το κύμα του ήχου και το αναλύει σε διαστήματα συχνοτήτων. Έτσι μπορούμε να βρούμε ποια συχνότητα είναι η πιο δυνατή. Δοκιμάσαμε τα project/προγράμματα:

Δυστυχώς σε όλες τις δοκιμές το αποτέλεσμα που παίρναμε ήταν άσχετες συχνότητες που δεν είχαν σχέση με τη νότα που παίζαμε και η συχνότητα της νότας μας δεν ξεχώριζε από τις άλλες συχνότητες. Οι δοκιμές μας γινόντουσαν με ένα site που έπαιζε νότες/συχνότητες της επιλογής μας στα ηχεία του υπολογιστή: http://www.szynalski.com/tone-generator/

Μετά από τις πολλές αποτυχημένες δοκιμές, βρήκαμε μια σελίδα που εξηγεί το FFT και το πώς το χρησιμοποιούμε στο Arduino με αναλυτικές οδηγίες. Το παράδειγμα του site χρησιμοποιούσε τη βιβλιοθήκη arduinoFFT που δεν είχαμε δοκιμάσει ως τώρα. Ευτυχώς το ίδιο το παράδειγμα της ιστοσελίδας δούλεψε, βγάζοντας τη σωστή συχνότητα ήχου και χρειάστηκε μόνο να κάνουμε λίγες μετατροπές:

  • Αλλαγή για εκτύπωση στην LCD οθόνη αντί για το Serial Monitor.
  • Ενεργοποίηση εκτύπωσης της κυρίαρχης συχνότητας (έτοιμη εντολή του παραδείγματος)
  • Αλλαγή για επανάληψη ανά δευτερόλεπτο

Διαπιστώσαμε με τις δοκιμές ότι σε όλες τις νότες υπήρχε μια μικρή απόκλιση από το σωστό υπολογισμό της συχνότητας. Καταγράψαμε τις συχνότητες για αρκετές διαφορετικές νότες και βρήκαμε ότι πρέπει να πολλαπλασιάσουμε τη συχνότητα που υπολογίζει το πρόγραμμα επί 0.983 για να βρίσκει με μεγαλύτερη ακρίβεια το επιθυμητό αποτέλεσμα.

Στη συνέχεια έπρεπε τη συχνότητα να τη μετατρέψουμε σε νότες και οκτάβα (κάθε οκτάβα έχει 12 ημιτόνια). Για τη μετατροπή αυτή βρήκαμε ένα site (https://www.johndcook.com/blog/2013/06/22/how-to-convert-frequency-to-pitch/ ) που μας βοήθησε να υπολογίσουμε τον αριθμό των ημιτονίων από μια νότα αναφοράς: h = 12 log(P / C) / log 2 , όπου h τα ημιτόνια της απόστασης της συχνότητας ανίχνευσης P από τη συχνότητα της νότας αναφοράς, C.

Υπολογίστηκε η πιο κοντινή νότα σε σχέση με την συχνότητα καθώς και η απόκλιση από αυτήν. Η νότα εμφανίζεται στην οθόνη με το συμβολισμό γραμμάτων A,B,C,D,E,F,G και το σύμβολο της δίεσης # αν υπάρχει. Επιλέξαμε για αποκλίσεις πάνω από την κοντινότερη νότα να εμφανίζουμε από 1 μέχρι 4 σύμβολα συν (+) και για αποκλίσεις κάτω από την κοντινότερη νότα να εμφανίζουμε από 1 μέχρι 4 σύμβολα πλην (-).

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

Το τελικό πρόγραμμα: https://drive.google.com/open?id=1PgdNi1CCIYlXAtOIxFDO80jB3e5yoR-3

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

Εδώ βλέπουμε κάποια παραδείγματα ανίχνευσης της νότας και της συχνότητας από τη συσκευή.

. .

Στο βίντεο που ακολουθεί βλέπουμε τη λειτουργία του ArTUNEino σε δύο δοκιμές. Στην πρώτη καθώς περνάμε από τη νότα D 4 προς την D# 4, ανεβάζοντας τη συχνότητα κατά ένα Hz κάθε φορά και στη δεύτερη επιλέγοντας τυχαίες συχνότητες. Φαίνονται η συχνότητα, η νότα που αναγνωρίζεται, η οκτάβα και οι επιπλέον ενδείξεις απόκλισης (ένα ως τέσσερα + όταν είμαστε σε ψηλότερη συχνότητα από την κοντινότερη νότα και ένα ως τέσσερα - όταν είμαστε σε χαμηλότερη συχνότητα).

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

.

Εκεί, ο Μαέστρος, κ. Χαράλαμπος Μακρής έδειξε ιδιαίτερο ενδιαφέρον για την κατασκευή. Έγιναν αρκετές δοκιμές με διάφορα όργανα, όπου διαπιστώθηκε ότι η συσκευή λειτουργεί πολύ ικανοποιητικά.

. .

. .

Ο Mαέστρος ήταν ιδιαίτερα ευχαριστημένος με την ακρίβεια της κατασκευής και το ότι έδειχνε και αριθμητικά τη συχνότητα σε Hz. Μας έδειξε τον τρόπο που κουρδίζονται τα όργανα σε μια ορχήστρα με βιντεάκια από το Youtube.

.

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

. .

. .

Στο τέλος ο Μαέστρος μας ρώτησε αν γίνεται να προσαρμόσουμε την κατασκευή ώστε να έχει μια ακόμη δυνατότητα:Τα κουρδιστήρια του εμπορίου χρησιμοποιούν σαν νότα κουρδίσματος τη νότα Λα = 440Hz με δυνατότητα ρύθμισης +/- 4Hz. Για τις ανάγκες της Φιλαρμονικής πολλές φορές το κούρδισμα μπορεί να χρειάζεται να γίνει χαμηλότερα και από τα 436Hz, οπότε θα ήθελε να μπορεί να ορίσει ο ίδιος τη συχνότητα της νότας του κουρδίσματος χειροκίνητα. Σκεφτήκαμε ότι αυτό είναι κάτι που μπορεί να γίνει προσθέτοντας επιπλέον κουμπιά ρύθμισης και προγραμματίζοντας ανάλογα το Arduino για να αλλάζει η συχνότητα C της νότας αναφοράς του τύπου υπολογισμού των ημιτονίων της απόστασης. Αποφασίσαμε λοιπόν ότι θα συνεχίσουμε βελτιώνοντας την κατασκευή μας και μετά το τέλος του STEMpowering Youth ώστε να προσφέρουμε στη Φιλαρμονική μια συσκευή που θα ικανοποιεί ακόμα καλύτερα τις ανάγκες της.

.