Como se menciona en un comentario, no pude hacer que los metrónomos mencionados (existentes para Linux / Ubuntu) funcionen en 16.04, al menos no fuera de la caja. No pasé mucho tiempo haciendo que funcione , ya que prácticamente todos dan la impresión de ser abandonados.
Hora de escribir uno ...
Esta respuesta trabajo en progreso ) eventualmente debería conducir a un metrónomo, incluida la GUI. Un buen momento para mencionar las posibles características que le gustaría.
1. metrónomo CLI
Crear un metrónomo directo resulta ser sorprendentemente simple:
#!/usr/bin/env python3
import subprocess
import sys
import time
bpm = int(sys.argv[1])
pauze = 60/bpm
while True:
time.sleep(pauze)
subprocess.Popen(["ogg123", "/usr/share/sounds/ubuntu/stereo/bell.ogg"])
Cómo utilizar
El metrónomo necesita herramientas vorbis para reproducir el sonido.
sudo apt-get install vorbis-tools
- Copie el script anterior en un archivo vacío, guárdelo como metronome.py
Ejecútelo con el bpm como argumento:
python3 /path/to/metronome.py <bpm>
p.ej:
python3 /path/to/metronome.py 100
Para ejecutarlo con 100 latidos por minuto
Nota
Para el sonido, usé el archivo /usr/share/sounds/ubuntu/stereo/bell.ogg
, que debería estar en su sistema por defecto (probado 14.04 / 16.04). Sin embargo, puede usar cualquier ( .ogg
) muestra que desee. En la versión final, habrá varias opciones (sonidos) disponibles.
2. Versión GUI sorprendentemente simple
Como siguiente paso, una versión muy básica, la última versión sin un instalador:
La secuencia de comandos
#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
import sys
import subprocess
import time
from threading import Thread
import os
path = os.path.dirname(os.path.realpath(__file__))
class MetroWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Shockingly simple Metronome")
self.speed = 70
self.run = False
# maingrid
maingrid = Gtk.Grid()
maingrid.set_column_homogeneous(True)
maingrid.set_row_homogeneous(False)
maingrid.set_border_width(30)
self.add(maingrid)
# icon
image = Gtk.Image(xalign=0)
image.set_from_file(os.path.join(path, "icon.png"))
maingrid.attach(image, 0, 0, 1, 1)
# vertical slider, initial value, min, max, step, page, psize
self.v_scale = Gtk.Scale(
orientation=Gtk.Orientation.VERTICAL,
adjustment=Gtk.Adjustment.new(self.speed, 10, 240, 1, 0, 0)
)
self.v_scale.set_vexpand(True)
self.v_scale.set_digits(0)
self.v_scale.connect("value-changed", self.scale_moved)
maingrid.attach(self.v_scale, 1, 0, 2, 1)
self.togglebutton = Gtk.Button("_Run", use_underline=True)
self.togglebutton.connect("clicked", self.time_out)
self.togglebutton.set_size_request(70,20)
maingrid.attach(self.togglebutton, 3, 3, 1, 1)
# start the thread
self.update = Thread(target=self.run_metro, args=[])
self.update.setDaemon(True)
self.update.start()
def scale_moved(self, event):
self.speed = int(self.v_scale.get_value())
def time_out(self, *args):
if self.run == True:
self.run = False
self.togglebutton.set_label("Run")
else:
self.run = True
self.togglebutton.set_label("Pauze")
def pauze(self):
return 60/self.speed
def run_metro(self):
soundfile = "/usr/share/sounds/ubuntu/stereo/bell.ogg"
while True:
if self.run == True:
subprocess.Popen([
"ogg123", soundfile
])
time.sleep(self.pauze())
def run_gui():
window = MetroWindow()
window.connect("delete-event", Gtk.main_quit)
window.set_resizable(False)
window.show_all()
Gtk.main()
run_gui()
La imagen
Cómo utilizar
Al igual que la versión cli, esta necesita vorbis-tools
:
sudo apt-get install vorbis-tools
Copie el script en un archivo vacío, guárdelo como metro.py
- Botón derecho del ratón sobre la imagen, guardarla en uno y el mismo directorio que el script (exactamente) como:
icon.png
.
Simplemente ejecute el metrónomo con el comando:
python3 /path/to/metro.py
3. PPA para el metrónomo naranja
¡Se hace!
El metrónomo está listo para la instalación.
El metrónomo naranja viene con un conjunto de sonidos diferentes para elegir, y los ritmos se pueden agrupar. Todos los cambios se aplican inmediatamente en el metrónomo en ejecución:
Instalar:
sudo apt-add-repository ppa:vlijm/orangemetronome
sudo apt-get update
sudo apt-get install orangemetronome
Trabajo por hacer
Actualmente, el metrónomo viene con cuatro sonidos diferentes para elegir. Probablemente se agregarán algunos en los próximos días, algunos de ellos serán reemplazados / actualizados
A más largo plazo
A más largo plazo, estoy pensando en agregar la opción para estructuras complejas (personalizadas) como 3 + 3 + 2, 2 + 2 + 2 + 3, etc., que siempre me perdí en los metrónomos existentes.
Finalmente
La última versión (actual) 0.5.3
agrega varios sonidos, pero lo más importante, la opción de ejecutar ritmos irregulares (compuestos). En esta versión, están codificados. Será personalizable desde la versión> 1.