The Triggering of HügglMügg
Ein kleines Projektchen
Zunächst habe ich ein bisschen Geklopfe aufgenommen, mir dabei nicht viel Mühe gegeben.
Das habe ich dann mit einem Bandfilter gefiltert.
Code
Hohe Frequenzen sollen den Trigger bilden: 2.900 - 8.000 Hz
import librosa
from scipy.signal import butter, lfilter
from scipy.io import wavfile
def butter_bandpass(lowcut, highcut, fs, order=5):
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq
b, a = butter(order, [low, high], btype='band')
return b, a
def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
b, a = butter_bandpass(lowcut, highcut, fs, order=order)
y = lfilter(b, a, data)
return y
def run():
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import freqz
# Sample rate and desired cutoff frequencies (in Hz).
data, fs = librosa.load('/home/audio2miditest.wav')
lowcut = 2900.0
highcut = 8000.0
y = butter_bandpass_filter(data, lowcut, highcut, fs, order=6)
# Convert to normalized 32 bit floating point
normalized_y = y / np.abs(y).max()
wavfile.write('/home/off_plus_noise_filtered.wav', fs, normalized_y.astype(np.float32))
run()
Und das Filterergebnis habe ich einem Peakfinder-und-Midinotewriter übergeben.
Code
import librosa # To load the file, and get the amplitude measured with the sampling rate amplitude,
import librosa.display
#data, sr = librosa.load('/home/audio2miditest.wav')
data, sr = librosa.load('/home/off_plus_noise_filtered.wav')
print(librosa.beat.tempo(data, sr=sr))
print(type(data))
print(data)
print(sr)
print(data.shape)
print("Geschätzte Zeit:", len(data)/sr, "Sekunden")
print(librosa.get_duration(filename='/home/audio2miditest.wav'))
import matplotlib.pyplot as plt
from scipy.signal import find_peaks
import numpy as np
x = data
peaks, _ = find_peaks(x, height=0.05, distance=1000)
plt.plot(x)
plt.plot(peaks, x[peaks], "x")
plt.plot(np.zeros_like(x), "--", color="gray")
print(peaks)
plt.show()
bpm = 480
def beatnumber (peak,sr,bpm):
beatlen = 60/bpm
beatnumber = peak/sr/beatlen
return beatnumber
midinotes = []
for peak in peaks:
print(peak, peak/sr, beatnumber(peak,sr,bpm))
midinotes_tmp = (beatnumber(peak,sr,bpm),60,127,0.2)
midinotes.append(midinotes_tmp)
from miditime.miditime import MIDITime
# Instantiate the class with a tempo (120bpm is the default) and an output file destination.
mymidi = MIDITime(bpm, '/home/myfile.mid')
# Add a track with those notes
mymidi.add_track(midinotes)
# Output the .mid file
mymidi.save_midi()
Herausgekommen ist dabei dieses Midi-File:
Dann habe ich das ungefilterte + gefilterte Audio zusammen mit dem erzeugten MidiFile in Ardour geladen, BPM auf 480 eingestellt, und alles exportiert.
Klingt nun so:
Ergebnis
Da das Projekt noch ganz am Anfang steht, erläutere ich noch so gut wie nix. Unten in den Links lassen sich Quellen, die ich verwendet habe, herausfinden.
Sobald es aber mal richtig rund funzt, gebe ich natürlich gerne ausführlicher Auskunft. Selbstverständich. So mag es immerhin schon mal als kleine Anregung nützlich sein. Das Meiste ist ja eh selbsterklärend für Kenner- & KönnerInnen.
Sobald es aber mal richtig rund funzt, gebe ich natürlich gerne ausführlicher Auskunft. Selbstverständich. So mag es immerhin schon mal als kleine Anregung nützlich sein. Das Meiste ist ja eh selbsterklärend für Kenner- & KönnerInnen.
Aber für'n Anfang schon nicht schlecht, oder?
{demnächst - oder schon heute Nacht - kommt das Quantisieren dazu}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Corona weltweit: Mehrheit der Neuinfektionen in Kanada trifft junge Leute | ZEIT ONLINE
Sexpraktiken und Schutz | alle Infos hier / LIEBESLEBEN
Corona und E-Mobilität: Elektroautos von VW derzeit ausverkauft
cirlabs/miditime: Generate MIDI files from time series data. You can control can control what octaves and octave ranges you want.
MIDIUtil · PyPI
miditime · PyPI
audio-to-midi · PyPI
Wirtschaft ist mehr - brand eins online
Glücksmuseum in Kopenhagen: Was ist Glück?
„Nichts Gutes“: Methanleck in Meeresboden wirft Fragen auf - news.ORF.at
random — Generate pseudo-random numbers — Python 3.8.5 documentation
ye (@kanyewest) / Twitter
Deepfakes: Wie KI-manipulierte Videos den Film und Fernsehen verändern - FOCUS Online
2001: Odyssee im Weltraum – Wikipedia
Helge Braun: Wer ist Angela Merkels Corona-Manager? - DER SPIEGEL
Kabelanschluss: Streit ums "Nebenkostenprivileg" | heise online
Kim Kardashian reacts after Kanye West’s apology for Twitter rant | Metro News
Kanye West & Lil Pump feat. Adele Givens - I Love It [Video] - rap.de
I Love It (Kanye-West-Lied) – Wikipedia
Hanau-Anschlag: Wie es der Mutter eines Toten fünf Monate später geht - DER SPIEGEL
Sex im Alter: Wenn Sie keine Lust mehr haben, kann das auf Krankheit hindeuten - FOCUS Online
Hans-Jochen Vogel – Wikipedia
Weimarer Tatort: Unangestrengt witzig - Medien - SZ.de
Dave Eggers: "Wir leben in einer barbarischen Idiotokratie" | ZEIT ONLINE
Butterworth Bandpass — SciPy Cookbook documentation
American protests: Demonstrations, violent riots expected to continue throughout the country | Fox News
Trump is calling protesters 'terrorists.' That puts him in the company of the world's autocrats - CNNPolitics
python - How to implement band-pass Butterworth filter with Scipy.signal.butter - Stack Overflow
Boxen: Der falsche Gegner für Tyson - Sport - SZ.de
Create a band-pass filter via Scipy in Python? - Stack Overflow
AOC reveals new details about Ted Yoho incident - CNNPolitics
Hurricane Hanna heads to Texas as two other storms threaten Hawaii and the Caribbean - CNN
Huge black bear spotted relaxing in a pool is one big summer mood - CNN
Leipzig: Rechtsextreme mit Hakenkreuzfahne auf Schlauchboot-Tour - DER SPIEGEL
Altruismus - Der Mensch in Zeiten der Katastrophe
Izzy Bizu - Wikipedia
Foxes (singer) - Wikipedia
(1) 'You'll Love It' - Kanye West/Lil Pump Parody - YouTube
I Love It (Kanye West and Lil Pump song) - Wikipedia
Kanye West: Rapper fuhr wegen Angstzuständen in Klinik | STERN.de
Potsdamer Konferenz: Als die USA mit „völliger Zerstörung“ drohten - WELT
Israel: Polizei geht gewaltsam gegen Demonstranten vor - Politik - SZ.de
Schmerzempfinden: Macht ein Neandertaler-Gen sensibler für Schmerz? - Gesundheit - SZ.de
Dave Grohl, whose mom taught public school, says we need to protect America's teachers like the national treasures they are - CNN
+++++++++++++++++++++++++++++++++++++++++++++++
Dienste an der Menschheit*
Whatsapp: Bolsonaro
Twitter: Trump
What's next?
* Dienste, die erwähnte Dienste ungefragt als Zusatzdienste brachten.**
** So ungefähr. Isses verständlich?***
*** Was gemeint sein soll.
Kommentare
Kommentar veröffentlichen