ดังที่ได้กล่าวไว้ในความคิดเห็นฉันไม่สามารถรับ metronomes ที่กล่าวถึง (มีอยู่สำหรับ 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"])
วิธีใช้
เครื่องเมตรอนอมต้องการเครื่องมือ vorbis เพื่อเล่นเสียง
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 เป็นต้นซึ่งฉันคิดถึง metronomes ที่มีอยู่เสมอ
ในที่สุด
รุ่นล่าสุด (ปัจจุบัน) 0.5.3
เพิ่มเสียงจำนวนหนึ่ง แต่ที่สำคัญกว่านั้นคือตัวเลือกในการเรียกใช้จังหวะ (ประกอบ) ที่ผิดปกติ ในรุ่นนี้พวกเขารหัสยาก จะสามารถปรับแต่งได้จากรุ่น> 1