File: /~heha/hsn/zqr.zip/liesmich.txt

ZQR = Zwei-Quellen-Rekorder.
Kann auch von 1..8 Quellen aufnehmen.
Einstellbar über das Systemmenü.

AKTUELLER HINWEIS seit 29. April 2022:

Die Dateien x64/zqr.exe und (manchmal) x86/zqr.exe und w95/zqr.exe
werden vom Windows Defender als Ransomware (Erpressungssoftware)
verdächtigt und in Quarantäne verschoben.
Echte Ransomware ist tatsächlich eine sehr ernste Bedrohung;
hier handelt es sich um sogenannte „False Positives“ = Fehlbewertungen.
https://de.wikipedia.org/wiki/Fehler_1._und_2._Art
Als Ausweg biete ich hiermit Debug/zqr.exe (als Ersatz für x86/zqr.exe)
sowie Debug64/zqr.exe (als Ersatz für x64/zqr.exe) an:
Die Debugversionen (ohne Compileroptimierung erstellt und einige
OutputDebugString-Aufrufe enthaltend) werden (derzeit) NICHT fehlbewertet.

Warum so riesengroß diesmal??
* Die Kompressions-DLLs für Ogg/Vorbis und MP3 sind mit dabei

Funktionelles aber unfertiges Programm:
* Umschaltung der Quellenanzahl hakelig: Programm neu starten!
* Obwohl Mehrkanalton eingebaut ist, funktioniert nur "Mono" und "Stereo" richtig
  (Unter „Mehrkanalton“ verstehe ich hiermit mehr als 2 Kanäle.)
* Der Lautstärkesteller ist ein logarithmisch arbeitender
  Verstärkungssteller mit dem festen Stellbereich -20dB (Spannungsfaktor 0,1)
  bis +20dB (Faktor 10). In der Mitte 0 dB = Faktor 1.
  Bubblehelp statt Skalenbeschriftung, allerdings nur mit Maus.
* Die zuletzt gemachten Einstellungen werden nur bei ordnungsgemäßem
  Programmende in der Systemregistrierung gespeichert, nicht bei Absturz.

Was geht:
* AGC (nicht ganz knackfrei)
* Logarithmische Mehrkanal-Aussteuerungsanzeige mit Skale (40 oder 60 dB):
  + Der dunklere, kürzere Balken ist der Effektivwert.
  + Der hellere, stets längere Balken ist der Spitzenwert.
* Alle Einstellungen mono/stereo, 8/16/24 bit, alle Abtastraten
* Lautstärkesteller, Panoramasteller (nur bei Mono-Quelle und Stereo-Senke)
  - Die Panoramafunktion ist nicht für Mehrkanalton verfügbar.
* Mischen mehrerer Audioquellen mit Begrenzung bei Übersteuerung
* Unterstützung von 3 Dateiformaten beim Speichern mit 2 externen Audio-Kompressoren:
  + Microsoft WAV (unkomprimiert, alle Bitraten, Kanalzahlen, Samplebreiten)
  + MP3-Datei (variable Bitrate, Kanalzahl nur 1 oder 2, Samplebreite nur 16 bit)
  + Vorbis-Datei (variable Bitrate, alle Kanalzahlen und Samplebreiten)
* Zuweisung Datum + Uhrzeit mit %D und %T als Platzhalter im Dateinamen
* Der Ort der Audiokompressor-DLLs kann im Systemmenü-Dialog festgelegt werden:
  + lame_enc.dll ist der Kompressor für MP3
  + vorbis.dll ist der Kompressor für Vorbis, der seinerseits ogg.dll benötigt
* Anzeige der Aufzeichnungszeit
* Tray-Icon hellrot während Aufnahme läuft (Animation war unerwünscht)
* Hotkeys (Festlegung im Systemmenü-Dialog)
* Notizfunktion (Dateiname im Systemmenü-Dialog)
* Ausgabe auf Audio-Senke (bspw. Kontroll-Lautsprecher, Virtual Audio Cable
  zur Speisung einer anderen Audio- oder Videoaufzeichnungssoftware)
* 64-Bit-Version
* deutsch + englisch
* VAC (s.u.) nur erforderlich unter Windows XP oder älter
* Für 1..8 Quellen (Quelltext ist für bis zu 32 Quellen ausgelegt)
* Konfigurations-Speicherung unter Exe-Dateinamen,
  dadurch mit verschiedenen Konfiguration mehrfach gleichzeitig startbar

  
Vorbereitung:
(1) 64-Bit-System:
Am besten werden die drei 64-bittrigen Audiokompressions-DLLs (im Verzeichnis x64)
nach c:\windows\system32 kopiert.
Auch sollten die drei 32-bittrigen DLLs (im Verzeichnis x86)
nach c:\windows\syswow64 kopiert werden.
Nutzen Sie nach Möglichkeit nur 64-Bit-Programme.
Weiter bei (4)

(2) 32-Bit-System:
Am besten werden die drei 32-bittrigen Audiokompressions-DLLs (im Verzeichnis x86)
nach c:\windows\system32 kopiert.
Weiter bei (4)

(3) Windows 9x/Me (stets 32 bit, kein Unicode):
Hier müssen Sie zqr.exe aus dem Verzeichnis „w95“ benutzen.
Da zumeist die Rechenleistung des Computers zur Live-Audiokompression zu knapp ist,
speichern Sie hierbei am besten in .WAV und bearbeiten die Dateien später weiter.

(4) Systembereinigung:
Löschen Sie alle anderen Exemplare dieser drei DLLs (bei Audacity, VLC, No23 usw.)
Jene Programme finden dann diese DLLs automatisch in der passenden Bitbreite.
Das ist der vorgesehene Windows-Weg für gemeinsam genutzte DLLs.
Wohlgemerkt, schon seit Windows 3.1.

(5) Wenn Sie keinen Schreibzugriff auf c:\windows und c:\programme haben,
können Sie zqr.exe mit daneben liegenden, „unshared“ Audiokompressions-DLLs
betreiben, beispielsweise von einem USB-Speicherstick.


Anwendung:
(1) Als _Zweiquellenrekorder_ zum Aufzeichnen von Telefongesprächen
und Videokonferenzen (nur Audio) OHNE Echoeffekte beim entfernten Teilnehmer.
(Die gängige Lösung „Stereomix“ produziert störende und verräterische Echos.)
Hier wählt man bspw. links  VAC bzw. den Lautsprecher und rechts das Mikrofon
als Audioquelle aus. Die Aussteuerungsanzeigen funktionieren sofort.
Für das Mikrofon testet man die Funktion durch Einsprechen.
Für das VAC oder den Lautsprecher testet man die Funktion
durch Abspielen eines Systemklangs.
Dann legt man den Speicherort und den Dateinamen für die MP3-Datei fest.
Dann kann man mit Alt+A die Aufnahme starten und stoppen.

(2) Als _Einquellenrekorder_ zum Digitalisieren von Schallplatten, Kassetten
u.ä. Tonträgern (ohne gesonderte Schnittfunktion). Am besten in .WAV
und danach mit anderen Programmen in Musiktitel zerschneiden und komprimieren.

(3) Als _Einquellenrekorder_ zum Duplizieren eines Lautsprechers auf einen
anderen. Beispiel: Monitor-Lautsprecher und SPDIF-Ausgang parallel betreiben:
„Paralleles Ausgabegerät“ aktivieren und nicht aufnehmen.

(4) Als _Mehrquellenrekorder_ zum Betrieb mehrerer USB-Mikrofone einer kleinen
Musikgruppe, zur Wiedergabe auf Lautsprecher und/oder zur Aufnahme,
als einfaches Mischpult mit Panoramareglern.
Ab Windows Vista sind die Audioverzögerungen der Mikrofone untereinander
unhörbar klein gemacht worden, und auch die Lautsprecherverzögerung
ist brauchbar kurz, mit dem Vorteil, dass dies akustische Rückkopplungen
sehr effektiv unterdrückt, im Gegensatz zu einem analogen Mischpult.

Kleine Exe-Größe, geringster Ressourcenverbrauch, Aufnahme verdeckt startbar.
Mehrfach startbar. Läuft von Windows 95 bis Windows 11.


Hinweis für Windows XP und älter:

Für das Programm, genauer für die Aufnahme von einem Lautsprecher / Kopfhörer
wird "Virtual Audio Cable Light" (VAC) benötigt.
Dieses verwendet man, um die Ausgabedaten von Skype, dem Browser usw.
dahin umzulenken (bspw. durch Festlegung als „Standard-Ausgabe“).
Der Ausgang des „Kabels“ wird (im Einstellungsdialog zu VAC)
mit dem bisherigen Lautsprecher oder Kopfhörer „verbunden“.
Test: Systemklänge müssen danach wieder normal hörbar sein.
Auf diese Weise wird das Ausgabegerät zu einem möglichen Eingabegerät
(Loopback-Funktion).


Hinweis für Windows Vista und neuer:

Hier steht mit WASAPI die Loopback-Funktion zur Verfügung.
Das heißt man kann digital aufnehmen, was einem Lautsprecher
oder Kopfhörer zugespielt wird.
Das funktioniert sogar bei stummgeschaltetem Ausgang.
Diese Funktion aktiviert man im Einstellungsdialog.
Daraufhin ändern sich die beiden Listen der Audiogeräte.
Audio-Ausgabegeräte werden nun durch einen Lautsprecher symbolisiert.

Als Standard-Eingabegerät stellt man am besten das Mikrofon ein.

Beim Programmstart erscheint der Einstellungs-Dialog,
wenn keine Audionompressions-DLLs gefunden wurden.

Die 2 *systemweiten* Hotkeys stellt man im Einstellungs-Dialog über das Systemmenü ein.
Bei mir unter Windows 10/64 haben allerdings nur Kombinationen mit Strg+Alt+Umsch
(also alle 3 Tottasten) wirklich funktioniert.
Das Programm lässt nur Kombinationen mit mindestens 2 Tottasten zu.
Die Windows-Taste kann man sicherheitshalber zusätzlich aktivieren
(Markierfeld „W“ daneben); dann muss man alle 4 Tottasten zum Aufnehmen
und Aufnahmeende drücken.
Es kann sein, dass der Hotkey nicht funktioniert, wenn Programme
mit unterschiedlichen Rechten (Benutzern) ausgeführt werden.

Automatische Dateibenennung:
Der Platzhalter "%D" setzt das Datum ein.
Im Verzeichnis angewendet wird auch das Verzeichnis ggf. rekursiv erstellt.
Der Platzhalter "%T" setzt die Uhrzeit ein. Lokalzeit.
Zusätzlich sind Formatierungsanweisungen in spitzen Klammern möglich:
Mit dem Beispiel "%<yyMMdd>D" wird das Datum in 6 Ziffern ausgeben.
Formatierungen dürfen mehrfach enthalten sein, so dass man Dateien
monats- oder jahresweise in Ordnern ablegen lassen kann.
Die möglichen Formatangaben für "%D" googelt man unter "GetDateFormat",
die für "%T" unter "GetTimeFormat".
Hingegen "%t" setzt die Lokalzeit mitsamt Datum mit den
Formatierungsanweisungen von strftime() ein. (Ungetestet.)
Der Dateiauswahldialog kommt mit Formatangaben nicht zurecht.

Achtung! Doppelpunkte in der Uhrzeitangabe ergeben ungültige Dateinamen!!
Zumindest für Windows, FAT32, NTFS, ExFAT.
Beim Speichern auf extfs2 mit entsprechendem Treiber könnte das klappen.

Angaben ohne Pfad beziehen sich auf das Startverzeichnis!
Befindet sich dieses im (für den aktuellen Benutzer) schreibgeschützten Ort,
wird die Aufnahme nicht klappen!

Problemlösungen:
(1) „Aufnahmezugriff deaktiviert!“ erscheint
(1a)	In der Windows-Systemsteuerung ist das Benutzen von Mikrofonen
	durch Win32-Apps gesperrt. Muss freigegeben sein.
(1b)	Ein Virenscanner hat das Programm in die Sandbox gesteckt.
	Namentlich Avast. Avast deinstallieren.
	Kostenlose Virenscanner werden von Firmen bezahlt,
	die kostenfreie Konkurrenz unterdrücken.
(2) MP3-Auswahlmöglichkeit ist grau
(2a)	lame_enc.dll ist nicht im Pfad. Pfad entsprechend einstellen
(2b)	lame_enc.dll von falscher Bitbreite.
	Am besten wie unter „Vorbereitung“ angegeben vorgehen.
(3) Aufnahme stottrig
(3a)	Lange Latenz (100 ms) wählen für größere Puffergröße
(3b)	Andere Rechenzeit fressende Programme beenden oder in ihrer
	Priorität herabsetzen (Task-Manager)
(3c)	Kompression vermeiden und auf später verschieben = in WAV aufzeichnen
(4) Lautsprecherecho zu spät
(4a)	Kurze Latenz (10 ms) wählen. Kann sich mit Aufnahme beißen,
	daher eher für die ausschließliche Verwendung als Audio-Router
(5) „Keine Audiodaten“ erscheint
(5a)	Kommt nur mit WASAPI und am Audio-Ausgang vor.
	Dem Lautsprecher wird gerade nichts zugespielt.
	Sind alle Audioquellen in diesem Zustand, wird auch nichts gespeichert.
	Verschwindet automatisch, wenn dem Lautsprecher etwas zugespielt wird.
(6) Längenbegrenzung der Aufnahmen?
(6a)	Ist (noch) nicht implementiert. Ebenso keine Lückenerkennung
	für die Digitalisierung von Tonträgern.

WAS IST WAS?

* x64/zqr.exe = 64-Bit-Programm, ab Windows XP, erstellt mit Visual Studio 2008
* x64/ = 64-Bit-Vorbis-DLLs und Importbibliothek, kompiliert mit Visual Studio 2008
	ab Windows XP

* x86/zqr.exe = 32-Bit-Programm, ab Windows NT 4, erstellt mit Visual Studio 6
* x86/ = 32-Bit-Vorbis-DLLs und Importbibliothek, kompiliert mit Visual Studio 6
	ab Windows 95
* w95/zqr.exe = 32-Bit-Programm ANSI, ab Windows 95, erstellt mit Visual Studio 6
* src/ = Quellen (auch für die Vorbis-DLLs und lame_enc)
Detected encoding: UTF-80