Autor Beitrag
Daniel L.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mo 27.02.17 12:29 
Hi zusammen!

Ich bastele gerade ein einem Prog, welches Melodien via windows.beep "abspielt" - oder besser: abpiepst.

function Beep(dwFreq, dwDuration: DWORD): BOOL; stdcall;

Jetzt hab ich ich mit Entsetzen festgestellt:
Immer, wenn die Frequenz eine ungerade Zahl ist, und die Dauer mind. 1000 Millisekunden beträgt,
kommt regelmässig nach ca. 500-Millisekunden ein Knacksgeräusch - es klingt so, als ob das Piepen kurz unterbrochen wird... :shock:

ausblenden Delphi-Quelltext
1:
2:
windows.Beep(4411500); // knackst
windows.Beep(4401500); // knackst nicht


Nun kann ich natürlich den gewünschten Frequenzwert (der bei mir intern sowieso erstmal als double vorliegt) auf die nächste gerade Zahl runden (statt allgemein 'round' zu nutzen) -
diese akkustische Ungenauigkeit wäre wohl noch akzeptabel.

Trotzdem würde ich gerne mal wissen, was da los ist....

Nutze W7

Gruß: Daniel
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 27.02.17 13:54 
Da Windows 7 und höher Beep ohnehin normalerweise auf die Soundkarte rendern, verstehe ich nicht so recht weshalb du das noch benutzt.

Ob es bei mir auch knackst, kann ich mal testen.
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mo 27.02.17 14:20 
Ob es über die Soundkarte läuft oder nicht, wäre mir erstmal egal.
Mir gehts um einfaches abspielen von Tönen.

Wie könnte man das denn ohne 'windows.beep' machen?

edit: ok - besser vorher suchen:
es gibt etliche tools die sowas können - werd das beizeiten mal testen

Bliebe noch die Frage nach den Knacksern...

Daniel
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.02.17 15:00 
- Nachträglich durch die Entwickler-Ecke gelöscht -

Für diesen Beitrag haben gedankt: Daniel L.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 27.02.17 15:09 
user profile iconDaniel L. hat folgendes geschrieben Zum zitierten Posting springen:
diese akkustische Ungenauigkeit wäre wohl noch akzeptabel.


Du sinnierst über 1 Hz als "akkustische Ungenauigkeit", verwendest aber windows.beep?

windows.beep erzeugt Rechteckschwingungen und somit massiv harmonische Obertöne, was diesen Ton ziemlich verrauscht klingen läßt. Jede reine Sinusschwingung (auch am Computer auch mit Delphi erzeugbar) hört sich zwar "nackt", dafür aber rein an. Ganz zu schweigen von Midiklängen.
Daniel L. Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 140
Erhaltene Danke: 14

W7, W8
TurboD Prof, Delphi Community
BeitragVerfasst: Mo 27.02.17 15:35 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:

Du sinniersrst über 1 Hz als "akkustische Ungenauigkeit", verwendest aber windows.beep?


Ich meine damit nur die Tonhöhe.
Unterschiede von einem Herz sind bei nicht zu hohen Tönen durchaus wahrnehmbar,
wie auch bei Musikinstrumenten, die bisweilen auch sehr obertonreich klingen