在哪里可以找到节拍器进行音乐练习?


12

这是该问题的后续处理:

如何检测歌曲的BPM(每分钟的节拍)?

但是现在我不想在歌曲中检测到它们,而是要生成它们。


我正在寻找一种应用程序,该应用程序每分钟可以输出可配置次数的声音(有点像哔哔声)。

如果我说20bpm,它将每3秒输出一次声音。(60/20)
如果每秒60bpm,则每秒。
如果每半秒120bpm。

原因是我正在学习如何演奏鼓组,而bpm看起来确实很重要。我正在youtube上观看此视频。

更新

似乎他们被称为metronomes,甚至谷歌也得到了。酷的东西。
https://www.google.com/search?q=metronomes
谢谢尼克。


1
Audacity可以做到这一点(在“ Generate”菜单下查看),尽管可能有更简单的程序。如果您打算在练习期间访问互联网,那么在线节拍就足够了。
尼克·温伯格

2
gtickklickgtklickkmetronome可能是其他选项,它们都可以在Ubuntu软件存储库中使用。
尼克·温伯格

在Linux下运行的节拍似乎已经过时了。不起作用,至少不是开箱即用。是时候写一个了:) @NickWeinberg我尝试了所有的方法,但似乎没有任何效果。
雅各布·弗利姆

嘿@JacobVlijm有可以执行此操作的python脚本吗?我真的应该学习python ...
Parto

我很快会试一试!
雅各布·弗利姆

Answers:


20

正如评论中提到的那样,我无法在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"])

如何使用

  1. 节拍器需要使用vorbis工具才能播放声音

    sudo apt-get install vorbis-tools
    
  2. 将上面的脚本复制到一个空文件中,另存为Metronome.py
  3. 使用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()

图片

在此处输入图片说明

如何使用

  1. 像cli版本一样,这需要vorbis-tools

    sudo apt-get install vorbis-tools
    
  2. 将脚本复制到一个空文件中,另存为 metro.py

  3. 右键点击上面的图片,将其保存在同一个目录中的脚本(完全一致)为:icon.png
  4. 只需通过以下命令运行节拍器:

    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

要做的工作

  • 当前,节拍器带有四种不同的声音可供选择。未来几天可能会添加一些,其中一些将被替换/更新

  • 从长远
    来看,从长远来看,我正在考虑为(自定义)复杂结构(如3 + 3 + 2、2 + 2 + 2 + 3等)添加选项,而我在现有节拍中总是会错过。

最后

最新(当前)版本0.5.3增加了许多声音,但更重要的是,可以选择运行不规则(复合)节拍。在此版本中,它们是硬编码的。可从版本> 1。

在此处输入图片说明


@Parto很酷,我将继续讨论。您的Ubuntu版本是什么?
雅各布·弗利姆

太好了,会在这里。Ubuntu版本:14.04。
2016年

@Parto ...以及第一个gui版本...
Jacob Vlijm

1
我会给您+15的正确答案,但给尼克+100,以使他的成绩超过2K。
Parto

1
@Parto绝对!可能需要一两天,我想提供一些选择。
雅各布·弗利姆

9

听起来您正在寻找节拍器!

音频编辑软件Audacity可以生成稳定的,类似节拍器的节拍或声音(在“ Generate”菜单下查看),尽管下面会列出一些更简单的程序。Audacity位于Ubuntu软件存储库中,可以通过软件中心或sudo apt install audacity在终端窗口中键入来安装。

如果您打算在练习期间访问互联网,那么在线节拍就足够了。

Ubuntu软件存储库中可用的其他节拍器软件包括gtickklickgtklickkmetronome,尽管我自己都没有尝试过。


8

简单的Bash节拍器

用法

metronome.sh [beats per minute] [beats per measure]

信息

  • 默认情况下,它在4中以120 bpm的速度播放
  • 在我的GitHub存储库Metronome.sh上可以找到更多信息和更复杂的脚本。下面的脚本在下面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

太棒了。试了一下。
Parto

1

我弹吉他,使用gtick,对我来说效果很好,我可以调整每分钟的节拍,音量甚至时间拍号,1 / 4、2 / 4、3 / 4等。您可以使用以下命令从命令行安装它:

sudo apt-get install gtick

这是我的gtick:i.imgsafe.org/f2dc6c70f2.png


尼克已经提到过。在我的系统上也不起作用(Ubuntu Unity 16.04)。
雅各布·弗利姆

我知道尼克提到过它,但是我自己用过gtick,他没有提到过。我使用Ubuntu 16.04 LTS,它对我有用,您是否缺少一些音频依赖项?
亚伯汤姆

请参见:dl.dropboxusercontent.com/u/1155139/error.png不管设置如何,都会在多个系统上发生。阅读有关它的内容,让它在过去有花样运行,不记得它是什么。不要记住。它应该可以正常工作。如果这样的事情几年后仍未解决,我宁愿自己编写东西。
Jacob Vlijm

抱歉,它对您不起作用,这是我的gticki.imgsafe.org/f2dc6c70f2.png
Abel Tom

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.