Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.05.2016, 11:40

verschiedene audios gleichzeitig abspielen in C# Windows Forms

Ich wollte für mein Spiel Sounds und Hintergrund Musik benutzen aber die Musik stopt immer wenn ich einen anderen Sound abspiele.
Was muss ich tun dass beides läuft?

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

2

18.05.2016, 12:38

WPF unterstützt meines Wissens nach keine parallele Wiedergabe von Audiofiles. Da musst du auf andere Bibliotheken zugreifen.
Als Möglichkeiten fällt mit hier OpenAL oder bass.NET (http://bass.radio42.com/) ein. Vielleicht geht es auch mit DirectX, aber das weiß ich nicht 100%ig

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

18.05.2016, 13:04

Ginge natürlich mit DirectX, OpenAL, Bass, SDL, SFML und ähnlichen Libs prima.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

18.05.2016, 13:46

Und wie macht man dass dann?

5

18.05.2016, 13:49

Und wie macht man dass dann?

bzw. was würdet ihr mir als Anfänger empfehlen?

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

6

18.05.2016, 14:04

Wenn du bei C# bleiben willst, wäre MonoGame eine Empfehlung wert, für SFML und SDL sollte es aber auch Bindings/Wrapper geben. Ob DirectX oder Bindings/Wrapper für OpenGL zu empfehlen ist, kann ich nicht einschätzen, allerdings habe ich schon diverse Male mitbekommen, dass diese für Anfänger etwas weniger geeignet sein sollen.
Wenn es für dich nicht so relevant ist, auf welcher Abstraktionsebne du dich in der Spieleentwicklung bewegst, wären auch GameEngines einen Blick wert. Unity verwendet C# als Scriptsprache, bei Unreal und Cry Engine ist es meines Wissens möglich, C# als Scriptssprache "nachträglich" zu ergänzen. (Gerade bei der Unreal Engine gibt es meines Wissens von offizieller Stelle eine Anleitung dafür.)

Bist du dir absolut sicher, dass es unter keinen Umständen möglich ist, in WPF mehrere Sounds gleichzeitig abzuspielen? Eine kurze Suche hat mir gesagt, man müsse einen MediaPlayer erstellen, wenn Sounds wiedergeben möchte. Ich könnte mir vorstellen, dass mehrere Instanzen dieser Klasse unabhängig voneinander Sounds wiedergeben können.
Abgesehen davon solltest du, wenn du Spiele implementieren willst, eher auf bereits genannte Frameworks oder Engines zurückgreifen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

18.05.2016, 14:37

Es geht hier soweit ich das im Kopf habe ja um ein Schulprojekt. Guck dir doch einfach mal bass.Net an. Das ist relativ einfach zu bedienen und es gibt bei Google genügend Tutorials zu dem Framework.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

8

18.05.2016, 19:14

ich finde leider kein funktionierendes Tutorial für bass.Net ich hab was probiert aber da kommt immer ne exeption

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using Un4seen.Bass;
using Un4seen.Bass.AddOn.Tags;


namespace Testbass
{
    class SimpleBassPlay
    {
        int stream=0;
        string Pfad="";
        double Lautstärke;
        public TAG_INFO tags;
        public void InitialBass()
        {
            Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
        }
        public void Play(string Filename)
        {
            Bass.BASS_StreamFree(stream);
            this.Pfad = Filename;
            this.Lautstärke = Lautstärke*0.01;
            stream = Bass.BASS_StreamCreateFile(@Pfad, 0L, 0L, BASSFlag.BASS_DEFAULT);
            if (stream != 0)
            {
                Bass.BASS_ChannelPlay(stream, false);
                tags = new TAG_INFO(@Pfad);
                BassTags.BASS_TAG_GetFromFile(stream, tags);
            }
        }
        public void SetLautstärke(int LautstärkeInProzent) 
        {
            this.Lautstärke = LautstärkeInProzent * 0.01;
            Bass.BASS_ChannelSetAttribute(stream, BASSAttribute.BASS_ATTRIB_VOL, (float)Lautstärke);
        }
        public int GetCurrentPosition() 
        {
            return ((int)Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetPosition(stream)));
        }
        public int GetDuration() 
        {
            return ((int)Bass.BASS_ChannelBytes2Seconds(stream, Bass.BASS_ChannelGetLength(stream)));
        }
        public void SetCurentposition(int CurrentPosition) 
        {
            Bass.BASS_ChannelSetPosition(stream, (double)CurrentPosition);
        }
        public void Stop() 
        {
            Bass.BASS_ChannelStop(stream);
            Bass.BASS_StreamFree(stream);
            Bass.BASS_Free();
        }
        bool Playing;
        public bool IsPlaying() 
        {
            if (Bass.BASS_ChannelIsActive(stream) != BASSActive.BASS_ACTIVE_PLAYING)
            {
                Playing = false;
            }
            else 
            {
                Playing = true;
            }
            return Playing;
        }
        public void Pause() 
        {
            if (Bass.BASS_ChannelIsActive(stream) == BASSActive.BASS_ACTIVE_PLAYING)
            {
                Bass.BASS_ChannelPause(stream);
            }
            else if(Bass.BASS_ChannelIsActive(stream)==BASSActive.BASS_ACTIVE_PAUSED)
            {
                Bass.BASS_ChannelPlay(stream, false);
            }
           
        }
        public int GetVolume() 
        {
            return (int)(Lautstärke * 100);
        }
    }
}

9

18.05.2016, 19:22

An unhandled exception of type 'System.TypeInitializationException' occurred in JumpandRun.exe

Additional information: Der Typeninitialisierer für "Un4seen.Bass.Bass" hat eine Ausnahme verursacht.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

18.05.2016, 19:39

http://stackoverflow.com/questions/26229…plication-error
Erster Link bei Google wenn ich "bass TypeInitializationException" suche.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige