Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

C Sharp: Sound per Thread abspielen

Frage Entwicklung C und C++

Mitglied: Heinz2511

Heinz2511 (Level 1) - Jetzt verbinden

13.12.2014, aktualisiert 14.12.2014, 1273 Aufrufe, 2 Kommentare

Hallo

ich schreibe in C# / Visual Studio 2010 ein kleines Spiel (WinForms) wofür ich auch Sounds benötige.
Genauer gesagt muss ich 2 Sounds (.wav) abspielen:

Ich möchte eine (ständige) Hintergrundmusik abspielen und einen zweiten (vorübergehenden) Sound wenn z.B ein "Schuss" ertönen soll.

Ich kann die Hintergrundmusik recht einfach so abspielen:

SoundPlayer oSound = new SoundPlayer(global::MeinSpiel.Properties.Resources.Hintergrundmusik) ;
oSound.PlayLooping();

Wenn ich aber nun einen "Schuss"-Sound abspiele
SoundPlayer oSoundSchuss = new SoundPlayer(global::MeinSpiel.Properties.Resources.Schuss) ;
oSoundSchuss.Play();

dann wird die Hintergrundmusik beendet.

Ich möchte, dass nach dem "Schuss"-Sound die Hintergrundmusik wieder weiterspielt.

Eine Möglichkeit wäre vielleicht zusätzlich zu dem Soundplayer, der ständig die Hintergrundmusik spielt, noch einen Mediaplayer zu nutzen,
der dann nur den Schuss-Sound abspielt? (SoundSchuss = new WMPLib.WindowsMediaPlayer() );
Aber selbst wenn das geht würde ich es vorziehen nur den Soundplayer zu benutzen...und zwar vielleicht wie folgt:

Es spielt die Hintergrundmusik.
Wenn ein Schuss-Sound abgespielt werden soll dann passiert dies in einem Thread.
Warum ? Weil ich durch den Thread den Sound asynchon abspielen kann, das Spiel also flüssig weiterläuft....?
Und da ich (hoffentlich) mitbekomme wenn der Thread fertig ist weiss ich auch, wann der Schuss-Sound fertig abgespielt wurde.
Und dann würde ich wieder anfangen die Hintergrundmusik abzuspielen.

Also langer Rede kurzer Sinn:
Wie kann ich einen Sound per Thread abspielen und wenn der Thread zu Ende ist die Hintergrundmusik wieder starten?

Hier scheint so etwas beschrieben zu sein, aber leider verstehe ich das Englisch nicht so gut...
http://bytes.com/topic/c-sharp/answers/709555-when-does-sound-file-fini ...


Danke
Mitglied: 114757
LÖSUNG 13.12.2014, aktualisiert 14.12.2014
Moin Heinz,
die Soundplayer-Klasse ist in dieser Hinsicht zu beschränkt. Der Soundplayer hat nur einen Ausgabepuffer, egal ob du einen neuen in einem anderen Thread erstellst, wiedergeben kannst du nur ein einziges File zur selben Zeit, also für Games absolut ungeeignet, auch weil das Teil nur WAV-Files wiedergeben kann.

Hier steht dazu auch nochmal alles zusammengefasst drin:
http://www.math.ucla.edu/~wittman/10c.1.11s/Lectures/Lec16.pdf

Machs entweder über zwei MediaPlayer Instanzen, eine für die Hintergrundmusik (kannst du auch auf Loop schalten)
wmpObject.settings.setMode("loop",true);
und eine für Effekte.

Performancetechnisch wäre bei Spielen eher die Verwendung des DirectX SDK zu empfehlen. Hinweise und Beispiele dazu, findest du ebenfalls im oben verlinkten PDF.

Zum Multithreading gibt es ja bereits unmengen Tutorials.

Gruß jodel32
Bitte warten ..
Mitglied: Heinz2511
14.12.2014 um 10:42 Uhr
Danke für die Antwork und den Link

Also ich versuche es dann mal mit 2 Mediaplayer Instanzen.
Bitte warten ..
Ähnliche Inhalte
C und C++
gelöst C sharp WPF MVVM Visibility Binding funktioniert nicht bei UI

Frage von mayho33 zum Thema C und C ...

Server-Hardware
Hilfe bei Sound einer VM auf Windows Server 2008R2 (1)

Frage von N4m3n7os3r zum Thema Server-Hardware ...

Visual Studio
gelöst C-sharp Data Table und Set (9)

Frage von H41mSh1C0R zum Thema Visual Studio ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Linux
gelöst Google Chrome startet nicht (12)

Frage von Thomas91 zum Thema Linux ...