Top-Themen

Aktuelle Themen (A bis Z)

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, 1307 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
IDE & Editoren
IDE für C-Sharp und C++ auf Windows
gelöst Frage von BugdroidIDE & Editoren8 Kommentare

Hallo, Ich nutze derzeit Visual Studio, aber auf Dauer ist es mir etwas zu Ressourcenfressend und für meine Zwecke ...

C und C++
C-sharp Form buggt
gelöst Frage von YanmaiC und C++2 Kommentare

Hallo ihr Administratoren. Ich habe ein kleines Problem. Unszwar möchte ich eine Ordner von C# zu einem PHP Script ...

C und C++
C Sharp - DLL einbinden
gelöst Frage von EisbrecherinC und C++3 Kommentare

Hallo zusammen! Ich bin gerade etwas am Verzweifeln beim Einbinden von DLLs. Ich habe ein Projekt in C# (erstellt ...

Webentwicklung
Templates für ASP.NET (C Sharp)
gelöst Frage von CortexA8Webentwicklung7 Kommentare

Hallo zusammen, Ich würde gerne für ein in C# programmiertes ASP.NET-Projekt ein allgemeines Template erstellen. Ich habe zwar schon ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 23 StundenBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Windows Store Apps
gelöst Frage von PeterleBWindows Server11 Kommentare

Gibt es einen Weg, auf Windows Server 2016 Windows Store Apps wie zum Beispiel die HP Smart App zu ...

Windows 10
Windows 10 RDP nicht mehr möglich
Frage von speedy-luisWindows 1010 Kommentare

Hallo zusammen, seit ein paar Tagen kann ich in unserem Netzwerk auf die Windows 10 PCs keine RDP-Session mehr ...

Microsoft
Erfahrungen mit Webcam over RDP gesucht
Frage von DerWoWussteMicrosoft10 Kommentare

Moin Kollegen. Bekanntlich kann man Webcams nur mit Drittanbietersoftware in RDP reinschleifen. Was nutzt Ihr dazu? Wie stabil funktioniert ...