Twee stemvorken van 440 Hz

Moderator: physicalattraction

Gebruikersavatar
Berichten: 1.605

Re: Twee stemvorken van 440 Hz

Interessant, dat is dan het resoneren ten gevolge van een bron en object. Enkele experimentjes uitgevoerd (al gestart voor jouw reply) betreffende fase verschillen.

Ter aanvulling voor signalen in fase en niet in fase twee testjes gedaan. Hierbij gebruik gemaakt van luidsprekers en een wav file.

Test:1 (in fase)
Signaal sinus links en rechts in fase.
0-5 [seconde], Links sinus
5-10 [seconde] Rechts sinus
10-15 [seconde] Beide
Left-Right-Left+Right_300_Hz.zip
(9.19 KiB) 70 keer gedownload
Opname gemaakt met microfoon webcam:
Left-Right-Left+Right.jpeg
Observatie: Het rechterkanaal is iets sterker (waarschijnlijk door opname richting). Wanneer links en rechts gelijk afspelen is versterking zichtbaar. De overgang is vergroot weergegeven in het midden. Merk overgang op (wanneer beide simultaan) alleen de amplitude veranderd.


Test: 2 (uit fase)
Signaal sinus links en rechts, echter rechter signaal geinverteerd (180 graden in fase verschoven).
0-5 [seconde], Links sinus
5-10 [seconde] Rechts (inverse) sinus
10-15 [seconde] Beide
Left-iRight-Left+iRight_300_Hz.zip
(9.52 KiB) 79 keer gedownload
Opname gemaakt met microfoon webcam:
Left-iRight-Left+iRight.jpeg
Observatie: Het rechterkanaal is iets sterker (waarschijnlijk door opname richting). Wanneer links en rechts gelijk afspelen is het signaal gedoofd. De overgang is vergroot weergegeven in het midden.


Test: 3 (koppeling)
Geprobeerd beide luidsprekers te koppelen met lijmtang en met gezamelijke wielstjes ophang. Dit experiementje mislukt. Misschien dat ik straks nog een koppeling testje doe. De overgaan tot simultaan duurt langer dan test 1, alsof het fase verschil gecompenseerd dient te worden.
Untitled.jpg

Conclusie:
Ja er kan uitdoving/versterking ontstaan wanneer de signaal puur sinus zijn.
Er onstaat tevens een interferentie patroon zoals het twee spleten experiment (echter hier micro op zelfde plaats) golflengte 300 Hz is 1.15 meter.

Code Signaal:

Code: Selecteer alles

import numpy as np
from scipy.io.wavfile import write

import matplotlib.pyplot as plt

samplerate = 44100;
fs = 300
time = 6

t = np.arange(0, time, 1 / samplerate)

amplitude = np.iinfo(np.int16).max

signal = amplitude * np.sin(2. * np.pi * fs * t)
zero = amplitude * np.zeros(len(signal))

left = np.append(signal, [zero, signal])
right = np.append(zero, [-signal, -signal])

signal = np.array([left, right]).T

write("Left-iRight_300_Hz.wav", samplerate, signal.astype(np.int16))
Code Opname:

Code: Selecteer alles

import sounddevice as sd
from scipy.io.wavfile import write

fs = 44100  # Sample rate
seconds = 6 # Duration of recording

myrecording = sd.rec(int(seconds * fs), samplerate=fs, channels=1)
sd.wait()  # Wait until recording is finished
write('Left-iRight_nocoupling_300_Hz_rec.wav', fs, myrecording)  # Save as WAV file
Laatst gewijzigd door OOOVincentOOO op za 26 nov 2022, 10:46, 3 keer totaal gewijzigd.

Gebruikersavatar
Moderator
Berichten: 9.933

Re: Twee stemvorken van 440 Hz

Je kunt nog een experiment doen om te zien hoe snel te vorken in fase raken.

Tik ze aan wacht even en zoek een plaats (met oor, of beter, met een microfoon) waar uitdoving optreedt. Die plaats zal niet veranderen als de vorken eenmaal gesynchroniseerd zijn.

Vervolgens zou je een paar keer de vorken kunnen aantikken (de onderlinge fase is dan volkomen willekeurig) en zien hoe lang het duurt voordat ze synchroon met elkaar zijn, dus wanneer uitdoving weer op die specifieke plaats gebeurt.

Gebruikersavatar
Berichten: 1.605

Re: Twee stemvorken van 440 Hz

OOOVincentOOO schreef: za 26 nov 2022, 10:39 Ter aanvulling voor signalen in fase en niet in fase twee testjes gedaan. Hierbij gebruik gemaakt van luidsprekers en een wav file.
Aanvulling: Wanneer de geluid filetjes af te spelen: de versterking en verzwakking is beter te horen wanneer luidspreker nabij elkaar staan. Net getest op grotere afstand van elkaar en dan onduidelijker (zie foto voor mijn opstelling). Weet niet of het op een mobieltje werkt. Edit: bij mijn mobieltje perfecte uitdoving.


Type fout:
Test: 3 (koppeling)
Geprobeerd beide luidsprekers te koppelen met lijmtang en met gezamelijke wielstjes ophang. Dit experiementje mislukt. Misschien dat ik straks nog een koppeling testje doe. De overgaan tot simultaan duurt langer dan test 1, alsof het fase verschil gecompenseerd dient te worden.
Laatste zin copy paste fout. Kan niet meer editen. Erg stressvol zulke korte edit tijd. Zo een berichtje kost veel tijd te typen.

Berichten: 3.902

Re: Twee stemvorken van 440 Hz

OOOVincentOOO schreef: za 26 nov 2022, 10:52
Laatste zin copy paste fout. Kan niet meer editen. Erg stressvol zulke korte edit tijd. Zo een berichtje kost veel tijd te typen.
klopt. daar heb ik me ook al vaker aan geergerd dat je na een tijdje typefoutjes of het feit dat je iets achteraf gezien net wat duidelijker had kunnen opschrijven niet meer kunt wijzigen.

Gebruikersavatar
Moderator
Berichten: 9.933

Re: Twee stemvorken van 440 Hz

OOOVincentOOO schreef: za 26 nov 2022, 10:52 Laatste zin copy paste fout. Kan niet meer editen. Erg stressvol zulke korte edit tijd. Zo een berichtje kost veel tijd te typen.
Gebruik "volledige bewerker en voorbeeld".
Je kunt dan zien hoe het bericht eruit komt te zien, inclusief quotes, plaatjes etc. Je kunt het dan zorgvuldig doornemen voor je het plaatst. Zo doe ik het, dan is verbeteren maar zelden nodig.

Gebruikersavatar
Berichten: 1.605

Re: Twee stemvorken van 440 Hz

Off topic Dat weet ik en doe ik ook. Maar om netjes een bericht met aanhang en latex te maken kost veel tijd en concentratie eenmaal verkeerde knopje versturen en je bent de haas.

Ook opletten eenmaal aangang openen in ontwerp en mogelijk alles kwijt daar link in dezelfde tab openen kan.

Edit tijd is gewoon veel te kort als aanhang veranderd of algemene edits benodigd. Ala minuutjes reacties zijn ook ergerlijk btw.

Daar dit off topic is mag verwijderd worden.

Gebruikersavatar
Berichten: 1.605

Re: Twee stemvorken van 440 Hz

HansH schreef: za 26 nov 2022, 10:24 je ziet dan ook dat energie tussen de 2 kringen heen en weer slingert, maar dis niet tot een evenwicht komt met gelijkblijvende amplitudes.
Nog een experiment gedaan krijg iets welke vergelijkbaar is als jouw plot.

Principe:
Het linker kanaal heb ik op: 440 Hz gehouden. Het rechter kanaal pas ik een fase verschuiving toe van 2pi over 15 seconden.

Signaal:
  • Wave file gecreëerd zie code onderstaand.
  • Kanaal links: \(L=sin(\omega t)\).
  • Kanaal rechts: \(R=sin(\omega t + \frac{2 }{15}\pi t)\).
  • Hier had ik twijfel of dit toelaatbaar is. De frequentie kanaal rechts veranderd eigenlijk kleine beetjes. Echter de frequentie verandering is periodiek en netto: 0 over 15 seconden. Bij een frequentie van 440 Hz verwaarloosbaar zou ik zeggen.
  • Wavefile Left-Right-Phase-Rec_440_Hz.jpeg
  • Door enkel het linker of recht kanaal af te spelen is gecontroleerd of de geluidsterkte constant blijft.
  • Het valt op dat de onderste paarse grafiek als: som links en recht uit geluids bestand een envelope laten zien vergelijkbaar als HansH grafiek.
Meting:
  • De luidsprekers zijn dicht nabij geplaatst zoals onderstaande foto.
  • 20221126_164237.jpg
  • Observatie: indien de luidsprekers dicht bij elkaar staan is WEL verandering in luissterkte waarneembaar. Indien verder van elkaar is er GEEN verandering in luid strekte waarneembaar door mij.
  • Middels de webcam microfoon is er een mono opname gemaakt.
  • Left-Right-Phase-Rec_440_Hz.jpeg
  • Observaties: de intensiteit van de opname veranderd net zoals de theoretische som van kanaal links en rechts. Het signaal is sinus vormig. Het spectrogram laat de frequentie zien van 440 Hz en de intensiteit verandering is waarneembaar (donker rood start en einde, licht rood / oranje in het midden.
Conclusie:
  • Constructieve/Destructieve interferentie door faseverschuiving is alleen waargenomen indien beide luidsprekers nabij elkaar geplaatst zijn.
Fase verschuiving heeft invloed op de geluidsterkte voornamelijk wanneer bronnen zeer dicht bij elkaar zijn. Ik zou verder moeten studeren welke theorie dit beschrijft mits correct waargenomen.

Geluid Signaal en grafiek:

Code: Selecteer alles

import numpy as np
from scipy.io.wavfile import write

samplerate = 44100;
fs = 440
time = 15

amplitude = np.iinfo(np.int16).max

# time array
t = np.arange(0, int(time*fs)/fs, 1 / samplerate)

# left signal phase constant
left = amplitude * np.sin(2. * np.pi * fs * t)

# right signal phase shift 2pi over time
phase = np.linspace(0, 2*np.pi, len(t))
right = amplitude * np.sin((2. * np.pi ) * fs * t + phase)

# combine left right channel and save wavefile
signal = np.array([np.array(left), np.array(right)]).T
write("Left-Right-Phase_440_Hz.wav", samplerate, signal.astype(np.int16))


# De grafiek:
from matplotlib.ticker import FormatStrFormatter
import matplotlib.pyplot as plt

# Define layout spectrogram plot and time series
layout = [  ["left","left","left"], ["right","right","right"], ["1", "2","3"], ["left+right", "left+right", "left+right"]]
gs_kw = dict(width_ratios=[1,1,1], height_ratios=[1, 1, 1, 1])
fig, axd = plt.subplot_mosaic(layout, figsize=(16, 9), layout="constrained", gridspec_kw=gs_kw)

axd["left"].plot(t, left, color="red", linewidth=0.05)
axd["left"].set_title("Left")

axd["right"].plot(t, right, color="blue", linewidth=0.05)
axd["right"].set_title("Right")

axd["1"].plot(t, left, color="red", linewidth=0.5)
axd["1"].plot(t, right, color="blue", linewidth=0.5)
axd["1"].set_xlim(1.99, 2.01)
axd["1"].xaxis.set_major_formatter(FormatStrFormatter('%.2f'))

axd["2"].plot(t, left, color="red", linewidth=0.5)
axd["2"].plot(t, right, color="blue", linewidth=0.5)
axd["2"].set_xlim(7.49, 7.51)
axd["2"].xaxis.set_major_formatter(FormatStrFormatter('%.2f'))

axd["3"].plot(t, left, color="red", linewidth=0.5)
axd["3"].plot(t, right, color="blue", linewidth=0.5)
axd["3"].set_xlim(12.99, 13.01)
axd["3"].xaxis.set_major_formatter(FormatStrFormatter('%.2f'))

axd["2"].set_title("left and right")

axd["left+right"].plot(t, left+right, color="purple", linewidth=0.05)
axd["left+right"].set_title("Left+Right")

fig.suptitle("Signals In Wave File: Left-Right-Phase_440_Hz.wav", fontsize=26)

plt.show()
Spectrogram van geluidopname:

Code: Selecteer alles

from scipy.io import wavfile
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
from scipy.io.wavfile import write

# Define layout spectrogram plot and time series
layout = [  ["time"], ["timepart"], ["freq"], ["phase"]]
gs_kw = dict(width_ratios=[1], height_ratios=[1, 1, 1, 1])
fig, axd = plt.subplot_mosaic(layout, figsize=(16, 9), layout="constrained", gridspec_kw=gs_kw)

# Sample frequency
fs = 44100

sample_rate, signal = wavfile.read('Left-Right-Phase-Rec_440_Hz.wav')

def spectogram(signal):
    # calcuate the spectrogram, determine perios instead of frequency
    spec, freq, t = mlab.specgram(signal, Fs=fs, mode="magnitude", NFFT=15000, noverlap=14800)

    # Crop frequency range: 0-1500 Hz
    difference_array = np.absolute(freq - 500)
    end = difference_array.argmin()

    difference_array = np.absolute(freq - 380)
    start = difference_array.argmin()

    return t, freq[start:end:], spec[start:end:]


def phasegram(signal):
    # calcuate the spectrogram, determine perios instead of frequency
    spec, freq, t = mlab.specgram(signal, Fs=fs, mode="phase", NFFT=15000, noverlap=14800)

    # Crop frequency range: 0-1500 Hz
    difference_array = np.absolute(freq - 500)
    end = difference_array.argmin()

    difference_array = np.absolute(freq - 380)
    start = difference_array.argmin()

    return t, freq[start:end:], spec[start:end:]


# Plot time signal
time = np.arange(np.size(signal))/sample_rate
axd["time"].plot(time, signal, color="black", linewidth=0.1)
axd["time"].set_xlabel("elapsed time [seconds]")
axd["time"].set_ylabel("Amplitude [arb.]")
axd["timepart"].plot(time, signal, color="black", linewidth=0.5)
axd["timepart"].set_xlabel("elapsed time [seconds]")
axd["timepart"].set_ylabel("Amplitude [arb.]")

# Plot Spectogram
time, period, spectrum = spectogram(signal)
axd["freq"].pcolormesh(time, (period), np.log10(spectrum), cmap="coolwarm")
axd["freq"].set_xlabel("elapsed time [seconds]")
axd["freq"].set_ylabel("frequency [Hz]")

# Plot Spectogram
time, period, spectrum = phasegram(signal)
axd["phase"].pcolormesh(time, period, spectrum, cmap="coolwarm")
axd["phase"].set_xlabel("elapsed time [seconds]")
axd["phase"].set_ylabel("frequency [Hz]")

fig.suptitle("Mono Recording Two Speakers", fontsize=26)
plt.show()

Gebruikersavatar
Moderator
Berichten: 9.933

Re: Twee stemvorken van 440 Hz

OOOVincentOOO schreef: za 26 nov 2022, 17:05
  • Kanaal links: \(L=sin(\omega t)\).
  • Kanaal rechts: \(R=sin(\omega t + \frac{2 }{15}\pi t)\).
  • Hier had ik twijfel of dit toelaatbaar is. De frequentie kanaal rechts veranderd eigenlijk kleine beetjes. Echter de frequentie verandering is periodiek en netto: 0 over 15 seconden. Bij een frequentie van 440 Hz verwaarloosbaar zou ik zeggen.
Nee, toch?
\(R=sin(\omega t + \frac{2 }{15}\pi t)=sin((\omega+ \frac{2 }{15}\pi) t)=\)
\(=sin((2\pi 440+ \frac{2 }{15}\pi) t)=sin((440+ \frac{1 }{15})2 \pi) t)\)
De nieuwe frequentie is \(440+\frac{1 }{15}\) Hz.

