PlayMovie und MovieAudio - Unterdrückung

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

PlayMovie und MovieAudio - Unterdrückung

Beitrag von STARGÅTE »

Tachchen,

wenn das Problem wieder nur ein 3.3 Problem ist, SRY - vorab ^^

Ich habe folgendes Problem:

Ich habe eine MP3-Datei als Movie geladen

Code: Alles auswählen

LoadMovie(1,...)
Sound: MG-Schüsse, ca. 5s lang

Wenn nun in meinem Spiel ein Panzer schießt berechne ich vorher (jenachdem woher der Schuss kommt) Volume und Balance und führe folgenden Code aus

Code: Alles auswählen

PlayMovie(1,0)
MovieAudio(Volume, Balance) 
Bei einem Panzer der schießt funzt das auch super, schießen jedoch mehrere Panzer (Schussfolge < 5s) dann sollten sich die Schüsse überlagern, da jedoch beide Schüsse die selbe MovieNr haben, "unterdrückt" das zweite aufrufen von PlayMovie(1,0) das erste welches aber noch nicht fertig ist.

Kann man dieses Problem nur lösen indem man das selbe Movie mehr mals mit unterschiedlichen Nr läd, und dann beim Abspielen vorher beachtet welche MovieNr frei ist ?

Code: Alles auswählen

For n = 1 to 10 : LoadMovie(n, ...) : Next n
Nr = 0
Repeat
 Nr+1 : UseMovie(Nr)
Until MovieStatus()=0 Or Nr > 9
PlayMovie(Nr,0)
MovieAudio(Volume, Balance)
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Hmmm, noch nie drüber Gedanken gemacht aber jetzt wo du es erwähnst hab ich es mal getestet. Das Ergebniss ist klar. Ein mehrfaches Aufrufen von PlayMovie() beendet automatisch den Sound der gerade auf dieser ID abgespielt wird. Ich habe es ebenfalls mit der normalen Sound Bibliothek gestestet, selbes Ergebniss. Ich befürchte fast das wenn man ein und denselben Sound mehrfach ohne Unterbrechung abspielen will muss man ihn genau so oft mit einer anderen ID vorladen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
dige
Beiträge: 1239
Registriert: 08.09.2004 08:53

Beitrag von dige »

In PB4 kann per MovieAudio(#Movie, Lautstaerke, Balance) jedes separat
angesteuert werden.
Da musst Du ggf. auf MCI-Schnittstelle ausweichen...
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

naja das kann ich ja mit

Code: Alles auswählen

UseMovie(#Movie)
MovieAudio(Lautstaerke, Balance)
auch machen, aber es geht ja darum das ich Movies mit der gleichen #Movie Nummer zur fast selben Zeit mit unterschiedlicher Balance und Lautstaerke abspielen kann
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

das problem wäre bei wav oder ogg und PlaySound das selbe.

ich würde in dem fall denselben sound 4mal oder so laden,
dann kann man bis zu 4 gleichzeitig abspielen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

hmmm, warum hat PlayMovie() oder PlaySound() nicht sowas:

Code: Alles auswählen

Sound1 = PlayMovie(1,0)
Sound2 = PlayMovie(1,0)
Sound3 = PlayMovie(1,0)
Also ein einmaligen Rückgarbewert, wie schon so viele Sachen in PB,
sodass man dann einfach bei MovieAudio die Einmalige ID angibt :

Code: Alles auswählen

MovieAudio(Sound1, ....)
MovieAudio(Sound2, ....)
Vllt ist das ja eine Idee für ein weiteres Update :allright:
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

aha

Code: Alles auswählen

;Definitionen
mein 1. Sohn heisst Hans
mein 1. Sohn heisst Paul
mein 1. Sohn heisst Otto
;der Sohn ist natürlich strunzblöd (kein Wunder bei dem Vater) und kann sich nur den letzten Namen merken
ein paar dumme Anweisungen

Code: Alles auswählen

Paul komm mal her.

Und nun : Hans, komm mal her (Hans kommt nicht weil er schon da ist)

Und dann :Paul geht nach links während Hans gleichzeitig in den Keller geht und Bier holt und Otto zum Bäcker für ein Stück Brot.


das ergibt dann eventuell ein Stück Brot aber sicher kein Bier.

--
jede einzeln anzusprechenden Ressource braucht halt ne eindeutige ID
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

Bild
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Soll also heißen, ich muss mehrmals das MP3 laden, damit ich es mehrfach anwenden kann.

Nagut ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Was eigentlich Schwachsinn ist da nur unnötig Speicher gefressen wird. In BlitzBasic wird das ganze über Soundkanäle (basierend auf FMOD) gelöst. Da kannst den einmal geladenden Sound beliebig oft abspielen und sie überlagern sich auch. In PB haben wir ja noch nicht mal IsSoundPlaying(). Da muss sich noch einiges tun damit es für Spieleentwickler einfacher wird.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten