INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

16.12.2015, 15:48
Beitrag #1

Chef_Koch_666 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2015

2012
2013
DE



Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben
Hallo,

ich möchte gerne folgendes umsetzen:

1) Import eines beliebigen Signalverlaufes genauer gesagt genau einer Periode dieses Signals
2) Dieses möchte ich dann mit veränderlicher Frequenz über die Soundkarte ausgeben.

Den ersten Punkt habe ich soweit auch schon gelöst.
Ich lese hier den extern erzeugten Signalverlauf aus einer .csv Datei mittels "Read from Spreadsheet File.vi" ein.
Nur zur besseren Vergleichbarkeit habe ich hier einen Sinusverlauf genommen, später möchte ich dann natürlich einen beliebigen Analogverlauf nutzen.
Was ja vom Prinzip her auch schon funktioniert.


Nun habe ich quasi die Y-Werte meines Verlaufs, fehlt nur noch die Zeitbasis. Wobei wir dann auch schon beim 2. Unterpunkt sind.
Hierfür habe ich dann mittels "Build Waveform" und einem dt von [1/Frequenz]/(Samples-1) ein komplettes Signal gebildet.
Also Beispielsweise besteht mein importieres Signal bzw diese eine Periode aus 360 Stützpunkten. Das Signal möchte ich nun beispielsweise mit 4000 Hz wiedergeben.
(1/4000)/359
Bei der anschließenden Analyse des Ausgangssignals mittels "Waveform Duration" was ja dann meiner Periodendauer T entspricht und anschließend noch dem Kehrwert f=1/T komme ich auch wieder genau auf die eingestellt Frequenz von 4000 Hz.

Wenn ich dieses Signal aber jetzt über die Soundkarte ausgebe, ist die Frequenz viel zu niedrig.
Also um das vergleichen zu können habe ich noch einen normalen Sinusgenerator benutzt mit ebenfalls 4000 Hz. Das klingt ganz anders.

Habe jetzt schon sehr viel verschiedene Sachen versucht aber leider ohne Erfolg.
Ich vermute, dass hängt wohl damit zusammen, dass ich mein Signal auf die Samplerate der Soundkarte bringen muss.
Das habe ich schon mittels "Signalverläufe erneut abtasten" oder auch mit einem Example VI versucht. Leider ohne Erfolg.


Ich habe auch schon als Alternativen Ansatz den Express Block "Arbiträres Signal simulieren" benutzt. Hier dann quasi manuell einen Signalverlauf eingetippt und dann an die Soundkarte ausgegeben.
Hat auch funktioniert, nur das Problem hierbei ist, dass ich die Frequenz nur im Block selbst intern festlegen kann, aber nicht extern über einen Drehregler. Und letzteres benötige ich aber.

Kann mir hier jemand weiterhelfen?


Ich habe mal den analogen Testverlauf (in diesem Fall eben Sinus) in den Anhang.
Die Y-Werte befinden sich in der zweiten Spalte. In der ersten hatte ich nur zu Testzwecken eine Zeitbasis mit rein.
Das VI habe ich auch mal mit rein, ist im Moment etwas durcheinander, weil ich noch alles mögliche ausprobiere.


Angehängte Datei(en) Thumbnail(s)
   

12.0 .vi  neu.vi (Größe: 39,46 KB / Downloads: 287)

0.0 .csv  Testsignal.csv (Größe: 8,8 KB / Downloads: 321)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2015, 15:59
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben
Hallo Chef,

es soll ja vorkommen, dass billige Soundkarten(-Chips) nicht beliebige Sampleraten unterstützen.
(Übliche Sampleraten sind 48kHz oder 44.1kHz.)

Du könntest dein Signal ja auf diese Sampleraten "resamplen"…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2015, 16:08 (Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2015 16:09 von Chef_Koch_666.)
Beitrag #3

Chef_Koch_666 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2015

2012
2013
DE



RE: Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben
ja mit 44100 Hz hatte ich es auch schon versucht. Hat auch nicht funktioniert.
Die hörbare Frequenz die dann entsteht ist immer relativ niedrig. Sprich man hört nur ein Brummen.

Und beim "normalen" Sinusgenerator funktioniert es ja auch mit der ganz hohen SampleFrequenz 196kHz die in dem Bild oben noch drinnen war.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2015, 16:41
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben
Hallo Chef,

guck doch einfach mal in das SoundPlay-VI (tief) hinein: es ist ihm schlichtweg schnurz, welches dt du bei deiner Waveform setzt.
Es erwartet die Sampledaten mit einem dt, wie es der Frequenz beim SoundInit entspricht…

Ergo: Du musst deine Sinus-Daten auf die gewünschte Ausgabefrequenz resamplen!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2015, 17:13 (Dieser Beitrag wurde zuletzt bearbeitet: 16.12.2015 17:15 von Chef_Koch_666.)
Beitrag #5

Chef_Koch_666 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2015

2012
2013
DE



RE: Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben
(16.12.2015 16:41 )GerdW schrieb:  Ergo: Du musst deine Sinus-Daten auf die gewünschte Ausgabefrequenz resamplen!


okay und wie würde ich da korrekter Weise vorgehen?

Müsste ich ja dann bei "Signalverläufe erneut abtasten" bzw "Resample Waveforms" ein anderes dt setzen ?
Habe da schon alles probiert, man hört zwar, dass sich die Frequenz ändert aber irgendwie ist die immer nur viel zu niedrig.
Auch wenn ich sehr hohe Zahlen eingebe.

Habe auch schon in Matlab eine .wav Datei anhand der Sinus Funktion erstellt mit einer entsprechenden Samplerate. Die Wav Datei enthält dann eben wieder genau eine Periode vom Sinussignal
Aber auch hier ist die Ausgabefrequenz einfach immer anders als die vom Frequenzgenerator.

Habe jetzt schon fast den ganzen Tag alles mögliche versucht... ich bekomme es einfach nicht zum Laufen.


Edit: ach ich sehe gerade den Screenshot habe ich bei "kontinuierlich" beim Resample Waveforms VI gemacht. Damit kommt dann gar nichts mehr.
Bei einmalig kommt schon dauernd was, nur eben nur ein brummen.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2015, 19:34
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben
Hallo Chef,

Zitat:Müsste ich ja dann bei "Signalverläufe erneut abtasten" bzw "Resample Waveforms" ein anderes dt setzen ?
Genau. Das dt, das du für die Ausgabe benötigst!

So z.B.:
   
(Hier mit 48kHz für einen "normalen" Sound-Ausgang.)
Wenn man dann im Graph die Plots als Linie+Punkt anzeigen lässt, sieht man sehr schön, dass das zweite Signal sehr viel mehr Samples enthält…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.12.2015, 21:09 (Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2015 12:20 von Chef_Koch_666.)
Beitrag #7

Chef_Koch_666 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Dec 2015

2012
2013
DE



RE: Beliebiges Signal aus Datei mit einstellbarer Frequenz wiedergeben

Akzeptierte Lösung

klappt einfach nicht. Bekomme nur Brummen oder gar nichts.

Kann es vielleicht auch daran liegen, dass ich für die Sinus Periode N=360 Stützpunkte habe?
Wenn ich jetzt mal von einer hohen Samplerate von 196 kS/s ausgehe.
Kehrwert=1/196000 = 5.1E-6s =dx
dx*N=5.1E-6s*360=1.837E-3 s = T
f=1/T=544 Hz

Sprich ich könnte so maximal 544 Hz ausgeben bei 360 Samples pro Periode?

Habe ich mich jetzt total vertan, aber falls nicht, wie macht das dann z.B. der Sinusgenerator.
Wobei das brummen was ich erhalte noch wesentlich niedriger als 544 Hz ist.

Mit der Arbitrary Waveform habe ich auch nochmal getestet.
Konnte die Excel Dateien auch in lmv umwandeln und dann 360 Werte einlesen.
Aber irgendwie haut das da auch nicht so richtig hin. Gibt auch nur Brummen.
Kann das dx auch nicht klein genug setzen.
Gibt dort maximal 100001 Werte.
1/100001 * 360 = 3,59964E-3 . Diesen Wert zeigt mir Labview dann auch als minimal dx an.
Das würde ja dann nur 277 Hz entsprechen. Komischerweise hört man dann aber hier gar nichts.
Bei dem FGEN mit gleicher Frequenz aber schon................. bin am verzweifeln..


Edit: Also inzwischen bekomme ich auch schon hohe Frequenzen hin. Nur leider nicht die, welche ich eingestellt habe Big Grin
Das Problem ist wohl eher, dass ich eine variable Anzahl an Samples brauche.
Im Grunde müssen die Samplerate der Soundkarte, die eingestellte Frequenz und die Anzahl an Samples vom erzeugten Signal zusammenpassen. Sonst kommt da auch mal gar nichts raus.
Aber um das besser analysieren zu können müsste ich vom Ausgang der Soundkarte ne FFT machen.
Dazu habe ich das jetzt mal mit Audacity aufgenommen. Dort kann man auch direkt eine Frequenzanalyse durchführen.
Bei dem Signal vom FGEN passt auch alles. Aber bei dem selbst erzeugten, kann ich echt nicht sagen wie/weshalb die Frequenz dort zustande kommt.


Edit2:
Also inzwischen habe ich es hinbekommen. Zumindest bis zu einer bestimmten (aber ausreichenden) Frequenz.
Von den drei Möglichkeiten (.wav File, Arbitrary Waveform Generator und csv -> Array) hat letztlich nur die Methode funktioniert, den Signalverlauf aus einem .csv auszulesen in ein array zu wandeln, dann wieder Signalverlauf erstellen, resampeln usw usw. Und das wichtigste ist, dass die ganzen Parameter (Samplerate, Anzahl Samples...) passen.
Warum es bei den anderen nicht funktioniert weiß ich nicht. Teilweiße kommen da Töne raus, die eher an eine Kommunikation mit Aliens erinnern.
Oder eben nur zu niedrige Frequenzen etc.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  mehrere wave Dateien wiedergeben benny10 2 6.516 10.01.2016 09:50
Letzter Beitrag: benny10
  Wave-File aufnehmen und Lautstärkepegel in dB wiedergeben StefanB 11 15.847 06.11.2007 13:43
Letzter Beitrag: jg

Gehe zu: