Theremino MCA

Begonnen von DL8BCN, 24. März 2023, 20:27

⏪ vorheriges - nächstes ⏩

Peter-1

Mal eine dumme Frage:
Was sollen die 32 bit gegenüber 16 bit bei einem Histogramm mit der Theremino-SW bringen?
Gruß  Peter

ABel

Hallo,

hier gibt es ein Skript, das ein Audacity mit ASIO erzeugt:
https://gist.github.com/SteveALee/da24c2be633340b8791066dd98eb5d0b
Das hat bei mir geklappt.

Mit dem Audiohost "ASIO" lässt sich Audacity direkt mit dem "Yamaha Steinberg USB ASIO" verbinden und dabei kommt dann auch eine 32 Bit Aufnahme heraus, die sich mit "Signed 32-Bit PCM" oder "32-Bit float" in eine wav-Datei exportieren lässt.

Nun müsste man nur noch ein "Theremino MCA mit ASIO" aus dem Source compilieren. Das obige Skript könnte dafür eine Vorlage sein. Ich bezweifle allerdings, das ich das schaffe.

Anbei Mal mein Octave Skript zum Testen von wav-Dateien.

Gruß Andreas

ABel

Hallo,

Audio Stream Input/Output (ASIO) ist ein von Steinberg entwickeltes Audiotransfer-Protokoll, das parallel zu den Windows eigenen Protokolle installiert werden kann. Es wird gern von Musikern eingesetzt, weil es, im Vergleich zu den Windows Protokollen, eine geringere Latenz (Laufzeitverzögerung) hat, was vor allem beim gemeinsamen Musizieren im Netz von großer Bedeutung ist. Es können aber über dieses Protokoll nur Hard- und Software kommunizieren, die dieses Protokoll auch unterstützen. Professionelle Hard- und Software tut dies, reine Konsumer-Hardware hat oft keine Treiber die ASIO unterstützen.

Audacity bringt, aus lizenzrechtlichen Gründen, standardmäßig keine ASIO-Unterstützung mit, kann aber aus den Sourcen mit ASIO-Unterstützung kompiliert werden (siehe meinen vorherigen Beitrag).

Der virtuelle Audio-Treiber LoopBeAudio spricht kein ASIO, kann aber über die Windows-Protokolle eine 32-Bit-Auflösung zur Verfügung stellen?!

Ich kann nun mit dem VLC-Player eine 32-Bit-Aufnahme über das Audiowiedergabegerät ,,Internal Playback" (von LoopBeAudio mit dem Standardformat ,,32 Bit, 192000 Hz (Studioqualität)") abspielen und mit Audacity (ohne ASIO) vom Aufnahmegerät ,,Internal Record" (von LoopBeAudio mit dem Standardformat ,,2 Kanal, 32 Bit, 192000 Hz (Studioqualität)") aufnehmen und erhalte eine ,,richtige" 32-Bit-Aufnahme.

Mit dem Aufnahmegerät ,,Internal Record" als Standardgerät liest nun auch Theremino MCA 32-Bit-Daten.

