Blame platform-demos/el/guitar-tuner.py.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="guitar-tuner.py" xml:lang="el">
Packit 1470ea
Packit 1470ea
  <info>
Packit 1470ea
    <title type="text">Συντονιστής κιθάρας (Python)</title>
Packit 1470ea
    <link type="guide" xref="py#examples"/>
Packit 1470ea
Packit 1470ea
    <desc>Χρησιμοποιήστε GTK+ και GStreamer για να φτιάξετε ένα απλό πρόγραμμα συντονιστή κιθάρας για το GNOME. Αναδεικνύει πώς να χρησιμοποιήσετε τον σχεδιαστή διεπαφών.</desc>
Packit 1470ea
Packit 1470ea
    <revision pkgversion="0.1" version="0.1" date="2010-12-02" status="stub"/>
Packit 1470ea
    <credit type="author">
Packit 1470ea
      <name>Έργο τεκμηρίωσης GNOME</name>
Packit 1470ea
      <email its:translate="no">gnome-doc-list@gnome.org</email>
Packit 1470ea
    </credit>
Packit 1470ea
    <credit type="author">
Packit 1470ea
      <name>Johannes Schmid</name>
Packit 1470ea
      <email its:translate="no">jhs@gnome.org</email>
Packit 1470ea
    </credit>
Packit 1470ea
    <credit type="editor">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2013</years>
Packit 1470ea
    </credit>
Packit 1470ea
    <credit type="editor">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2013</years>
Packit 1470ea
    </credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Ελληνική μεταφραστική ομάδα GNOME</mal:name>
Packit 1470ea
      <mal:email>team@gnome.gr</mal:email>
Packit 1470ea
      <mal:years>2012-2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Δημήτρης Σπίγγος</mal:name>
Packit 1470ea
      <mal:email>dmtrs32@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2012, 2013</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Μαρία Θουκιδίδου</mal:name>
Packit 1470ea
      <mal:email>marablack3@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Θάνος Τρυφωνίδης</mal:name>
Packit 1470ea
      <mal:email>tomtryf@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2014, 2015</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
<title>Συντονιστής κιθάρας</title>
Packit 1470ea
Packit 1470ea
<synopsis>
Packit 1470ea
  

Σε αυτόν τον οδηγό, θα φτιάξουμε ένα πρόγραμμα που παίζει μουσικούς τόνους και μπορεί να συντονίσει μια κιθάρα. Θα μάθετε να:

Packit 1470ea
  <list>
Packit 1470ea
    <item>

Ρυθμίζετε το κύριο έργο στο Anjuta

</item>
Packit 1470ea
    <item>

Δημιουργείτε απλό GUI με τον σχεδιαστή UI του Anjuta

</item>
Packit 1470ea
    <item>

Χρησιμοποιείτε το GStreamer για να παίζετε ήχους

</item>
Packit 1470ea
  </list>
Packit 1470ea
  

Θα χρειαστείτε τα παρακάτω για να μπορέσετε να ακολουθήσετε αυτό το μάθημα:

Packit 1470ea
  <list>
Packit 1470ea
    <item>

Ένα εγκατεστημένο αντίγραφο του <link xref="getting-ready">Anjuta IDE</link>

</item>
Packit 1470ea
    <item>

Βασική γνώση της γλώσσας προγραμματισμού Python

</item>
Packit 1470ea
  </list>
Packit 1470ea
</synopsis>
Packit 1470ea
Packit 1470ea
<media type="image" mime="image/png" src="media/guitar-tuner.png"/>
Packit 1470ea
Packit 1470ea
<section id="anjuta">
Packit 1470ea
  <title>Δημιουργία έργου με το Anjuta</title>
Packit 1470ea
  

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

Packit 1470ea
  <steps>
Packit 1470ea
    <item>
Packit 1470ea
    

Ξεκινήστε το Anjuta και πατήστε <guiseq><gui>αρχείο</gui><gui>νέο</gui><gui>έργο</gui></guiseq> για να ανοίξετε τον οδηγό του έργου.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Επιλέξτε <gui>PyGTK (automake)</gui> από την καρτέλα <gui>Python</gui>, πατήστε <gui>συνέχεια</gui> και συμπληρώστε τις λεπτομέρειές σας στις επόμενες λίγες σελίδες. Χρησιμοποιήστε ως όνομα του έργου και του καταλόγου το <file>guitar-tuner</file>.

Packit 1470ea
   	</item>
Packit 1470ea
    <item>
Packit 1470ea
    

Πατήστε <gui>Εφαρμογή</gui> και το έργο θα δημιουργηθεί. Ανοίξτε <file>src/guitar_tuner.py</file> από τις καρτέλες <gui>έργο</gui> ή <gui>αρχείο</gui>. Θα πρέπει να δείτε κάποιο κώδικα που ξεκινάει με τις γραμμές:

Packit 1470ea
    
Packit 1470ea
from gi.repository import Gtk, GdkPixbuf, Gdk
Packit 1470ea
import os, sys
Packit 1470ea
    </item>
Packit 1470ea
  </steps>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="run">
Packit 1470ea
  <title>Εκτέλεση του κώδικα για πρώτη φορά</title>
Packit 1470ea
  

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

Packit 1470ea
Packit 1470ea
  <list>
Packit 1470ea
  <item>
Packit 1470ea
    

Οι γραμμές import στην αρχή λένε στην Python να φορτώσει τις βιβλιοθήκες του συστήματος και της διεπαφής χρήστη που χρειάζονται.

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
    

Μια κλάση δηλώνεται ότι θα είναι η κύρια κλάση για το πρόγραμμά μας. Στην μέθοδο __init__ το κύριο παράθυρο φορτώνεται από το αρχείο GtkBuilder (<file>src/guitar-tuner.ui</file>) και τα σήματα συνδέονται.

Packit 1470ea
    

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

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
    

Η συνάρτηση main εκτελείται προκαθορισμένα μόλις τρέξετε ένα πρόγραμμα σε Python. Δημιουργεί ένα στιγμιότυπο της κύριας κλάσης και ξεκινάει τον κύριο βρόχο για να εμφανίσει το παράθυρο.

Packit 1470ea
   </item>
Packit 1470ea
  </list>
Packit 1470ea
Packit 1470ea
  

Ο κώδικας είναι έτοιμος να χρησιμοποιηθεί, οπότε μπορείτε να τον εκτελέσετε πηγαίνοντας <guiseq><gui>Εκτέλεση</gui><gui>Εκτέλεση</gui></guiseq>.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="ui">
Packit 1470ea
  <title>Δημιουργία της διεπαφής χρήστη</title>
Packit 1470ea
  

Μια περιγραφή της διεπαφής χρήστη (UI) περιέχεται στο αρχείο GtkBuilder. Για να επεξεργαστείτε τη διεπαφή χρήστη, ανοίξτε το <file>src/guitar_tuner.ui</file>. Θα βρεθείτε στο σχεδιαστή διεπαφής. Το παράθυρο σχεδίασης είναι στο κέντρο· τα γραφικά στοιχεία και οι ιδιότητες τους είναι στα δεξιά και η παλέτα των διαθέσιμων γραφικών στοιχείων στα αριστερά.

Packit 1470ea
  

Η διάταξη κάθε διεπαφής χρήστη σε Gtk+ οργανώνεται σε κουτιά και πίνακες. Ας χρησιμοποιήσουμε εδώ ένα κάθετο <gui>GtkButtonBox</gui> για να τοποθετήσουμε έξι <gui>GtkButtons</gui>, ένα για κάθε μία από τις χορδές της κιθάρας.

Packit 1470ea
Packit 1470ea
<media type="image" mime="image/png" src="media/guitar-tuner-glade.png"/>
Packit 1470ea
Packit 1470ea
  <steps>
Packit 1470ea
   <item>
Packit 1470ea
   

Διαλέξτε ένα <gui>GtkButtonBox</gui> από το τμήμα <gui>Container</gui> στην <gui>Παλέτα</gui> στο δεξιά και προσθέστε το στο παράθυρο. Στο φάτνωμα <gui>Ιδιότητες</gui> καθορίστε τον αριθμό των στοιχείων σε 6 (για τις έξι χορδές της κιθάρας) και τον προσανατολισμό σε κάθετο.

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
    

Τώρα, διαλέξτε ένα <gui>GtkButton</gui> από την παλέτα και βάλτε το στο πρώτο μέρος του κουτιού.

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
    

Έχοντας το κουμπί ακόμα επιλεγμένο, αλλάξτε την <gui>Ετικέτα</gui> στην καρτέλα <gui>Γραφικά στοιχεία</gui> σε <gui>E</gui>. Αυτή θα είναι η χαμηλή χορδή Ε.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
     

Πηγαίνετε στην καρτέλα <gui>Σήματα</gui> (μέσα στην καρτέλα <gui>Γραφικά στοιχεία</gui>) και βρείτε το σήμα clicked του κουμπιού. Μπορείτε να το χρησιμοποιήσετε για να συνδέσετε έναν χειριστή σημάτων που θα καλείται όταν πατηθεί το κουμπί από τον χρήστη. Για να το κάνετε αυτό, πατήστε πάνω στο σήμα και πληκτρολογήστε on_button_clicked στη στήλη <gui>χειριστής</gui> και πατήστε <key>Επιστροφή</key>.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Επαναλάβετε τα παραπάνω βήματα για τα υπόλοιπα κουμπιά, προσθέστε τις επόμενες 5 χορδές με τα ονόματα A, D, G, B, και e.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Αποθηκεύστε τη σχεδίαση UI (πατώντας <guiseq><gui>αρχείο</gui><gui>αποθήκευση</gui></guiseq>) και κρατήστε το ανοιχτό.

Packit 1470ea
    </item>
Packit 1470ea
  </steps>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="signal">
Packit 1470ea
  <title>Εγγραφή του χειριστή σημάτων</title>
Packit 1470ea
  

Στον σχεδιαστή διεπαφών χρήστη, κάνατε όλα τα κουμπιά να καλούν την ίδια συνάρτηση, <gui>on_button_clicked</gui>, όταν πατηθούν. Πρέπει να προσθέσουμε αυτή την συνάρτηση στο πηγαίο κώδικα.

Packit 1470ea

Για να το κάνετε αυτό, ανοίξτε το <file>guitar_tuner.py</file>, έχοντας ανοιχτό και το αρχείο της διεπαφής χρήστη. Πηγαίνετε στην καρτέλα <gui>σήματα</gui> που είχατε χρησιμοποιήσει για να ορίσετε το όνομα του σήματος. Τώρα πάρτε την γραμμή όπου ορίσατε το σήμα <gui>clicked</gui> και σύρετε την στον πηγαίο κώδικα μέσα στην κλάση. Ο ακόλουθος κώδικας θα προστεθεί στον πηγαίο σας αρχείο:

Packit 1470ea
Packit 1470ea
def on_button_clicked (self, button):
Packit 1470ea
Packit 1470ea
Packit 1470ea
  

Ο χειριστής σημάτων έχει δυο παράμετρους: τον τυπικό δείκτη κλάσης της Python και το Gtk.Button που καλεί την συνάρτηση.

Packit 1470ea
  

Για την ώρα, θα αφήσουμε το χειριστή σημάτων άδειο καθώς θα ασχοληθούμε με το γράψιμο του κώδικα που θα παράγει τους ήχους.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="gstreamer">
Packit 1470ea
  <title>Διοχετεύσεις GStreamer</title>
Packit 1470ea
  

Το Gtreamer είναι ο σκελετός πολυμέσων του GNOME — μπορείτε να το χρησιμοποιήσετε για να αναπαράγετε, ηχογραφήσετε, και να επεξεργαστείτε βίντεο, ήχο, ροές βίντεο και τα λοιπά. Εδώ, θα το χρησιμοποιήσουμε για να παράγουμε μονές-συχνότητες τόνων.

Packit 1470ea
  

Εννοιολογικά, το GStreamer λειτουργεί ως εξής: δημιουργείς μια διοχέτευση που περιέχει διάφορα επεξεργαζόμενα στοιχεία που πηγαίνουν από την πηγή στην έξοδο. Η πηγή μπορεί να είναι ένα αρχείο εικόνας, βίντεο, ή και μουσικής, για παράδειγμα, και η έξοδος μπορεί να είναι ένα γραφικό στοιχείο ή η κάρτα ήχου.

Packit 1470ea
  

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

Packit 1470ea
  <media type="image" mime="image/png" src="media/guitar-tuner-pipeline.png">
Packit 1470ea
    

Ένα παράδειγμα διοχέτευσης GStreamer.

Packit 1470ea
  </media>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="pipeline">
Packit 1470ea
  <title>Ρύθμιση της διοχέτευσης</title>
Packit 1470ea
  

Σε αυτό το απλό παράδειγμα θα χρησιμοποιήσουμε μια πηγή παραγωγής τόνων, την audiotestsrc και θα στείλουμε την έξοδο στην προεπιλεγμένη συσκευή ήχου του συστήματος, autoaudiosink. Πρέπει μόνο να ρυθμίσουμε την συχνότητα της παραγωγής τόνου· αυτό είναι εφικτό μέσα από την ρύθμιση freq του audiotestsrc.

Packit 1470ea
Packit 1470ea
  

Αλλάξτε τη γραμμή import στο αρχείο <file>guitar_tuner.py</file>, μόνο στην αρχή σε :

Packit 1470ea
  from gi.repository import Gtk, Gst, GObject 
Packit 1470ea
  

Το Gst περιέχει τη βιβλιοθήκη GStreamer. Επίσης πρέπει να αρχικοποιήσετε σωστά το GStreamer το οποίο γίνεται στη μέθοδο main() με την προσθήκη αυτής γραμμής πάνω από την γραμμή app = GUI():

Packit 1470ea
  Gst.init_check(sys.argv)
Packit 1470ea
  

Μετά, αντιγράψτε την ακόλουθη συνάρτηση κάπου στην κλάση στο <file>guitar_tuner.py</file>:

Packit 1470ea
  
Packit 1470ea
def play_sound(self, frequency):
Packit 1470ea
	pipeline = Gst.Pipeline(name='note')
Packit 1470ea
	source = Gst.ElementFactory.make('audiotestsrc', 'src')
Packit 1470ea
	sink = Gst.ElementFactory.make('autoaudiosink', 'output')
Packit 1470ea
Packit 1470ea
	source.set_property('freq', frequency)
Packit 1470ea
	pipeline.add(source)
Packit 1470ea
	pipeline.add(sink)
Packit 1470ea
	source.link(sink)
Packit 1470ea
	pipeline.set_state(Gst.State.PLAYING)
Packit 1470ea
Packit 1470ea
	GObject.timeout_add(self.LENGTH, self.pipeline_stop, pipeline)
Packit 1470ea
  <steps>
Packit 1470ea
    <item>
Packit 1470ea
    

Οι τρεις πρώτες γραμμές δημιουργούν τα στοιχεία πηγή, έξοδος και διοχέτευση (το οποίο θα χρησιμοποιηθεί σαν υποδοχέας για τα δυο άλλα στοιχεία). Δίνουμε το όνομα "note" στη διοχέτευση· ονομάζουμε την πηγή "source" και το ρυθμίζετε στην πηγή audiotestsrc· και ονομάζουμε την έξοδο "output" και την ρυθμίζετε στην έξοδο autoaudiosink (προεπιλεγμένη κάρτα ήχου).

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Το κάλεσμα της source.set_property ορίζει την ιδιότητα freq του στοιχείου πηγή σε frequency, η οποία έχει περαστεί σαν παράμετρος στη συνάρτηση play_sound. Αυτή είναι η συχνότητα της νότας σε Hertz· πολλές χρήσιμες συχνότητες θα οριστούν αργότερα.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Οι επόμενες δύο γραμμές καλούν το pipeline.add, βάζοντας την πηγή και την έξοδο στη διοχέτευση. Η διοχέτευση μπορεί να περιέχει διάφορα στοιχεία του GStreamer. Γενικά, μπορείτε να προσθέσετε όσα στοιχεία θέλετε στη διοχέτευση καλώντας συνεχόμενα τη μέθοδο add.

Packit 1470ea
    </item>
Packit 1470ea
    <item>
Packit 1470ea
    

Μετά η pipeline.set_state χρησιμοποιείται για να ξεκινήσει η αναπαραγωγή, αλλάζοντας την κατάσταση της διοχέτευσης σε αναπαραγωγή (Gst.State.PLAYING).

Packit 1470ea
    </item>
Packit 1470ea
  </steps>
Packit 1470ea
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="playback">
Packit 1470ea
  <title>Διακοπή αναπαραγωγής</title>
Packit 1470ea
  

Δεν θέλουμε να παίζουμε έναν ενοχλητικό ήχο για πάντα, οπότε το τελευταίο πράγμα που κάνει η play_sound είναι να καλεί το GObject.timeout_add. Αυτό ορίζει ένα χρονικό περιθώριο που θα σταματήσει τον ήχο· περιμένει για LENGTH χιλιοστά του δευτερολέπτου πριν καλέσει τη συνάρτηση pipeline_stop, και θα συνεχίσει να την καλεί μέχρι η pipeline_stop να επιστρέψει False.

Packit 1470ea
  

Τώρα θα γράψουμε τη συνάρτηση pipeline_stop, η οποία καλείται από το GObject.timeout_add. Προσθέστε τον ακόλουθο κώδικα πάνω από τη συνάρτηση play_sound:

Packit 1470ea
  
Packit 1470ea
def pipeline_stop(self, pipeline):
Packit 1470ea
	pipeline.set_state(Gst.State.NULL)
Packit 1470ea
	return False
Packit 1470ea
Packit 1470ea
  

Πρέπει να ορίσετε τη σταθερά LENGTH μέσα στην κλάση, οπότε προσθέστε αυτόν τον κώδικα στην αρχή της κύριας κλάσης:

Packit 1470ea
  
Packit 1470ea
LENGTH = 500
Packit 1470ea
Packit 1470ea
  

Η κλήση στη pipeline.set_state σταματά την αναπαραγωγή της διοχέτευσης.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="tones">
Packit 1470ea
  <title>Ορισμός των τόνων</title>
Packit 1470ea
  

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

Packit 1470ea
  
