Как упоминалось в комментарии, я не смог заставить упомянутые метрономы (существующие для Linux / Ubuntu) работать 16.04, по крайней мере, не из коробки. Я не тратил много времени на то, чтобы заставить его работать , так как практически все они создают впечатление, что его бросили.
Время написать один ...
Этот ответ ( работа в процессе ) должна в конечном итоге привести к метроному, включая GUI. Хорошее время, чтобы упомянуть возможные функции, которые вы хотели бы.
1. CLI метроном
Создание простого метронома оказывается невероятно простым:
#!/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"])
Как пользоваться
Метроном нужен ворб-инструмент, чтобы играть звук
sudo apt-get install vorbis-tools
- Скопируйте приведенный выше скрипт в пустой файл, сохраните его как metronome.py
Запустите его с аргументом bpm:
python3 /path/to/metronome.py <bpm>
например:
python3 /path/to/metronome.py 100
Чтобы запустить его со 100 ударами в минуту
Заметка
Для звука я использовал файл /usr/share/sounds/ubuntu/stereo/bell.ogg
, который должен быть в вашей системе по умолчанию (проверено 14.04 / 16.04). Однако вы можете использовать любой ( .ogg
) сэмпл, который вам нравится. В финальной версии будет доступен ряд опций (звуков).
2. Шокирующе простая версия GUI
В качестве следующего шага, очень простая версия, последняя версия без установщика:
Сценарий
#!/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()
Изображение
Как пользоваться
Как и в случае с Cli-версией, нужна эта vorbis-tools
:
sudo apt-get install vorbis-tools
Скопируйте скрипт в пустой файл, сохраните его как metro.py
- Щелкните правой кнопкой мыши на изображение выше, сохранить его в одном и том же каталоге, что и скрипт (точно) , как:
icon.png
.
Просто запустите метроном по команде:
python3 /path/to/metro.py
3. PPA для оранжевого метронома
Сделано!
Метроном готов к установке.
Оранжевый Метроном поставляется с набором различных звуков на выбор, и ритмы могут быть сгруппированы. Все изменения применяются немедленно к работающему метроному:
Установить:
sudo apt-add-repository ppa:vlijm/orangemetronome
sudo apt-get update
sudo apt-get install orangemetronome
Работа, которую нужно сделать
В настоящее время метроном поставляется с четырьмя различными звуками на выбор. Вероятно, некоторые из них будут добавлены в ближайшие несколько дней, некоторые из них будут заменены / обновлены.
В более долгосрочной перспективе
В долгосрочной перспективе я думаю о добавлении опции для (пользовательских) сложных структур, таких как 3 + 3 + 2, 2 + 2 + 2 + 3 и т. Д., Которые я всегда упускал в существующих метрономах.
в заключение
Последняя (текущая) версия 0.5.3
добавляет ряд звуков, но, что более важно, возможность запуска нерегулярных (составных) ударов. В этой версии они жестко закодированы. Будет настраиваться с версии> 1.