Das kann ich nicht direkt nachweisen. Daher habe ich mir aus einer 32-Bit-Aufnahme mit Audacity eine 16-Bit-Aufnahme erzeugt (Export als wav mit ,,Signed 16-bit PCM", die Datei ist dann auch nur halb so groß). In der Anlage der Vergleich von den Histogrammen aus beiden Dateien.

HISTOGRAM_2024_09_02_10_10_16 ASIO 16Bit mitBL 16Bit Treiber Vergleich.jpg
in grün 16-Bit Aufnahme, virtueller Treiber 16-Bit, Total pulses: 26543
als Ref1 16-Bit Aufnahme, virtueller Treiber 32-Bit, Total pulses: 26436
als Ref2 32-Bit Aufnahme, virtueller Treiber 32-Bit, Total pulses: 23871

HISTOGRAM_2024_09_02_10_20_48 ASIO 16Bit ohneBL 16Bit Treiber Vergleich.jpg
in grün 16-Bit Aufnahme, virtueller Treiber 16-Bit, direkt, ohne IIR Filter
als Ref1 16-Bit Aufnahme, virtueller Treiber 16-Bit, Total pulses: 737217
als Ref2 16-Bit Aufnahme, virtueller Treiber 32-Bit, Total pulses: 759439
als Ref3 32-Bit Aufnahme, virtueller Treiber 32-Bit, Total pulses: 654041

Alle Messungen ohne ,,BaseLine test" haben 0 Count Bins bei:
32.81, 100.00, 167.19, 232.81, 300.00, 367.19, 432.81, ... keV
Mein Erklärungsversuch mit einer Vermischung von 32 und 16 Bit, war also nicht richtig.

Noch ein Wort zu meinen Experimenten mit den virtuellen Audiotreibern:
Meine Intension war es, damit den Einfluss von Parametern (z.B. denen des ,,BaseLine test") immer mit den exakt gleichen Ausgangsdaten testen und vergleichen zu können. Mit den exakt gleichen Ausgangsdaten können dann auch die Messzeiten sehr kurz sein.

Gruß Andreas

Peter-1

Wer kennt die Anzahl der Kanäle beim Theremino MCA ? Ich konnte keinen Hinweis finden.
Gruß  Peter

ABel

Hallo Peter,

du meinst die "Bins" in denen die Counts gezählt werden?

Das Hängt von den Einstellungen ab. Ich denke, es errechnet sich aus
   ganzzahliger Wert von ( Audio gain * Bins * 4026 / 3 )
wenn dieser Wert größer als 4096 ist, wird er auf 4096 gesetzt.
Er kann aber auch kleiner als 4096 sein.
Woher die 4026 / 3 kommen, weiß ich nicht.

Der Wert für den letzten "Bin" errechnet sich - meiner Meinung nach - aus
   (  der Wert von oben - 1 ) * 32000 / Bins / 4096

Gruß Andreas

ABel

Hallo,

Achtung: Der "Energy trimmer" hat auch noch einen Einfluß!
Der steht bei mir immer auf 3000, daher hab ich ihn im vorherige Beitrag nicht berücksichtigt.

Gruß Andreas

ABel

Hallo,

und nun noch ein paar Ungereimtheiten:

Mein OnBoard-Sound (Realtek S1220A) hat auch einen ASIO-Treiber. Mit meinem "Audacity mit ASIO" kann ich  über ASIO aber nur Aufnahmen mit 22 Bit (nicht 24!) machen.

Über das Windows-Protokoll WASAPI kann ich mit Audacity (ohne ASIO) aber Aufnahmen mit 32 Bit machen, obwohl der Windows-Treiber als Maximum nur 24 Bit angibt???

Dafür bekomme ich bei Messungen ohne "BaseLine test" und "IIR Filter" 0 Count Bins sowohl bei der direkten Verbindung zwischen Windows-Aufnahmegerät und Theremino MCA (grüne Linie) als auch wenn ich Theremino MCA die 32-Bit-Aufnahme per virtuellem Audiotreiber vorspiele (Ref2 und Ref3).

Mit "BaseLine test" und "IIR Filter" gibt es bei der direkten Verbindung kein aussagefähiges Histogramm, per virtuellen Treiber aber schon (Achtung: der "Audio gain" ist nicht richtig eingestellt, es liegt ein Glühstrumpf auf dem Detektor)?

Gruß Andreas

Peter-1

Ich habe nun einen Beitrag von Livio gefunden der recht plausibel klingt.

USABLE CHANNELS
The application Theremino MCA has a regulator of the number of channels to six locations and a limit to 4096 channels. You could easily raise the maximum limit but so far no one has found it useful (increase too much the number of channels reduces the rate of filling of the same)


D.h. für mein Verständnis, dass ein ADC mit 16 bit absolut ausreicht und jede Erhöhung nur Datenmüll erzeugt.
Gruß  Peter

ABel

Hallo Peter,

gut ich bin da vielleicht etwas pedantisch. Ich möchte eben wissen, wie es funktioniert.

Inzwischen bin ich über weitere Steine gestolpert.

Mein Octave-Programm zur Bestimmung der Auflösung produziert auf eine Sinusschwingung (Frequenz 1kHz, Samplingrate 192kHz) angewendet, das anliegende Diagramm. Die beiden Einbrüche (sie sind nicht Null!) repräsentieren dabei aber nicht die minimale Schrittweite, sondern einen Rundungsfehler. Der Rundungsfehler würde auf eine 26-Bit-Auflösung verweisen. Die wirklichen minimalen Schrittweiten finden sich rechts und links im Diagramm und verweisen auf eine Auflösung etwas besser als 12 Bit.

Ich hab dann noch versucht mit Octave einen ,,richtige" 32-Bit-Testton zu erzeugen. Die ,,audiowrite"-Funktion schreibt bei 192kHz aber nur in 12-Bit-Auflösung in eine wav-Datei.

Theoretisch müsste ich aber an eine 32-Bit-Auflösung fast herankommen. Berechnet über die Amplitudendifferenz zwischen Maximalamplitude und einem Samplingschritt daneben.

1 / ( sin(pi/2) – sin(pi/2-2*pi/192000) ) = 1.867.551.936,.52...

Zum Vergleich: 2^32 = 4.294.967.296

Was mich aber weiterhin wurmt, das ist die Unsicherheit beim Umgang mit Audio-Treibern, Schnittstellen, Protokollen, ...

Gruß Andreas

ABel

Sorry,

da hab ich die 1000Hz vom Ton unterschlagen. Es muss heißen:

1 / ( sin(pi/2) – sin(pi/2-2*pi/192) ) = 2075.243...

und dann sind wir nur bei etwas über 11 Bit. Dafür reichen 16 Bit Auflösung!

Gruß Andreas

Peter-1

Ich wollte jetzt mal wissen wie gut / schlecht mein Gerät funktioniert.
Ein Testpuls aus einem Generator ist durch 2 RC-Glieder etwas verschliffen worden und kann so als recht stabile Funktion angesehen werden.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Die Auswertung zeigt, dass meine samplerate von 384 kHz durchaus richtig ist, denn das daraus erzeugte Histogramm hat bei 655 keV ( Vergleich zu 662 keV ) nur eine FWHM von 0,3% hat. D.h. Somit kenne ich nun meine Meßunsicherheit.
Bei 192 kHz zeigt die Auswertung 0,4% FWHM an. Danach wird es deutlich schlechter und bei 48 kHz sind es schon über 1,2% FWHM.

Sie dürfen in diesem Board keine Dateianhänge sehen.

Es lohnt sich also etwas Geld für eine gute Soundkarte auszugeben.

Peter
Gruß  Peter

ABel

Hallo,

auch von mir noch ein paar Vergleichsdaten:

In grün: mein externes USB-Audio-Interface (steinberg UR22C),
   Total pulses: 370198, Audio gain: 5,38
als Ref1: mein OnBoard-Sound (Realtek S1220A) Mikrofoneingang und +10dB Verstärkung,
   Total pulses: 206906, Audio gain: 0,25
als Ref2: mein OnBoard-Sound (Realtek S1220A) Mikrofoneingang ohne Verstärkung,
   Total pulses: 151694, Audio gain: 2,15
als Ref3: mein OnBoard-Sound (Realtek S1220A) LineIn-Eingang,
   Total pulses: 367604, Audio gain: 3,6

Mit Audacity kann ich mit dem Host "WASAPI" vom steinberg 24Bit aufzeichnen, mit dem Host MME nur 16Bit. Theremino MCA kommt wohl nur an die 16 Bit ran.

Gruß Andreas


ABel

Hallo Peter,

häng doch Mal deinen Testimpuls als wav-Datei an. Ich kann ihn zwar nicht mit 384 kHz abspielen, aber mit 192 kHz sollte ich ja dann auch auf 0,4% FWHM kommen können?!

Gruß Andreas

ABel

Hallo,

ich hab gestern Mal versucht aus meinen Aufnahmen einen einzelnen Impuls zu isolieren, zu vervielfältigen und mit Stille als Zwischenraum zu versehen. Anbei Mal 10 gleiche Impulse in 10 Sekunden. Verpackt in ein zip-Archiv, weil ich eine wav-Datei nicht anhängen kann.

Wenn ich diese aber an Theremino MCA liefere, erkennt diese, mit eingeschaltetem "BaseLine test", keinen Impuls als zählbar an. Ohne "BaseLine test" kommt Unsinn dabei raus.

Woran liegt das?

Gruß Andreas

Peter-1

Hallo Andreas,

die gewünschte WAV Datei kann hier nicht geladen werden. Pech !
Gruß  Peter