Packit 1470ea
# Frequencies of the strings
Packit 1470ea
frequencies = {
Packit 1470ea
	'E': 329.63,
Packit 1470ea
	'A': 440,
Packit 1470ea
	'D': 587.33,
Packit 1470ea
	'G': 783.99,
Packit 1470ea
	'B': 987.77,
Packit 1470ea
	'e': 1318.5
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
  

Για να δούμε τον χειριστή σημάτων που ορίσαμε πριν, on_button_clicked. Θα μπορούσαμε να είχαμε συνδέσει όλα τα κουμπιά σε διαφορετικό χειριστή σημάτων, αλλά αυτό θα οδηγούσε σε πολλές επαναλήψεις του κώδικα. Αντί αυτού, μπορούμε να χρησιμοποιήσουμε τις ετικέτες στα κουμπιά για να δούμε ποιο πατήθηκε:

Packit 1470ea
  
Packit 1470ea
def on_button_clicked(self, button):
Packit 1470ea
	label = button.get_child()
Packit 1470ea
	text = label.get_label()
Packit 1470ea
Packit 1470ea
	self.play_sound (self.frequencies[text])
Packit 1470ea
Packit 1470ea
  

Το κουμπί που πατήθηκε περνάει σαν παράμετρος (button) στο on_button_clicked. Μπορούμε να πάρουμε την ετικέτα του κουμπιού χρησιμοποιώντας το button.get_child, και το κείμενο από την ετικέτα χρησιμοποιώντας το label.get_label.

Packit 1470ea
  

Το κείμενο της ετικέτας χρησιμοποιείται σαν κλειδί για το λεξικό και καλείται η play_sound με την κατάλληλη συχνότητα από την νότα. Αυτό παίζει τον τόνο· ο συντονιστής κιθάρας είναι έτοιμος!

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="run2">
Packit 1470ea
  <title>Τρέξτε την εφαρμογή</title>
Packit 1470ea
  

Το πρόγραμμα πρέπει να είναι έτοιμο τώρα. Για να ξεκινήσετε το πρόγραμμα πατήστε <guiseq><gui>Εκτέλεση</gui><gui>Εκτέλεση</gui></guiseq>. Απολαύστε το!

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="impl">
Packit 1470ea
 <title>Υλοποίηση αναφοράς</title>
Packit 1470ea
 

Αν αντιμετωπίσετε προβλήματα με το μάθημα, συγκρίνετε τον κώδικά σας με αυτόν τον <link href="guitar-tuner/guitar-tuner.py">κώδικα αναφοράς</link>.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="next">
Packit 1470ea
  <title>Επόμενα βήματα</title>
Packit 1470ea
  

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

Packit 1470ea
  <list>
Packit 1470ea
   <item>
Packit 1470ea
   

Βάλτε το πρόγραμμα να περνάει αυτόματα μέσα από τις νότες.

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
   

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

Packit 1470ea
   

Για να το κάνετε αυτό, πρέπει να ρυθμίσετε μια πιο περίπλοκη διοχέτευση GStreamer που θα σας επιτρέπει να φορτώνετε και να αναπαράγετε αρχεία ήχου. Θα πρέπει να διαλέξετε τα στοιχεία GStreamer <link href="http://gstreamer.freedesktop.org/documentation/plugins.html">decoder και demuxer</link> με βάση τον τύπο του αρχείου των ηχογραφημένων ήχων — για παράδειγμα το MP3 χρησιμοποιεί διαφορετικά στοιχεία από το Ogg Vorbis.

Packit 1470ea
   

Ίσως χρειαστεί να συνδέσετε τα στοιχεία με πιο περίπλοκους τρόπους. Αυτό μπορεί να συμπεριλαμβάνει τη χρήση <link href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-intro-basics.html">Εννοιών GStreamer</link> που δεν καλύπτουμε σε αυτόν τον οδηγό, όπως και <link href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-intro-basics-pads.html">pad</link>. Ίσως βρείτε χρήσιμη και την εντολή <cmd>gst-inspect</cmd>.

Packit 1470ea
   </item>
Packit 1470ea
   <item>
Packit 1470ea
   

Αυτόματη ανάλυση νότων που παίζει ο χρήστης.

Packit 1470ea
   

Μπορείτε να συνδέσετε μικρόφωνο και να ηχογραφήσετε από αυτό χρησιμοποιώντας την <link href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-autoaudiosrc.html">πηγή εισόδου</link>. Ίσως κάποια μορφή της <link href="http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-plugin-spectrum.html">ανάλυσης φάσματος</link> θα σας βοηθούσε να καταλάβετε ποια νότα παίζει;

Packit 1470ea
   </item>
Packit 1470ea
  </list>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
</page>