Come menzionato in un commento, non sono riuscito a far funzionare i metronomi menzionati (esistenti per Linux / Ubuntu) su 16.04, almeno non pronti all'uso. Non ho trascorso molto tempo a farlo funzionare , dal momento che praticamente tutti danno l'impressione di essere abbandonati.
È tempo di scriverne uno ...
Questa risposta ( lavori in corso ) dovrebbe infine portare a un metronomo, compresa la GUI. Un buon momento per menzionare le possibili funzionalità che desideri.
1. Metronomo CLI
La creazione di un metronomo semplice risulta sorprendentemente semplice:
#!/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"])
Come usare
Il metronomo ha bisogno di strumenti vorbis per riprodurre il suono
sudo apt-get install vorbis-tools
- Copia lo script sopra in un file vuoto, salvalo come metronome.py
Eseguilo con bpm come argomento:
python3 /path/to/metronome.py <bpm>
per esempio:
python3 /path/to/metronome.py 100
Per eseguirlo con 100 battiti al minuto
Nota
Per il suono, ho usato il file /usr/share/sounds/ubuntu/stereo/bell.ogg
, che dovrebbe essere sul tuo sistema di default (testato 14.04 / 16.04). Puoi comunque usare qualsiasi ( .ogg
) campione che ti piace. Nella versione finale, saranno disponibili diverse opzioni (suoni).
2. Versione della GUI incredibilmente semplice
Come passaggio successivo, una versione molto semplice, l'ultima versione senza un programma di installazione:
Il copione
#!/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()
L'immagine
Come usare
Come la versione cli, anche questa ha bisogno di vorbis-tools
:
sudo apt-get install vorbis-tools
Copia lo script in un file vuoto, salvalo come metro.py
- Pulsante destro del mouse sull'immagine qui sopra, salvarlo in una stessa directory dello script (esattamente) come:
icon.png
.
Basta eseguire il metronomo con il comando:
python3 /path/to/metro.py
3. PPA per il metronomo arancione
È fatta!
Il metronomo è pronto per l'installazione.
Orange Metronome viene fornito con una serie di suoni diversi tra cui scegliere e i ritmi possono essere raggruppati. Tutte le modifiche vengono applicate immediatamente sul metronomo in esecuzione:
Installare:
sudo apt-add-repository ppa:vlijm/orangemetronome
sudo apt-get update
sudo apt-get install orangemetronome
Lavoro da fare
Attualmente, il metronomo viene fornito con quattro suoni diversi tra cui scegliere. Probabilmente ne verranno aggiunti alcuni nei prossimi giorni, alcuni di essi verranno sostituiti / aggiornati
A più lungo termine
A più lungo termine, sto pensando di aggiungere l'opzione per strutture (personalizzate) complesse come 3 + 3 + 2, 2 + 2 + 2 + 3 ecc., Che mi mancavano sempre nei metronomi esistenti.
Infine
L'ultima versione (attuale) 0.5.3
aggiunge una serie di suoni, ma soprattutto l'opzione per eseguire ritmi irregolari (compositi). In questa versione, sono codificati. Sarà personalizzabile dalla versione> 1.