의견에서 언급했듯이 적어도 16.04에서 언급 한 메트로놈 (Linux / Ubuntu에 존재)을 얻을 수 없었습니다. 나는 그것이 실제로 작동하는 데 많은 시간을 소비하지 않았다. 사실상 그들 모두는 버려지는 인상을주기 때문이다.
하나 쓸 시간 ...
이 답변 ( 진행중인 작업 )은 결국 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-tools가 필요합니다.
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
끝났습니다!
메트로놈을 설치할 준비가되었습니다.
Orange Metronome에는 선택할 수있는 다양한 사운드 세트가 있으며 비트를 그룹화 할 수 있습니다. 모든 변경 사항은 실행중인 메트로놈에 즉시 적용됩니다.
설치하기 위해서:
sudo apt-add-repository ppa:vlijm/orangemetronome
sudo apt-get update
sudo apt-get install orangemetronome
해야할 일
현재 메트로놈에는 선택할 수있는 네 가지 사운드가 있습니다. 아마도 몇 일 안에 몇 개가 추가 될 것이며, 일부는 교체 / 업데이트 될 것입니다
장기에
장기적를 들어, 나는 항상 기존의 메트로놈 놓친 + 2 3 + 3, 2 등 + 2 + 2 + 3처럼 (사용자 정의) 복잡한 구조에 대한 옵션을 추가 할 생각입니다.
드디어
최신 (현재) 버전 0.5.3
은 여러 가지 소리를 추가하지만 더 중요한 것은 불규칙한 (복합) 비트를 실행하는 옵션입니다. 이 버전에서는 하드 코딩되어 있습니다. 버전> 1에서 사용자 정의 할 수 있습니다.