Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Sound-Ausgabe nach Kanal (links/rechts) (https://www.delphipraxis.net/169229-sound-ausgabe-nach-kanal-links-rechts.html)

Accipiper 5. Jul 2012 18:52

Sound-Ausgabe nach Kanal (links/rechts)
 
Hi, ich will bei einem Klick mit der Mittleren Maustaste eine Ton auf dem linken Kanal ausgeben und bei einem Klick mit der rechten Maustaste einen Ton auf dem rechten Kanal.


Das mit dem Maustasten klappt auch, aber ich weiß nicht, wie ich die einzelnen Kanäle ansprechen kann. Kann mir jemand helfen?
Ausgabe des Tons läuft derzeit so:

Code:
Windows.Beep(900, 1000);
Hab schon versucht so was zu finden, leider vergeblich. Danke schon mal für eure Hilfe. :) :thumb:

Medium 5. Jul 2012 19:50

AW: Sound-Ausgabe nach Kanal (links/rechts)
 
Via Windows-Beep eher überhaupt nicht, da dies eine bestehende WAVE Datei abspielt, die selbst auch schon stereo sein kann. Das einfachste wäre es, wenn du selber zwei Wave-Dateien machst, eine mit Ton nur links, eine rechts, und dann mittels sndPlaySound() die jeweils entsprechende abjodeln.

hathor 5. Jul 2012 22:42

AW: Sound-Ausgabe nach Kanal (links/rechts)
 
Zitat:

Zitat von Medium (Beitrag 1173714)
Via Windows-Beep eher überhaupt nicht, da dies eine bestehende WAVE Datei abspielt, die selbst auch schon stereo sein kann. Das einfachste wäre es, wenn du selber zwei Wave-Dateien machst, eine mit Ton nur links, eine rechts, und dann mittels sndPlaySound() die jeweils entsprechende abjodeln.

"Via Windows-Beep eher überhaupt nicht, da dies eine bestehende WAVE Datei abspielt"
Das ist falsch! Beep.sys erzeugt den Ton.

Das funktionierte bis WIN XP fast wie zu DOS-Zeiten:

Code:
MakeBeep1 proc dwPitch:DWORD

    ; Direct hardware access

    cli

    mov al, 10110110y
    out 43h, al

    mov eax, dwPitch
    out 42h, al

    mov al, ah
    out 42h, al

    ; Turn speaker ON

    in al, 61h
    or al, 11y
    out 61h, al

    sti

    DO_DELAY

    cli

    ; Turn speaker OFF

    in al, 61h
    and al, 11111100y
    out 61h, al

    sti

    ret

MakeBeep1 endp
Danach wurde es etwas komplizierter, aber dafür ist der Ton schöner.

Medium 6. Jul 2012 00:06

AW: Sound-Ausgabe nach Kanal (links/rechts)
 
Na gut. Sagen wir es so: In Systemen die noch einen Pipser haben, wird das darüber ausgegeben - so lange man nicht Vista oder höher einsetzt. In den anderen Fällen leitet Beep() auf das angesprochene Wave-File um. Effektiv bleibt die Aussage aber bestehen: Der Beeper wird auch kaum ein Stereosignal trällern ;)

(War mir auch bekannt, aber ich hielt pre-Vista für nicht mehr so arg relevant hier, zumal der TE ja den Ton schon über seine Soundkarte zu bekommen scheint.)

Accipiper 6. Jul 2012 13:44

AW: Sound-Ausgabe nach Kanal (links/rechts)
 
Okay, es sollte schon auf allen Systemen laufen. Das mit dem Beep für rechts/links hab ich jetzt (die Audiodatei).

Wenn ich die allerdings per sndPlaySound() oder PlaySound() einbinden will, sagt mir Delphi Undeclared identifier 'PlaySound'.

Kann mir jemand helfen? Und reicht es, wenn ich in die Klammer den Dateinamen inklusive Endung schreiben, wenn die Datei im selben Verzeichnis liegt?

So, es hat sich geklärt. Ich musste noch mmSystem in der USES-Sektion einfügen.


Vielen Dank noch mal für eure Hilfe. Auf euch ist ja echt immer verlass. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz