Een beetje het huis rond gezocht en geëxperimenteerd. Ik heb geen whirly Tube. Maar ik had op zolder een stuk flexibele elektriciteit slang/buis liggen met ribbels.
Mijn eerste opzet was middels een vacuumvat aan een uiteinde te zuigen. Dat lukte niet met mijn vacuumvat van circa 20L. Teveel rompslomp en geen aansluitingen en onderdelen.
Dit experimentje heb ik gedaan:
1) 1 meter van de flexibele slang afgezaagd.
2) 35 jaar geleden heb ik trompet gespeeld. En met een uiteinde de slang als trompet bespeeld.
3) Enkele opnamen gemaakt met Python (code onderstaand).
4) Getracht overtonen te blazen en op te nemen.
4) Spectogram gemaakt middels python (zie figuur).
5) Geanalyseerde frequentie gecontrolleerd middels een online tool.
6) Stukje ingezoomed op tijd signaal.
Observaties:
1) Overtonen blazen met de 1 meter slang is moeilijk en instabiel. Met een langere slang lukt dit wel. Echter meer tijd besteed aan opnemen, programmeren, verifieren en analyseren.
2) Rondsligeren elec. slang/buis lukt niet. Plastiek is te zwak en word "wit" en schuurt.
2) De frequentie gemeten middels online tool is circa 240 Hz.
3) Het spectogram toont the frequentie verdeling/verandering in de tijd.
4) De frequenties blijven constanst in de tijd betekenend iets te herinneren van het trompet spelen!
5) De gemeten grond frequentie is gelijk aan 240 Hz zoals via online tool.
6) Verdubbelingen (octaven) van frequentie aangetoond, geen of nauwelijks harmonischen te zien.
Verder:
1) Als ik zin en tijd heb probeer ik nog een stukje gewone electriciteit pijp te vinden en het testje herhalen.
*.Wav File (gezipped eerst uitpakken):
Opname geluid:
Code: Selecteer alles
import sounddevice as sd
from scipy.io.wavfile import write
fs = 44100 # Sample rate
seconds = 60 # Duration of recording
myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=1)
sd.wait() # Wait until recording is finished
write('f_0_1000mm_01.wav', fs, myrecording) # Save as WAV file
Spectogram:
Code: Selecteer alles
from scipy.io import wavfile
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
# Define layout spectrogram plot and time series
layout = [ ["time"], ["timepart"], ["freq"]]
gs_kw = dict(width_ratios=[1], height_ratios=[1, 1, 1])
fig, axd = plt.subplot_mosaic(layout, figsize=(16, 9), layout="constrained", gridspec_kw=gs_kw)
# Sample frequency
fs = 44100
def spectogram(signal):
# calcuate the spectrogram, determine perios instead of frequency
spec, freq, t = mlab.specgram(signal, Fs=fs, mode="magnitude", NFFT=5000, noverlap=5000-50)
# Crop frequency range: 0-1500 Hz
difference_array = np.absolute(freq - 1500)
end = difference_array.argmin()
difference_array = np.absolute(freq - 0)
start = difference_array.argmin()
return t, freq[start:end:], spec[start:end:]
sample_rate, samples = wavfile.read('f_0_1000mm_01.wav')
# Played from 1540000 onward
signal = samples[1540000:]
# Plot time signal
time = np.arange(np.size(signal))/sample_rate
axd["time"].plot(time, signal, color="black", linewidth=0.025)
axd["time"].set_xlabel("elapsed time [seconds]")
axd["timepart"].plot(time, signal, color="black", linewidth=0.5)
axd["timepart"].set_xlabel("elapsed time [seconds]")
# Plot Spectogram
time, period, spectrum = spectogram(signal)
axd["freq"].pcolormesh(time, period, spectrum, cmap="coolwarm")
axd["freq"].set_xlabel("elapsed time [seconds]")
plt.show()