Где я могу найти метроном для музыкальной практики, работающий на Ubuntu?

11

Это как-то продолжение этого вопроса:

Как я могу определить BPM (удары в минуту) песни?

Но вместо того, чтобы обнаруживать их в песнях, я хочу их сгенерировать.

Я ищу приложение, которое будет выводить звук (что-то короткое, как звуковой сигнал), настраиваемое количество раз в минуту.

Если я скажу 20bpm, он выдает этот звук каждые 3 секунды. (60/20)
Если 60bpm, каждая секунда Если 120bpm каждые полсе секунды.

Причиной этого является то, что я изучаю, как играть в барабанные наборы, и bpm выглядит очень важно. Я следую этому видео на youtube .

Обновление

Кажется, они называются metronomes , и даже Google получил один. Cool Stuff.
Ссылка
Спасибо, Ник.

    
задан Parto 20.08.2016 в 22:42
источник

5 ответов

19

Как упоминалось в комментарии, я не мог получить упомянутые метрономы (существующие для Linux / Ubuntu), работающие с 16.04, по крайней мере, не из коробки. Я не тратил много времени на , чтобы заставить его работать , так как практически все они оставляют впечатление отказа.

Время для записи ...

Этот ответ ( работает в процессе ) должен в конечном итоге привести к метроному, включая графический интерфейс. Хорошее время, чтобы упомянуть возможные функции, которые вы хотели бы.

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:

    sudoapt-getinstallvorbis-tools
  2. Скопируйтесценарийвпустойфайл,сохранитеегокакmetro.py

  3. Щелкнитеправойкнопкоймышинаизображениивыше,сохранитеегоВтойжедиректории,чтоискрипт(точно),как:icon.png.
  4. Простозапуститеметрономпокоманде:

    python3/path/to/metro.py

3.PPAдляоранжевогометронома

Этосделано!

Метрономготовкустановке.
Оранжевыйметрономпоставляетсясмножествомразныхзвуковнавыбор,ибитыможносгруппировать.Всеизменениянемедленноприменяютсякработающемуметроному:

Дляустановки:

sudoapt-add-repositoryppa:vlijm/orangemetronomesudoapt-getupdatesudoapt-getinstallorangemetronome

Работаем

  • Внастоящеевремяметрономпоставляетсясчетырьмяразличнымизвукаминавыбор.Вероятно,несколькочеловекбудутдобавленывближайшиенесколькодней,некоторыеизнихбудутзаменены/обновлены

  • Вболеедолгосрочнойперспективе
    Вдолгосрочнойперспективеядумаюодобавленииопциидля(настраиваемых)сложныхструктур,такихкак3+3+2,2+2+2+3ит.Д.,Которыеявсегдапропускалвсуществующихметрономах.

Наконец

Последняя(текущая)версия0.5.3добавляетнесколькозвуков,ночтоболееважно,возможностьзапусканеправильных(составных)ударов.Вэтойверсиионижесткозакодированы.Будетнастраиватьсяизверсии>1.

    
ответ дан Jacob Vlijm 21.08.2016 в 08:42
источник
8

Похоже, вы ищете метроном!

Программное обеспечение для редактирования аудио Audacity может генерировать устойчивый ритм или тон в метрономе (смотрите в меню «Создать»), хотя есть более простые программы, которые я приведу ниже. Audacity находится в репозиториях программного обеспечения Ubuntu и может быть установлен через Центр программного обеспечения или путем ввода sudo apt install audacity в окне терминала.

Интернет-метрономы многочисленны, если вы планируете иметь доступ в Интернет во время своей практики.

Другое программное обеспечение метронома, доступное в репозиториях программного обеспечения Ubuntu, включает gtick , klick , gtklick и kmetronome хотя я сам не пробовал никого из них.

    
ответ дан Nick Weinberg 21.08.2016 в 03:05
8

Простой метроном Баша

Использование

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

Информация

  • Он по умолчанию работает со скоростью 120bpm в 4/4 раза
  • Максимум 600bpm и 16/16 раз
  • Первый удар акцентирован.
  • Вы можете заменить звуковые файлы, если хотите. Я просто выбрал те, которые звучали хорошо из звукового банка Ubuntu 14.04.
  • В моей системе точность составляет около 1,5 мс за такт, что не заметно.

Например

metronome.sh
metronome.sh 75    # 75 BPM
metronome.sh 120 3 # 120 BPM, 3 beats per measure

Сценарий

#!/bin/bash
# metronome.sh
# Is a metronome.

# Accentuated and unaccentuated sounds, respectively.
tick='/usr/share/sounds/ubuntu/stereo/dialog-information.ogg'
tock='/usr/share/sounds/ubuntu/stereo/button-toggle-on.ogg'

# Default BPM and beats per measure.
bpm=120
msr=4

echo_error(){
    # Error handler
    local basename="${0##*/}"
    local msg="[email protected]"
    echo "$basename: $msg" 1>&2
}

# BPM argument
if [[ $1 ]]; then
    bpm_min=1
    bpm_max=600

    # Check that argument is a number within a range.
    if ! [[ $1 =~ ^[0-9]+$ ]] ||
        [[ $1 -lt $bpm_min ]] ||
        [[ $1 -gt $bpm_max ]]
    then
        echo_error "Beats per minute not in range [$bpm_min, $bpm_max]."
        exit 1
    fi

    bpm="$1"
fi

# Beats per measure argument
if [[ $2 ]]; then
    msr_min=1
    msr_max=16

    # Check that argument is a number within a range.
    if ! [[ $2 =~ ^[0-9]+$ ]] ||
        [[ $2 -lt $msr_min ]] || 
        [[ $2 -gt $msr_max ]]
    then
        echo_error "Beats per measure not in range [$msr_min, $msr_max]."
        exit 1
    fi

    measure="$2"
fi

# Get seconds per beat using bc.
# "-0.004" accounts for approximate execution time.
rest_duration="$(bc -l <<< "scale=5; 60/$bpm-0.004")"

echo "Metronome playing $bpm BPM, $msr beats per measure"
echo -n "Press Ctrl+C to cancel."

while true; do
    # Accentuated beat.
    for i in 1; do
        canberra-gtk-play --file="$tick" &
        sleep "$rest_duration"
    done

    # Unaccentuated beat(s).
    for i in $(seq 2 "$msr"); do
        canberra-gtk-play --file="$tock" &
        sleep "$rest_duration"
    done
done
    
ответ дан wjandrea 21.08.2016 в 16:55
1

Я играю на гитаре, и я использую gtick , он работает очень хорошо для меня, я могу настроить биты в минуту, громкость и даже подписи времени, 1 / 4,2 / 4,3 / 4 и т. Д. вы можете установить его из командной строки, используя:

sudo apt-get install gtick

heres my gtick : i.imgsafe.org/f2dc6c70f2.png

    
ответ дан Abel Tom 24.08.2016 в 09:16
0

Вы пробовали kmetronome? Должен иметь возможность использовать apt-get / synaptic.

    
ответ дан Jodamo117 24.08.2016 в 23:36