Müzik pratiği için bir metronom nerede bulabilirim?


12

Bu bir şekilde bu sorunun bir devamıdır:

Bir şarkının BPM'sini (dakikadaki vuruş sayısı) nasıl tespit edebilirim?

Ama şimdi onları şarkılarda tespit etmek yerine, onları üretmek istiyorum.


Dakikada yapılandırılabilir sayıda ses (bir bip sesi gibi kısa bir şey) çıkışı olacak bir uygulama arıyorum.

20bpm dersem, bu sesi her 3 saniyede bir verir. (60/20)
60bpm ise, her saniye.
Her yarım saniyede 120bpm.

Bunun nedeni, bateri setlerini nasıl oynayacağımı öğrenmem ve bpm gerçekten önemli görünüyor. Bu videoyu youtube'da takip ediyorum .

Güncelleme

Arandıkları anlaşılıyor metronomesve Google bile bir tane aldı. Güzel şeyler.
https://www.google.com/search?q=metronomes
Teşekkürler Nick.


1
Audacity bunu yapabilir ("Oluştur" menüsünün altına bakın), ancak muhtemelen daha basit programlar vardır. Uygulamanız sırasında internet erişimini planlıyorsanız, çevrimiçi metronomlar bol miktarda bulunur.
Nick Weinberg

2
gtick , klick , gtklick ve kmetronome başka seçenekler olabilir ve bunların tümü Ubuntu yazılım depolarında bulunur.
Nick Weinberg

Linux altında çalışan metronomlar, görünüşte çok eski. Çalışmıyor, en azından kutudan çıkmıyor. Bir tane yazma zamanı :) @NickWeinberg Hepsini denedim, çalışmıyor (artık) gibi görünüyor.
Jacob Vlijm

Hey @JacobVlijm Bunu yapabilecek bir python betiğiniz mi var? Gerçekten python öğrenmeliyim ...
Parto

Kısa bir süre denemek istiyorum!
Jacob Vlijm

Yanıtlar:


20

Bir yorumda belirtildiği gibi, söz konusu metronomları (Linux / Ubuntu için mevcut) 16.04'te çalıştıramadım, en azından kutudan çıkamadım. Çalıştırmak için fazla zaman harcamadım , çünkü neredeyse hepsi terkedilmek izlenimi veriyor.

Bir tane yazma zamanı ...


Bu cevap (devam eden çalışma ) sonunda GUI dahil bir metronom oluşturmalıdır. İstediğiniz olası özelliklerden bahsetmek için iyi bir zaman.

1. CLI metronom

Basit bir metronom oluşturmak şok edici derecede basittir:

#!/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"])

Nasıl kullanılır

  1. Metronomun sesi çalmak için vorbis-araçlara ihtiyacı var

    sudo apt-get install vorbis-tools
    
  2. Yukarıdaki komut dosyasını boş bir dosyaya kopyalayın, metronome.py olarak kaydedin
  3. Bağımsız değişken olarak bpm ile çalıştırın:

    python3 /path/to/metronome.py <bpm>
    

    Örneğin:

    python3 /path/to/metronome.py 100
    

    Dakikada 100 vuruşla çalıştırmak için

Not

Ses için, /usr/share/sounds/ubuntu/stereo/bell.oggvarsayılan olarak sisteminizde olması gereken dosyayı kullandım (test 14.04 / 16.04). Ancak istediğiniz herhangi bir ( .ogg) örneği kullanabilirsiniz. Son sürümde, bir dizi seçenek (sesler) mevcut olacaktır.


2. Şaşırtıcı derecede basit GUI sürümü

Bir sonraki adım olarak, çok temel bir sürüm, yükleyici olmayan son sürüm:

resim açıklamasını buraya girin

Senaryo

#!/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()

Görüntü

resim açıklamasını buraya girin

Nasıl kullanılır

  1. Cli sürümü gibi, bunun da ihtiyacı var vorbis-tools:

    sudo apt-get install vorbis-tools
    
  2. Komut dosyasını boş bir dosyaya kopyalayın, metro.py

  3. Bunun tasarrufu, yukarıdaki resmin üzerine tıklayarak sağ birinde ve komut dosyasıyla aynı dizin olarak (tam olarak): icon.png.
  4. Metronomu şu komutla çalıştırın:

    python3 /path/to/metro.py
    

3. Turuncu Metronom için PPA

Halloldu!

Metronom montaja hazırdır.
Turuncu Metronom, aralarından seçim yapabileceğiniz bir dizi farklı sesle birlikte gelir ve ritimler gruplanabilir. Tüm değişiklikler çalışan metronomda hemen uygulanır:

resim açıklamasını buraya girin

resim açıklamasını buraya girin

resim açıklamasını buraya girin

Yüklemek:

sudo apt-add-repository ppa:vlijm/orangemetronome
sudo apt-get update
sudo apt-get install orangemetronome

Yapılacak iş

  • Şu anda, metronom dört farklı sesle geliyor. Muhtemelen önümüzdeki birkaç gün içinde birkaç tane eklenecek, bazıları değiştirilecek / güncellenecek

  • Daha uzun vadede
    Daha uzun vadede, mevcut metronomlarda her zaman kaçırdığım 3 + 3 + 2, 2 + 2 + 2 + 3 vb.Gibi (özel) karmaşık yapılar için bir seçenek eklemeyi düşünüyorum.

En sonunda

En son (mevcut) sürüm 0.5.3birkaç ses ekler, ancak daha da önemlisi, düzensiz (kompozit) atımları çalıştırma seçeneği. Bu versiyonda, sabit kodlanmıştır. > 1 sürümünden özelleştirilebilir.

resim açıklamasını buraya girin


@Parto cool, buna devam edeceğim. Ubuntu sürüm btw'niz nedir?
Jacob Vlijm

Harika, burada olacak. Ubuntu sürümü: 14.04.
Parto

@Parto ... ve ilk gui versiyonu ...
Jacob Vlijm

1
Sana doğru cevap için +15'i vereceğim, ama + 100'ü Nick'e 2K'dan fazla temsilcisine vermesi için vereceğim.
Parto

1
@Parto kesinlikle! Bir iki gün sürebilir, birkaç seçenekte inşa etmek istiyorum.
Jacob Vlijm

9

Bir metronom aradığınız anlaşılıyor!

Ses düzenleme yazılımı Audacity , aşağıda listeleyeceğim daha basit programlar olsa da, sabit, metronom benzeri bir vuruş veya ton üretebilir ("Oluştur" menüsünün altına bakın). Audacity, Ubuntu yazılım havuzlarındadır ve Yazılım Merkezi aracılığıyla veya sudo apt install audacitybir terminal penceresine yazılarak kurulabilir .

Uygulamanız sırasında internet erişimini planlıyorsanız, çevrimiçi metronomlar bol miktarda bulunur.

Ubuntu yazılım depolarında bulunan diğer metronom yazılımları gtick , klick , gtklick ve kmetronome'u içerir , ancak bunlardan hiçbirini kendim denemedim.


8

Basit Bash metronom

kullanım

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

Bilgi

  • Varsayılan olarak 4'te 120 bpm'de oynar
  • GitHub repo: metronome.sh dosyamda daha fazla bilgi ve çok daha karmaşık bir komut dosyası var . Aşağıdaki komut dosyası altındametronome-core.sh

Örneğin

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

Senaryo

#!/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

Çok harika biri. Denedim.
Parto

1

Gitar çalıyorum ve gtick kullanıyorum , benim için oldukça iyi çalışıyor, dakikadaki atımları, hacim ve hatta zaman imzalarını, 1 / 4,2 / 4,3 / 4 vb. komut satırından aşağıdakileri kullanarak yükleyebilirsiniz:

sudo apt-get install gtick

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


Nick tarafından zaten bahsedildi. Ayrıca sistemimde çalışmıyor (Ubuntu Unity 16.04).
Jacob Vlijm

Nick'in bahsettiğini biliyorum, ama kendimi gtick kullandım, bahsettiği gibi değil. Ubuntu 16.04 LTS kullanıyorum ve benim için çalışıyor, bazı eksik ses bağımlılıklarını kaçırıyor musunuz?
Abel Tom

Şuna bakın: dl.dropboxusercontent.com/u/1155139/error.png , ayarlar vs. ne olursa olsun birden fazla sistemde gerçekleşir. Bu konuda bir şeyler okuyun, geçmişte hile ile koştu, ne olduğunu hatırlamıyorum. Do not istemek hatırlamak. Sadece işe yaramalı. Böyle bir şey yıllar sonra düzeltilmezse, kendi şeylerimi yazmayı tercih ederim.
Jacob Vlijm

Üzgünüm senin için işe yaramadı, benim gtick : i.imgsafe.org/f2dc6c70f2.png
Abel Tom

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.