Bir yorumda belirtildiği gibi, söz konusu metronomları (Linux / Ubuntu için mevcut) 16.04'te çalıştıramadım, en azından kutudan çıkamadım. Çalıştırmak için fazla zaman harcamadım , çünkü neredeyse hepsi terkedilmek izlenimi veriyor.
Bir tane yazma zamanı ...
Bu cevap (devam eden çalışma ) sonunda GUI dahil bir metronom oluşturmalıdır. İstediğiniz olası özelliklerden bahsetmek için iyi bir zaman.
1. CLI metronom
Basit bir metronom oluşturmak şok edici derecede basittir:
#!/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"])
Nasıl kullanılır
Metronomun sesi çalmak için vorbis-araçlara ihtiyacı var
sudo apt-get install vorbis-tools
- Yukarıdaki komut dosyasını boş bir dosyaya kopyalayın, metronome.py olarak kaydedin
Bağımsız değişken olarak bpm ile çalıştırın:
python3 /path/to/metronome.py <bpm>
Örneğin:
python3 /path/to/metronome.py 100
Dakikada 100 vuruşla çalıştırmak için
Not
Ses için, /usr/share/sounds/ubuntu/stereo/bell.ogg
varsayılan olarak sisteminizde olması gereken dosyayı kullandım (test 14.04 / 16.04). Ancak istediğiniz herhangi bir ( .ogg
) örneği kullanabilirsiniz. Son sürümde, bir dizi seçenek (sesler) mevcut olacaktır.
2. Şaşırtıcı derecede basit GUI sürümü
Bir sonraki adım olarak, çok temel bir sürüm, yükleyici olmayan son sürüm:
Senaryo
#!/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()
Görüntü
Nasıl kullanılır
Cli sürümü gibi, bunun da ihtiyacı var vorbis-tools
:
sudo apt-get install vorbis-tools
Komut dosyasını boş bir dosyaya kopyalayın, metro.py
- Bunun tasarrufu, yukarıdaki resmin üzerine tıklayarak sağ birinde ve komut dosyasıyla aynı dizin olarak (tam olarak):
icon.png
.
Metronomu şu komutla çalıştırın:
python3 /path/to/metro.py
3. Turuncu Metronom için PPA
Halloldu!
Metronom montaja hazırdır.
Turuncu Metronom, aralarından seçim yapabileceğiniz bir dizi farklı sesle birlikte gelir ve ritimler gruplanabilir. Tüm değişiklikler çalışan metronomda hemen uygulanır:
Yüklemek:
sudo apt-add-repository ppa:vlijm/orangemetronome
sudo apt-get update
sudo apt-get install orangemetronome
Yapılacak iş
Şu anda, metronom dört farklı sesle geliyor. Muhtemelen önümüzdeki birkaç gün içinde birkaç tane eklenecek, bazıları değiştirilecek / güncellenecek
Daha uzun vadede
Daha uzun vadede, mevcut metronomlarda her zaman kaçırdığım 3 + 3 + 2, 2 + 2 + 2 + 3 vb.Gibi (özel) karmaşık yapılar için bir seçenek eklemeyi düşünüyorum.
En sonunda
En son (mevcut) sürüm 0.5.3
birkaç ses ekler, ancak daha da önemlisi, düzensiz (kompozit) atımları çalıştırma seçeneği. Bu versiyonda, sabit kodlanmıştır. > 1 sürümünden özelleştirilebilir.