Wie in einem Kommentar erwähnt, konnte ich die erwähnten Metronome (die für Linux / Ubuntu existieren) unter 16.04 nicht zum Laufen bringen, zumindest nicht sofort. Ich habe nicht viel Zeit damit verbracht , es zum Laufen zu bringen , da praktisch alle den Eindruck erwecken, verlassen zu werden.
Zeit, eins zu schreiben ...
Diese Antwort ( in Arbeit ) sollte schließlich zu einem Metronom führen, einschließlich der grafischen Benutzeroberfläche. Ein guter Zeitpunkt, um mögliche Funktionen zu erwähnen, die Sie möchten.
1. CLI-Metronom
Das Erstellen eines einfachen Metronoms gestaltet sich schockierend einfach:
#!/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"])
Wie benutzt man
Das Metronom benötigt Vorbis-Tools, um den Sound abzuspielen
sudo apt-get install vorbis-tools
- Kopieren Sie das obige Skript in eine leere Datei und speichern Sie es als metronome.py
Führen Sie es mit der BPM als Argument aus:
python3 /path/to/metronome.py <bpm>
z.B:
python3 /path/to/metronome.py 100
Um es mit 100 Schlägen pro Minute laufen zu lassen
Hinweis
Für den Sound habe ich die Datei verwendet /usr/share/sounds/ubuntu/stereo/bell.ogg
, die sich standardmäßig auf Ihrem System befinden sollte (getestet 14.04 / 16.04). Sie können jedoch jedes beliebige ( .ogg
) Beispiel verwenden. In der endgültigen Version stehen eine Reihe von Optionen (Sounds) zur Verfügung.
2. Erschreckend einfache GUI-Version
Als nächster Schritt eine sehr einfache Version, die letzte Version ohne Installer:
Das Drehbuch
#!/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()
Das Bild
Wie benutzt man
Wie die CLI-Version benötigt diese vorbis-tools
:
sudo apt-get install vorbis-tools
Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter metro.py
- Rechtsklicken Sie auf das Bild oben, speichern es in ein und dasselbe Verzeichnis wie das Skript als (genau):
icon.png
.
Führen Sie einfach das Metronom mit dem folgenden Befehl aus:
python3 /path/to/metro.py
3. PPA für das Orange Metronom
Es ist vollbracht!
Das Metronom ist zur Installation bereit.
Das Orange Metronom bietet eine Reihe verschiedener Sounds zur Auswahl, und die Beats können gruppiert werden. Alle Änderungen werden sofort auf das laufende Metronom angewendet:
Installieren:
sudo apt-add-repository ppa:vlijm/orangemetronome
sudo apt-get update
sudo apt-get install orangemetronome
Arbeit zu tun
Derzeit stehen dem Metronom vier verschiedene Sounds zur Auswahl. Wahrscheinlich werden einige in den nächsten Tagen hinzugefügt, einige werden ersetzt / aktualisiert
Langfristig
Langfristig denke ich darüber nach, die Option für (benutzerdefinierte) komplexe Strukturen wie 3 + 3 + 2, 2 + 2 + 2 + 3 usw. hinzuzufügen, die ich in vorhandenen Metronomen immer vermisst habe.
Schließlich
Die neueste (aktuelle) Version 0.5.3
bietet eine Reihe von Sounds, vor allem aber die Möglichkeit, unregelmäßige (zusammengesetzte) Beats auszuführen. In dieser Version sind sie fest codiert. Kann ab Version> 1 angepasst werden.