Google+ Seguidores

jueves, 4 de diciembre de 2014

Afinador de guitarra 1.0 (PyQt y Python)

    8

Hacía tiempo que tenía ganas de programar un afinador de guitarra y en estos días me he sacado las ganas :). Siempre me estoy fijando en alguna página web los tonos para ir afinando las cuerdas, pero hoy ya tengo mi propia app echa con Python y PyQt4.

Afinador de guitarra
Afinador de guitarra con Python y PyQt4

El código no es nada del otro mundo, es un poco de lo que he venido compartiendo sobre aplicaciones gráficas en python y algunas funciones con sonidos, lo comparto más abajo. También les comparto un vídeo en youtube para que vean como funciona.
El sonido lo he manejo con la librería pygame (los archivos de audio son con formato mp3).
En esta primera versión solo se podrá interactuar con los sonidos de las notas. En futuras versiones intentaré agregarle más funcionalidad.
Para aquellas personas que les guste tocar la guitarra (como a mi) y quieran probar el código, les dejo las descarga AQUI (Incluye: Tonos, afinador.ui y afinador.py)
El afinador de guitarra fue probado en un sistema Linux (Ubuntu), y para su correcto funcionamiento necesita tener instaladas las siguientes librerias:
- Pygame
- Pyqt4

Demo del afinador


Una foto de mis chiches :-)

Afinador de guitarra en python
Mis instrumentos

Codigo del afinador de guitarra 

22/10/2016 --> Actualizo código y enlace de descarga


#!/usr/bin/python
# -*- coding: utf-8 -*-

# Autor: Diego Caraballo
# Afinador de Guitarra con PyQt4
# http://www.pythondiario.com/2014/12/afinador-de-guitarra-10-pyqt-y-python.html
 
import sys
import pygame
import time
from PyQt4 import QtCore, QtGui, uic
from PyQt4.QtGui import QSound

# Cargar nuestro archivo .ui
form_class = uic.loadUiType("afinador.ui")[0]

class MyWindowClass(QtGui.QMainWindow, form_class):
    def __init__(self, parent=None):
        QtGui.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.btn_MI.clicked.connect(self.btn_MI_clicked)
        self.btn_LA.clicked.connect(self.btn_LA_clicked)
        self.btn_RE.clicked.connect(self.btn_RE_clicked)
        self.btn_SOL.clicked.connect(self.btn_SOL_clicked)
        self.btn_SI.clicked.connect(self.btn_SI_clicked)
        self.btn_mi.clicked.connect(self.btn_mi_clicked)
        self.btn_detener.clicked.connect(self.btn_Detener_clicked)
        pygame.mixer.init()

        
    def ruta():
  ruta = os.getcwd()
  return ruta
        
    def btn_MI_clicked(self):
        pygame.mixer.music.stop()
        
        pygame.mixer.init()
        pygame.mixer.music.load("E.mp3")
        pygame.mixer.music.play(-1)

    def btn_LA_clicked(self):
        pygame.mixer.music.stop()

        pygame.mixer.init()
        pygame.mixer.music.load("A.mp3")
        pygame.mixer.music.play(-1)

    def btn_RE_clicked(self):
        pygame.mixer.music.stop()

        pygame.mixer.init()
        pygame.mixer.music.load("D.mp3")
        pygame.mixer.music.play(-1)

    def btn_SOL_clicked(self):
        pygame.mixer.music.stop()

        pygame.mixer.init()
        pygame.mixer.music.load("G.mp3")
        pygame.mixer.music.play(-1)

    def btn_SI_clicked(self):
        
        pygame.mixer.music.stop()

        pygame.mixer.init()
        pygame.mixer.music.load("B.mp3")
        pygame.mixer.music.play(-1)

    def btn_mi_clicked(self):

        pygame.mixer.music.stop()
        
        
        pygame.mixer.init()
        pygame.mixer.music.load("e.mp3")
        pygame.mixer.music.play(-1)

                   

    def btn_Detener_clicked(self):

        pygame.mixer.music.stop()

    
            
    
app = QtGui.QApplication(sys.argv)
MyWindow = MyWindowClass(None)
pygame.init()
MyWindow.show()
app.exec_()



Espero que les guste, Saludos :)

8 comentarios:
Write comentarios
  1. Esta genial! Pero que no falto la nota Do?

    Propongo la creación de una cuenta en GitHub para Python Diario!

    Me parece mejor publicar el código así: http://bit.ly/12NeIQV

    ResponderEliminar
    Respuestas
    1. Hola Ismael, gracias por Respuesta. Los sonidos de las notas son las cuerdas al aire (para poder afinarlas): MI, La, Re, Sol, Si, mi. Ya cree una cuenta en GitHub, en breve comienzo a subir el código ahi. https://github.com/pythondiario
      Saludos

      Eliminar
  2. ¡Falta el mi agudo!
    El afinador está de 10 (si no fuera por ese nanusculo detalle)

    ResponderEliminar
  3. Hola, me gusta python, quiero que me sugieras un curso desde cero hasta un nivel experto...gracias

    ResponderEliminar
  4. Me encantaria podre mi propio afinador!! Recien estoy aprendiendo a programar ¿crees que es facil que pueda armarlo?

    ResponderEliminar
    Respuestas
    1. Hola Claudio, claro que si. Intenta con el código del afinador y cualquier cosa me consultas. Gracias por visitar el blog.

      Eliminar
  5. Hola Diego una pregunta, no me deja descargar el archivo con el programa, por favor ayudame para poder tener acceso a los archivos de los sonidos muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola Mayra, ya actualice el enlace y modifique el código (me faltaba una cuerda :()

      Gracias por visitar el blog!!!

      Saludos

      Eliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.