Gebruikersavatar
Berichten: 1.605

Re: Twee stemvorken van 440 Hz

Xilvo schreef: za 26 nov 2022, 17:14 Nee, toch?
Inderdaad dat is wat ik bedoel. Ik heb het bewust niet vereenvoudigt opgeschreven.

Maar ik weet geen andere mooie manier om een faseverschuiving te maken (in een continue signaal).

Het effect is dat bij 7.5 seconden links en recht pi verschoven zijn (op een kleine fout na).

Dit is wat ik wilde bereiken op de eenvoudigste manier (wellicht zijn er andere simpelere mogelijkheden onbekend door mij).

EDIT:
Wat bedoel je hiermee: "Nee, toch?" dat snap ik niet.

Gebruikersavatar
Moderator
Berichten: 9.933

Re: Twee stemvorken van 440 Hz

OOOVincentOOO schreef: za 26 nov 2022, 17:21
Wat bedoel je hiermee: "Nee, toch?" dat snap ik niet.
Dat je een iets andere maar wel constante frequentie krijgt.

Gebruikersavatar
Berichten: 1.605

Re: Twee stemvorken van 440 Hz

Oke thanks! Mooie aanvulling! Is mij nu ook duidelijker. Had misschien eerder moeten vereenvoudigen. :)

Reageer