これはどういうわけかこの質問のフォローアップです:
曲のBPM(1分あたりのビート数)を検出するにはどうすればよいですか?
しかし、今では歌でそれらを検出する代わりに、それらを生成したいと思います。
サウンド(ビープ音のような短い音)を1分あたり設定可能な回数出力するアプリケーションを探しています。
20bpmと言うと、3秒ごとにその音が出力されます。 (60/20)
60bpmの場合、毎秒。
120秒ごとに0.5秒ごと。
これは、ドラムセットの演奏方法を学んでいるため、bpmが非常に重要だからです。 youtube でこのビデオをフォローしています。
metronomes
と呼ばれているようで、Googleでさえも入手しています。クール。
https://www.google.com/search?q=metronomes
ニックに感謝します。
コメントで述べたように、16.04で動作する言及されたメトロノーム(Linux/Ubuntu用に存在する)を、少なくとも箱から出してはいけませんでした。 動作させるのにあまり時間を費やしませんでした。ほとんどすべての人が見捨てられた印象を与えるからです。
書きましょう...
この回答(work in progress)は、最終的にGUIを含むメトロノームにつながるはずです。あなたが望む可能性のある機能について言及する良い機会です。
簡単なメトロノームの作成は、驚くほど簡単です。
#!/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
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
)サンプルを使用できます。最終バージョンでは、いくつかのオプション(サウンド)が利用可能になります。
次のステップとして、非常に基本的なバージョン、インストーラーのない最後のバージョン:
#!/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
完了です!
メトロノームをインストールする準備ができました。
オレンジメトロノームにはさまざまなサウンドが用意されており、ビートをグループ化できます。すべての変更は、実行中のメトロノームにすぐに適用されます。
インストールする:
Sudo apt-add-repository ppa:vlijm/orangemetronome
Sudo apt-get update
Sudo apt-get install orangemetronome
現在、メトロノームには4つの異なるサウンドが用意されています。おそらく数日のうちにいくつかが追加され、そのうちのいくつかは置き換え/更新されます
長期的に
長期的には、既存のメトロノームでは見逃していた3 + 3 + 2、2 + 2 + 2 + 3などの(カスタム)複雑な構造のオプションを追加することを考えています。
最新の(現在の)バージョン0.5.3
は多くのサウンドを追加しますが、さらに重要なことは、不規則な(コンポジット)ビートを実行するオプションです。このバージョンでは、ハードコーディングされています。バージョン> 1からカスタマイズ可能です。
メトロノームを探しているようですね!
オーディオ編集ソフトウェアAudacityは、安定したメトロノームのようなビートまたはトーンを生成できます(「生成」メニューをご覧ください)。 AudacityはUbuntuソフトウェアリポジトリにあり、ソフトウェアセンターから、またはターミナルウィンドウでSudo apt install audacity
と入力することでインストールできます。
練習中にインターネットにアクセスする予定がある場合は、オンラインメトロノームが豊富です。
Ubuntuソフトウェアリポジトリで利用できる他のメトロノームソフトウェアには、gtick、klick、gtklick、およびkmetronomeがありますが、自分で試したことはありません。
metronome.sh [beats per minute] [beats per measure]
metronome-core.sh
の下にありますmetronome.sh
metronome.sh 75 # 75 BPM
metronome.sh 120 3 # 120 BPM, 3 beats per measure
#!/bin/bash
# metronome.sh - Is a metronome.
# Usage: metronome.sh [beats per minute] [beats per measure]
# Set BPM and beats per measure.
bpm="${1-120}"
msr="${2-4}"
# Get seconds per beat using bc.
# "-0.004" accounts for approximate execution time.
beat_time="$(bc -l <<< "scale=5; 60/$bpm-0.004")"
echo "Metronome playing $bpm BPM, $msr beats per measure"
echo -n "Press Ctrl+C to quit."
while true; do
for ((i=1; i<=$msr; i++)); do
if [[ $i -eq 1 ]]; then
# Accentuated beat.
canberra-gtk-play --id='dialog-information' &
else
# Unaccentuated beat
canberra-gtk-play --id='button-toggle-on' &
fi
# Wait before next beat. Will exit if beat time is invalid.
sleep "$beat_time" || exit
done
done
ギターを弾いてgtickを使用します。これは非常にうまく機能します。1分あたりのビート、音量、拍子記号、1/4、2/4、3/4を調整できます。など。次を使用してコマンドラインからインストールできます。
Sudo apt-get install gtick
heres my gtick:i.imgsafe.org/f2dc6c70f2.png
Kmetronomeを試しましたか? apt-get/synapticを使用できる必要があります。