Es werden keine 2 Töne gleichzeitig erzeugt, das habe ich falsch geschrieben, sondern sie sind leicht versetzt. Auch wenn sie gleichzeitig erzeugt werden würden, würde keine Verstärkung der Schwingungen erfolgen. Wenn sie aber versetzt laufen, können sich die Schwingungen neutralisieren.compmgmt hat geschrieben:Mir ist noch was dazu eingefallen: Die Anweisungen zum Ton erzeugen laufen allerdings im selben Thread. Dadurch können theoretisch je nach OS folgende Szeanrien entstehen:itjump hat geschrieben:Dadurch das 2 Töne gleichzeitig erzeugt werden, kann es passieren, das die Vibration des Lautsprechers sich selbst neutralisiert, wodurch dann kein Ton mehr kommt.
1. Ton wird Synchron erzeugt: Erst wird ein Ton ausgegeben, danach der nächste (es gibt einen langen Ton).
2. Nur der letzte Ton wird ausgeben, da alle vorherigen vom Betriebssystem abgebrochen werden. Dieses Phänomen kenne ich zwar nur vom wav-Dateien abspielen, kann allerdings theoretisch auch hier zutreffen.
3. Beide Töne werden gleichzeitig erzeugt. Durch das erzeugen zweier exakt gleicher Töne (in diesem Fall der Beep) wird die Schwingung des Lautsprechers sicherlich nicht neutralisiert, sondern verstärkt.
Beep erzeugen
Re: Beep erzeugen
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Beep erzeugen
Theoretisch ist das möglich (Antischall), praktisch wird es aber bei unserem Beispiel niemals der Fall sein.itjump hat geschrieben:Es werden keine 2 Töne gleichzeitig erzeugt, das habe ich falsch geschrieben, sondern sie sind leicht versetzt. Auch wenn sie gleichzeitig erzeugt werden würden, würde keine Verstärkung der Schwingungen erfolgen. Wenn sie aber versetzt laufen, können sich die Schwingungen neutralisieren.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
-
- Beiträge: 188
- Registriert: Fr 18. Jan 2013, 09:29
- OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
- CPU-Target: Celeron
Re: Beep erzeugen
Hallo zusammen
Ich habe jetzt auch alles ausprobiert aber nix zu hören.
Ich habe jetzt auch alles ausprobiert aber nix zu hören.
-
- Beiträge: 6943
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beep erzeugen
Ich vermute immer mehr, das die Modernen OS die bel-Kommandos unterdrücken, nicht aber den Speaker.
Die wir in der Linux-Shell auch ignoriert.
Oder in C++
Wie oben schon beschrieben, hat auch der DOS-Emulator Probleme. Ich denke mal ^G wird über int21 angesprochen, gibt aber keinen Ton.
Das Games, welches einen Ton ausgibt, wird wahrscheinlich direkt die Port-Adresse des Speakers ansprechen.
Ich habe noch folgendes unter Linux mit uses Crt probiert:
Hat auch keinen Ton.
Ich habe Sound noch TP im Dos-Emulator probiert, dort habe ich Ton.
Die wir in der Linux-Shell auch ignoriert.
Code: Alles auswählen
echo -e "\a"
Code: Alles auswählen
std::cout << "\a" << std::endl;
Das Games, welches einen Ton ausgibt, wird wahrscheinlich direkt die Port-Adresse des Speakers ansprechen.
Ich habe noch folgendes unter Linux mit uses Crt probiert:
Code: Alles auswählen
Sound(1000);
WriteLn('on');
Sleep(1000);
NoSound;
WriteLn('off');
Ich habe Sound noch TP im Dos-Emulator probiert, dort habe ich Ton.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Beep erzeugen
Unter Debian/Xfce wird bei mir ein Beep über echo -e "\a" ausgegeben. Auch mit WriteLn(#7) im Pascal-Programm erfolgt ein Beep. Sound() gibt aber keinen Ton aus.
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beep erzeugen
Ich glaube das geht mit einem Notebook prinzipiell nicht, da keine Hupe eingebaut.
Neuere PC's haben sowas vieleicht auch nicht mehr? Kostet ja extra.
Mein PC (ca. 5Jahre alt) hat schon keine Hupe mehr verbaut. Habe gerade nachgesehen.
Würde auf jeden Fall direkt vom Mainboard direkt erzeugt das Signal, und hat nichts mit Sound zu tun.
Könnte auch sein das Kabel der Hupe gar nicht eingesteckt ist.
Antischall kann nicht sein, da bräuchte es ja zwei Hupen dafür. Das hat es wohl noch nie gegeben?
Neuere PC's haben sowas vieleicht auch nicht mehr? Kostet ja extra.
Mein PC (ca. 5Jahre alt) hat schon keine Hupe mehr verbaut. Habe gerade nachgesehen.
Würde auf jeden Fall direkt vom Mainboard direkt erzeugt das Signal, und hat nichts mit Sound zu tun.
Könnte auch sein das Kabel der Hupe gar nicht eingesteckt ist.
Antischall kann nicht sein, da bräuchte es ja zwei Hupen dafür. Das hat es wohl noch nie gegeben?
Zuletzt geändert von Marc am Mo 28. Nov 2016, 17:49, insgesamt 1-mal geändert.
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 6943
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beep erzeugen
Die Hardware ist bei mit vorhanden, ansonsten würde würde es bei mir unter purem DOS auch nicht gehen, aber wie weiter oben beschrieben, hatte ich mit DOS 3.3 Ton.Ich glaube das geht mit einem Notebook prinzipiell nicht, da keine Hupe eingebaut.
Neuere PC's haben sowas vieleicht auch nicht mehr? Kostet ja extra. Würde auf jeden Fall direkt vom Mainboard direkt erzeugt das Signal.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Lazarusforum e. V.
- Beiträge: 208
- Registriert: Fr 11. Nov 2016, 14:09
- OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beep erzeugen
Ganz interessant:
https://de.wikipedia.org/wiki/Systemlautsprecher
https://de.wikipedia.org/wiki/Systemlautsprecher
Good code comes from experience, experience comes from bad code.
-
- Beiträge: 6943
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beep erzeugen
Könnte dies vielleicht noch einen Zusammenhang mit Win32 oder Win64 haben ?Der Befehl printf("\a"); reicht in C-Code bei Verwendung der Konsolenausgabe aus, um einen „Alert“ (dt. Alarm) auszugeben, welcher früher (bei Microsoft bis Windows XP) üblicherweise in Form eines Piepstons aus dem Systemlautsprecher realisiert wurde.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 188
- Registriert: Fr 18. Jan 2013, 09:29
- OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
- CPU-Target: Celeron
Re: Beep erzeugen
Das mit der Neutralisation der Töne ist in der Praxis kaum der fall. Dazu müssten die Schwingungen exakt 180 Grand phasenverschoben sein. Da hier nur Rechtecksignale erzeugt werden wäre bereits bei 179 grad ein ton zu hören, wenn auch nur ein sehr leiser.
-
- Beiträge: 6943
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beep erzeugen
Wem man ^G^G^G, dann würde man *beepbeepbeep* hören. Unter MSDOS ist dies auf jeden Fall der Fall. Während eines *beep* ist DOS blockiert.Das mit der Neutralisation der Töne ist in der Praxis kaum der fall.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Beep erzeugen
ja, da DOS kein scheduler wie Linux oder Windows NT hat.Mathias hat geschrieben:Während eines *beep* ist DOS blockiert.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Re: Beep erzeugen
Für mich hört sich das so an, als würde der Speaker beim Mainboard fehlen.
Die Speaker sind nicht (mehr?) standartmäßig im PC verbaut; Bzw. habe ich schon öfter gesehen das keiner mehr vorhanden ist. Der Anschluss ist aber in der Regel auf dem Mainboard noch vorhanden und befindet sich meist neben dem "Power", "LED",... Anschlüssen. Kann also leicht "nachgerüstet" werden
Einfach mal ins Gehäuse sehen und nach was lautsprecherähnlichem suchen 
Die Speaker sind nicht (mehr?) standartmäßig im PC verbaut; Bzw. habe ich schon öfter gesehen das keiner mehr vorhanden ist. Der Anschluss ist aber in der Regel auf dem Mainboard noch vorhanden und befindet sich meist neben dem "Power", "LED",... Anschlüssen. Kann also leicht "nachgerüstet" werden


Re: Beep erzeugen
Die sind aber auch nicht mehr wirklich zu gebrauchen heutzutageEpcop hat geschrieben:Für mich hört sich das so an, als würde der Speaker beim Mainboard fehlen.
Die Speaker sind nicht (mehr?) standartmäßig im PC verbaut; Bzw. habe ich schon öfter gesehen das keiner mehr vorhanden ist. Der Anschluss ist aber in der Regel auf dem Mainboard noch vorhanden und befindet sich meist neben dem "Power", "LED",... Anschlüssen. Kann also leicht "nachgerüstet" werdenEinfach mal ins Gehäuse sehen und nach was lautsprecherähnlichem suchen
-
- Beiträge: 6943
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Beep erzeugen
Kaufen kann man solche Dinger immerhin noch.Die sind aber auch nicht mehr wirklich zu gebrauchen heutzutage
https://www.reichelt.de/Miniaturlautspr ... ARCH=%252A
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot