AdSense

Montag, 17. Juni 2013

C# - DirectSound

(English version) Für Panzerkampf habe ich Sounds gebracht. Die standard-Sound-Abspielmethode ist allerdings nicht in der Lage, mehrere Sounds gleichzeitig zu spielen (der laufende Sound bricht ab, wenn ein neuer gestartet wird). Daher habe ich DirectSound von DirectX installieren müssen. Dafür braucht man erstmal das DirextX SDK.

Vor dem Installieren sollte man "Microsoft Visual C++ 2010 Redistributable" deinstallieren, sonst tritt (jedenfall bei mir) der Fehler "S1023" auf (hier gibt es mehr dazu).

Danach kann man einfach eine Referenz sein C#-Projekt hinzufügen (Durchsuchen - Microsoft.DirectX.DirectSound, bei mir lag die Datei in C:\Windows\assembly\GAC\Microsoft.DirectX.DirectSound).

Außerdem muss in App.config noch etwas verändert werden. Davor sah es da bei mir so aus:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>


<startup> muss verändert werden zu <startup useLegacyV2RuntimeActivationPolicy="true">, sodass das ganze dann so aussieht:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>


Der Code um Sounds abzuspielen sieht dann folgendermaßen aus:

Device applicationDevice = new Device();
applicationDevice.SetCooperativeLevel(this, CooperativeLevel.Priority );

soundBuffer1 = new SecondaryBuffer( "c:\afile1.wav", applicationDevice );
soundBuffer2 = new SecondaryBuffer( "c:\afile2.wav", applicationDevice );

soundBuffer1.Play( 0, BufferPlayFlags.Looping );
soundBuffer2.Play( 0, BufferPlayFlags.Looping );


Keine Kommentare:

Kommentar veröffentlichen