JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=257ab3ed4a3c51af334c91c3426760eaMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Direct Audio
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 14:15    Titel: Direct Audio Antworten mit Zitat

Wie kann ich abfragen ob eine Wav zuende abgespielt wurde?
ich hab nämlich son loop ding und möchte das immer wieder von vorne abspielen ...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 15:19    Titel: Antworten mit Zitat

Ich glaub des geht mit
Code:
Performance::IsPlaying(IDirectMusicSegment*,...)

_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 15:36    Titel: Antworten mit Zitat

Performance::

soll doch die Audio Class sein oder?
dann must mir aber noch sagen wie die FUnlktion IsPlaying()
aussehen soll
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 16:10    Titel: Antworten mit Zitat

Ich glaub, des wurde scho mal in dem Forum besprochen.
Nutz doch einfach mal die Suchefunktion.

Aaah ja, habs gefunden.
TheMillenium hats gepostet bei DirectX, OpenGL -> DX Audio Probleme.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 19:38    Titel: Antworten mit Zitat

Hab vorhin gegoogled und was gefunden:
Zitat:
Ascertains whether a particular segment or segment state is currently playing at the speakers.

object.IsPlaying( _ segment As DirectMusicSegment8, _ SegmentState8 As DirectMusicSegmentState8 _
) As Boolean


Code:
IDirectMusicPerformance8* Performance;
IDirectMusicSegment8* Segment;
IDirectMusicSegmentState8* SegmentState;


Code:
Performance->PlaySegmentEx(Segment,NULL,NULL,DMUS_SEGF_SECONDARY,NULL,NULL,SegmentState,NULL);


Code:
BOOL StillPlaying=Performance->IsPlaying(Segment,SegmentState);


So, jetzt müssts klappen...

Müsste eigentlich, aber ich habs probiert und der Computer spielt dann den Sound immer mehrere Male direkt hintereinander ab. Crying or Very sad
Weiß jemand, woran das liegt?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 22:45    Titel: Antworten mit Zitat

Hast du geprüft ob das aktuelle Stück noch läuft? Wenn nicht, erst dann erneut spielen, wenn ich dein Problem richtig verstanden hab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 23:32    Titel: Antworten mit Zitat

->IsPlaying(Segment,SegmentState);

Segment ist klar
aber was ist Segment State?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Starwash
Senior JLI'ler


Alter: 40
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 22.03.2003, 23:57    Titel: Antworten mit Zitat

Hi,
hier mal der Code meiner Soundklasse, welche *.mp3s abspielen kann und überprüft, ob eine Sounddatei zu Ende abgespielt wurde. Diese Klasse funktioniert nicht 100%ig, weswegen Sie für unser Spiel nicht genutzt wird, also kann ich Sie mit ruhigem Gewissen posten.

Code:

#include <dshow.h>

#pragma comment(lib,"amstrmid.lib")
#pragma comment(lib,"strmiids.lib")
*/

#define SOUND      1
#define BGMUSIC      2

#ifndef _DxAudio_h_
#define _DxAudio_h_

class DxAudio
{
public:
    DxAudio();
    ~DxAudio();
    //Memberfunktionen
   void Create();
  HRESULT LoadFile(char *name);
  bool Play(int Type);
  bool Stop();
  bool Pause();
   void UnCreate(void);
   void Repeat();
    //Members
   bool bStop;
  LONGLONG stop, pCurrent, pStop;
  IGraphBuilder *GB;
  IMediaControl *MC;
  IMediaEventEx *ME;
  IBasicAudio   *BA;
  IMediaSeeking *MS;
};

DxAudio::DxAudio()
{
}

void DxAudio::Create()
{
   CoInitialize(NULL);
   bStop = false;
}

bool DxAudio::Play(int Type)
{
   MC->Run();

  return true;
}

void DxAudio::Repeat()
{
   MS->GetPositions(&pCurrent,&pStop);
   if(pCurrent >= pStop)
   {
      Stop();
      Play(BGMUSIC);
   }
}

bool DxAudio::Stop()
{
   bStop = true;
    MC->Stop();
    //streamposition setzen
    __int64 pos=0;//an den Anfang setzen
    MS->SetPositions(&pos,AM_SEEKING_AbsolutePositioning,NULL,NULL);
    //streamposition bekommen
    __int64 cur;//aktuelle position und endposition
    MS->GetPositions(&cur,&stop);

    return true;
}

bool DxAudio::Pause()
{
    MC->Pause();
   
    return true;
}

HRESULT DxAudio::LoadFile(char *name)
{
    HRESULT hres;
    //create graphbuilder
    hres=CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void **)&GB);
    if(hres!=S_OK)
        return hres;
    WCHAR wFile[MAX_PATH];
    MultiByteToWideChar(CP_ACP,0,name,-1,wFile,MAX_PATH);
    //call codec, which will render our audiofile
    hres=GB->RenderFile(wFile,NULL);
    if(hres!=S_OK)
        return hres;
    //create mediacontrol for play and stop
    hres=GB->QueryInterface(IID_IMediaControl,(void **)&MC);
    if(hres!=S_OK)
        return hres;
    //cretae mediaevent
    hres=GB->QueryInterface(IID_IMediaEventEx,(void **)&ME);
    if(hres!=S_OK)
        return hres;
    //create seekingobject for get & set streampointer
    hres=GB->QueryInterface(IID_IMediaSeeking,(void **)&MS);
    if(hres!=S_OK)
        return hres;
    //call audiointerface
    hres=GB->QueryInterface(IID_IBasicAudio,(void **)&BA);
   
    return hres;
}


void DxAudio::UnCreate()
{
   MS->Release();
  BA->Release();
  ME->Release();
  MC->Release();
  GB->Release();
  CoUninitialize();
}

DxAudio::~DxAudio()
{
}

#endif


Ich hoffe, dass dieses Code-Fragment Euch weiterhilft.

Gruss Tarek
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 23.03.2003, 00:04    Titel: Antworten mit Zitat

Nur mal eine Rand Frage: Warum nutzt hier kaum einer FMOD?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 23.03.2003, 11:10    Titel: Antworten mit Zitat

@DarK
vielleicht kannst du damit was anfangen:
Zitat:
DirectMusicSegmentState8 represents a playing instance of a segment. When the DirectMusicPerformance8.PlaySegmentEx method is called, it creates a DirectMusicSegmentState8 object that enables the application to retrieve information about that instance. The object can also be passed to methods of DirectMusicPerformance8 to determine whether a segment instance is still playing, or to stop it.

Deshalb hab ich in die PlaySegemntEx-Funktion auch noch SegemntState als Parameter übergeben.


@all
wenn ich schreib
Code:
if(FALSE==Performance->IsPlaying(Segment,SegmentState)) //Sound abspielen

wird der Sound die ganze Zeit etwa 10 mal sehr kurz hintereinander abgespielt. Wenn die Sounds dann abgespielt sind fängts wieder in Impulsen an.


wenn ich dagegen schreib
Code:
if(TRUE==Performance->IsPlaying(Segment,SegmentState)) //Sound abspielen

wird der Sound nicht mehr die ganze Zeit abgespielt.
Es ertönt zwar der Sound einzeln, wenn ich ihn normal abspiel, aber wenn der Sound verklungen ist, wird er immernoch 10 Mal kurz hintereinander abgespielt. Crying or Very sad
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 31.03.2003, 16:49    Titel: Antworten mit Zitat

Weiß denn niemand, woran das liegt?^^
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 05.04.2003, 16:05    Titel: Antworten mit Zitat

@Christian weißt du vielleicht woran das liegt...oder liegen könnte?
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 08.04.2003, 19:59    Titel: Antworten mit Zitat

Ich versuch mal, das Problem besser zu beschreiben.
X Anfang des Sounds
= Nix
O sound spielt
------------
____________________________________________
Zeit--->
XOOOO=========XOOOO=======
=====XOOOOXOOOO===XOOOO===
======XOOOOXOOOO==XOOOO===
=====XOOOOXOOOO====XOOOO==

In der ersten Zeile wir der Sound z.B. auf Knopfdruck abgespielt.
Die restlichen Zeilen laufen gleichzeitig ab.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 08.04.2003, 20:13    Titel: Antworten mit Zitat



Sorry.. kein Plan. ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 08.04.2003, 20:19    Titel: Antworten mit Zitat

Also, ich spiele einen Sound ab und prüfe ständig(siehe oben), ob er schon verklungen ist. Wenn das geschehen ist, wird er zwar wie in einer Soundschleife erneut, aber gleich mit "Hall-Effekt" also mehrere male sehr kurz hintereinander, abgespielt. Meine Frage war, wie man das verhindert.
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum