Guten Tag - bin neu hier
Hab mich zwar schon etwas durch die Suchfunktionen geleiert, aber ich hab leider nichts passendes finden können. Deshalb musste, so leid es mir tut, ein neuer Thread her...
Ich bin auf der Suche nach einer Problemlösung, die Euch vllt schon einmal über den Weg gelaufen ist. Nun kann es sein, dass mein gedachtes Prinzip Schwachsinn ist, aber ich bin recht neu in der Materie und dachte mir: "hach probierste des mal...", also keine herben Antworten ;p
Ich bin gerade dabei, mir mit Hilfe von Directshow, die Hintergrundmusik meines Spieles organisieren zulassen. Das funktioniert auch alles super, allerdings möchte ich natürlich ein paar Features implementiert wissen, die mein Vorhaben unterstützen. Nun soll pro Spielstatus ein gewisser Pool an Musikdaten geladen werden, aus dem zufällig ein Titel gewählt (dachte hier auch an zufälliges Platzieren der Cursorposition in einem Mixtrack) und abgespielt wird. Das Ganze akkustisch formschön mit FadeIn und FadeOut, bzw XFade zwischen den Titeln. Ausserdem soll überprüft werden, ob eventuell ein Titel läuft. Ist dies der Fall, soll der aktuelle ersteinmal ausgeblendet werden, bevor der neue gestartet wird. Konntet ihr folgen?! LOL!
Okay, diese Ablauf- und Organisationslogik ist nicht mein Problem, sondern eher der Denkprozess beim Faden. Ich muss natürlich eine Schleife basteln, die mir kontinuierlich Werte liefert, um die Lautstärke des aktuell gestarteten Titels anpassen zukönnen. Da aber die meisten Systeme heutzutage "recht schnell" sind, ist die Zeitspanne zwischen den Laustärkewechseln so gering, dass der Effekt als = NULL wahrgenommen wird :/
Da dachte ich mir also, hey bauste einfach eine Verzögerung ein, damit man den Fadeprozess überhaupt mitbekommt. Alles klar als Standard ersteinmal Sleep() angeworfen und pronto ging es. Ihr werdet es ahnen, es war eine dumme Wahl, alldieweil Sleep() den gesamten Prozess blockiert und nicht nur den/die Thread(s) der/die von DirectShow erzeugt wird/werden. Im Resultat heisst das im Moment für mich, der Sound fadet zwar schön aus und wieder ein, aber dabei blockiert er mein Spiel, was natürlich nicht im Sinne des Erfinders ist.
Nun dachte ich sofort an Threads und hoffte damit eine Lösung zufinden, allerdings funktionierte das Alles auch nicht so recht, wie ich mir das vorgestellt hatte. Ich hoffte auf _beginthread und _endthread, wurde aber enttäuscht.
Ich mag keinen Code sehen, ich will nur mal hören, ob da jemand eine Idee für hat, oder vor ähnlichem Problem stand.
Mir schwahnt, als würde niemand ernsthaft seinen Musikpart mit DirectShow behandeln. Vllt sollte ich darüber nachdenken auf Ausweichmöglichkeiten umzuschwenken? Immerhin nuddelt DirectShow nicht unbedingt lizenzfreie Formate ab (Da schliesst sich gleich noch eine Frage an: Wenn wir unsere Musik im Format MP3 abspeichern und im Spiel verwenden, werden Lizenzgebühren beim Fraunhofer Institut fällig richtig!?)
Über den ein oder anderen Gedankensprung wäre ich sehr erfreut... btw: ist schön hier :huhu: