C'est en quelque sorte un suivi de cette question:
Comment puis-je détecter le BPM (battements par minute) d'une chanson?
Mais maintenant, au lieu de les détecter dans les chansons, je veux les générer.
Je cherche une application qui émettra un son (quelque chose de court, comme un bip) un nombre configurable de fois par minute.
Si je dis 20 bpm, le son sera émis toutes les 3 secondes. (60/20)
Si 60 bpm, toutes les secondes.
Si 120bpm toutes les demi-secondes.
La raison en est que j’apprends à jouer de la batterie et que le bpm a l’air très important. Je suis cette vidéo sur youtube .
On dirait qu'ils s'appellent metronomes
et même Google en a un. Truc cool.
https://www.google.com/search?q=metronomes
Merci Nick.
Comme mentionné dans un commentaire, je ne pouvais pas faire fonctionner les métronomes mentionnés (existant pour Linux/Ubuntu) le 16.04, du moins pas du tout. Je n’ai pas passé beaucoup de temps à pour que cela fonctionne , car ils donnent presque tous l’impression d’être abandonnés.
Il est temps d'en écrire un ...
Cette réponse ( en cours ) devrait éventuellement conduire à un métronome, y compris une interface graphique. Un bon moment pour mentionner les fonctionnalités possibles que vous souhaitez.
Créer un métronome simple s'avère extrêmement simple:
#!/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"])
Le métronome a besoin de vorbis-tools, pour jouer le son
Sudo apt-get install vorbis-tools
Exécutez-le avec le bpm comme argument:
python3 /path/to/metronome.py <bpm>
par exemple.:
python3 /path/to/metronome.py 100
Pour l'exécuter avec 100 battements par minute
Pour le son, j’ai utilisé le fichier /usr/share/sounds/ubuntu/stereo/bell.ogg
, qui devrait figurer par défaut sur votre système (testé 14.04/16.04). Vous pouvez cependant utiliser n'importe quel exemple (.ogg
) de votre choix. Dans la version finale, plusieurs options (sons) seront disponibles.
Dans une étape suivante, une version très basique, la dernière version sans installateur:
#!/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()
Comme la version cli, celle-ci nécessite vorbis-tools
:
Sudo apt-get install vorbis-tools
Copiez le script dans un fichier vide, enregistrez-le sous metro.py
icon.png
.Il suffit de lancer le métronome avec la commande:
python3 /path/to/metro.py
C'est fait!
Le métronome est prêt pour l'installation.
Le métronome Orange est fourni avec un ensemble de sons différents, et les temps peuvent être regroupés. Toutes les modifications sont appliquées immédiatement sur le métronome en cours d'exécution:
À installer:
Sudo apt-add-repository ppa:vlijm/orangemetronome
Sudo apt-get update
Sudo apt-get install orangemetronome
Actuellement, le métronome propose quatre sons différents. Quelques-uns seront probablement ajoutés dans les prochains jours, certains seront remplacés/mis à jour
à plus long terme
À plus long terme, je songe à ajouter l’option pour les structures complexes (personnalisées) telles que 3 + 3 + 2, 2 + 2 + 2 + 3 +, etc., qui m’avait toujours manqué dans les métronomes existants.
La dernière version (actuelle) 0.5.3
ajoute un certain nombre de sons, mais plus important encore, la possibilité d’exécuter des battements irréguliers (composites). Dans cette version, ils sont codés en dur. Sera personnalisable à partir de la version> 1.
On dirait que vous cherchez un métronome!
Le logiciel d’édition audio Audacity peut générer un battement ou une tonalité constante, semblable à un métronome (consultez le menu "Générer"), bien que certains programmes plus simples soient listés ci-dessous. Audacity se trouve dans les répertoires de logiciels Ubuntu et peut être installé via le Centre logiciel ou en saisissant Sudo apt install audacity
dans une fenêtre de terminal.
Les métronomes en ligne sont nombreux, si vous prévoyez avoir un accès Internet pendant votre pratique.
Les autres logiciels de métronome disponibles dans les dépôts de logiciels Ubuntu incluent gtick, klick, gtklick, et kmetronome, bien que je Je n'ai essayé aucun d'entre eux moi-même.
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
je joue de la guitare et je l'utilise gtick, cela fonctionne assez bien pour moi, je peux régler les battements par minute, le volume et même les signatures temporelles, 1/4,2/4,3/4, et bientôt. vous pouvez l'installer à partir de la ligne de commande en utilisant:
Sudo apt-get install gtick
heres my gtick: i.imgsafe.org/f2dc6c70f2.png
Avez-vous essayé kmetronome? Doit pouvoir utiliser apt-get/synaptic.