Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Probleme mit FMod (https://www.delphipraxis.net/2350-probleme-mit-fmod.html)

mimi 6. Feb 2003 19:14

ich glaube ich weiß wo das problem liegt:
so eine änliche fehldermeldung habe ich auch erhalten du musst einfach in die FMod.pas gehen und dort:
(oben)
{$Define MSWindows}
wobei ich garnicht mehr weiß ob das MSWindwos war(muss halt mal nach schauen;)

ich habe jetzt auch noch ein kleines problem:
kann mir jemmand ein einfaches beispiel schreiben ?
wie spiele ich eine datei mit den FMod lib ab ?
das ist mein problem.........
mein versuch:
Code:
  FSOUND_Stream_OpenFile(PChar(FileListe.Strings[ListBox1.ItemIndex]), FSOUND_NORMAL or FSOUND_LOOP_NORMAL, 0);
  FMUSIC_LoadSong(PChar(FileListe.Strings[ListBox1.ItemIndex]))
geht aber leider nicht;)

janjan 6. Feb 2003 19:30

ich habs so gemacht:

Delphi-Quellcode:

// OPEN STREAM
  Stream := FSOUND_Stream_OpenFile(PChar(Datei), FSOUND_LOOP_NORMAL or FSOUND_NORMAL, 0);
  if stream = nil then
    begin
      Showmessage('Error! Opening file - ' + FMOD_ErrorString(FSOUND_GetError()));
      FSOUND_Close();
      Exit;
    end;

// PLAY STREAM
  channel := FSOUND_Stream_Play(FSOUND_FREE, stream);
  if channel < 0 then
    begin
      showmessage('Error! Play - ' + FMOD_ErrorString(FSOUND_GetError()));
      FSOUND_Close();
      exit;
    end;

mimi 6. Feb 2003 21:24

Danke! werde ich testen;)

MFG
Michael Springwald

mimi 6. Feb 2003 21:28

also bei:
Code:
var
  test:PFMusicModule;
  Datei:String;
  Stream: PFSoundStream;
  Channel: Integer;

begin
  Datei:='E:\test.it';

// OPEN STREAM
  Stream := FSOUND_Stream_OpenFile(PChar(Datei), FSOUND_LOOP_NORMAL or FSOUND_NORMAL, 0);
  if stream = nil then
    begin
      Showmessage('Error! Opening file - ' + FMOD_ErrorString(FSOUND_GetError()));
      FSOUND_Close();
      Exit;
    end;

// PLAY STREAM
  channel := FSOUND_Stream_Play(FSOUND_FREE, stream);
  if channel < 0 then
    begin
      showmessage('Error! Play - ' + FMOD_ErrorString(FSOUND_GetError()));
      FSOUND_Close();
      exit;
    end;
so sieht nur nun der code aus
aber es kommt eine Fehlermeldung vom Programm.
Fehlermeldung:
Code:
Error! Opening file - This command failed because FSound_Init was not called
was einer was los ist ?

MFG
Michael Springwald

mimi 6. Feb 2003 21:33

Ich habe es jetzt hinbekommen aber:
Wie spiele ich .it Dateien ab ?
in der Demo geht das alles aber warum nicht in meinem progrmam ?

MFG
Michael Springwald

mimi 6. Feb 2003 21:50

so ich habe jetzt alle Problme gelöst erstmal.
Mein code:
Code:
var
  test:PFMusicModule;
  Datei:String;
  Stream: PFSoundStream;
  Channel: Integer;
  Module: PFMusicModule;

begin
  Datei:=FileListe.Strings[ListBox1.ItemIndex];
  if not FSOUND_Init(22050, 128, 0) then
  begin
    Application.MessageBox(FMOD_ErrorString(FSOUND_GetError), 'FSOUND_Init', MB_OK or MB_ICONHAND);
    Halt;
  end;

// OPEN STREAM
  Stream := FSOUND_Stream_OpenFile(PChar(Datei), FSOUND_LOOP_NORMAL or FSOUND_NORMAL, 0);

  if Stream = Nil then
    Module:=FMUSIC_LoadSong(PChar(Datei) );
   
  if Module = nil then begin
    Showmessage('Error! Opening file - ' + FMOD_ErrorString(FSOUND_GetError()));
    FSOUND_Close();
    Exit;
  end;

// PLAY STREAM
  if Stream <> nil then begin
    channel := FSOUND_Stream_Play(FSOUND_FREE, stream);
    if channel < 0 then begin
      showmessage('Error! Play - ' + FMOD_ErrorString(FSOUND_GetError()));
      FSOUND_Close();
      exit;
    end;
  end
  else
    if Module <> NIL then
      FMUSIC_PlaySong(Module);


//  FSOUND_SetPan(Channel, FSOUND_STEREOPAN);
//  FSOUND_SetVolume(Channel, 255);
was kann man andres bzw. besser machen ?
nun habe ich noch ein paar fragen:
Was für Datentypen werden in meiner version unterstützt ?
(ich weiß das it,s3m,xm,mod,wav,mp3,wav,midi einbandfrei funktionieren)

und darf ich ein programm wo ich die "FMod lib" nutze veröffentlichen ?
also als Freeware oder was muss ich da beachten ?
(weil ich kann nicht so gut ENGLISCH)

Wie kann ich wenn ich eine datei anhöhre pause machen bzw stoppen.

so mehr Fragen habe ich erstmal nicht.

Danke schonmal im vorraus für die antworten.

MFG
Michael springwald

illegal eagle 7. Feb 2003 10:25

Code:
if not FSOUND_Init(22050, 128, 0) then
Warum nicht 44100 und 32 ?
Und du musst sicher noch FSOUND_Close am Ende aufrufen?


Zitat:

und darf ich ein programm wo ich die "FMod lib" nutze veröffentlichen ?
also als Freeware oder was muss ich da beachten ?
Zitat:

if your product is not intended to make any money, and is not charged for in any way, then you may use FMOD in it for FREE!
Wenn du mit deinem Programm kein Geld verdienst und dafür keine Gebühr verlangst, dann ist es kostenlos.
Ansonsten siehe http://www.fmod.org/ifmodlicense.html


Zitat:

Wie kann ich wenn ich eine datei anhöhre pause machen bzw stoppen.
Falls es mit FMUSIC abgespielt wird, dann FMUSIC_SetPause(True/False), sonst FSOUND_SetPaused(channel number / handle, True/False). Zum Stoppen FMUSIC_StopSong(song) oder FSOUND_StopSound(channel) nehmen.

mimi 7. Feb 2003 14:02

Code:
Warum nicht 44100 und 32 ? 
Und du musst sicher noch FSOUND_Close am Ende aufrufen?
das habe ich aus der Demo;)
FSound_Close rufe ich glaube ich nicht auf.
gut!Dann habe ich erstmal keine Frage mehr;)

MFG
Michael Springwald

mimi 7. Feb 2003 19:42

noch eine Frage:
Wie bekomme ich die MaxiMale zeit eines MusikFiles raus ?

MFG
Michael Springwald

bj-Wishmaster 20. Jun 2004 23:25

Re: Probleme mit FMod
 
Code:
function TFmodEngine.Get_Time : integer;                      // Get Time
begin
if Stream <> nil then
   result:= FSOUND_Stream_GetTime(Stream);

  if (PlayerState = ENGINE_STOP) or
     (PlayerState = ENGINE_SONG_END) then
      Result := 0
end;


function TFmodEngine.Get_SongLen : Integer;                    //Get SongLen
var MilliSec : integer;
begin
  if Stream <> nil then
   begin
    MilliSec := FSOUND_Stream_GetLengthMs(stream);
    result:= MilliSec;
   end;

 if (PlayerState = ENGINE_STOP) or
    (PlayerState = ENGINE_SONG_END) then
     Result := 0
end;


Code:

function SecondToTime(const m_secondes : String) : string;
var
  minutes        : Integer;
  secondes       : Integer;
  m_secondsToTime : String;

begin
  minutes := StrToInt(m_secondes) div 60;
  secondes := StrToInt(m_secondes) - minutes * 60;
  m_secondsToTime := Format('%.2d:%.2d', [minutes, secondes]);
  result := m_secondsToTime;
end;


Total_Time.Caption:= FormatDateTime ('hh:nn:ss',(Get_Time div 1000)/ (24 * 60 * 60));
Cur_time.Caption:= FormatDateTime ('hh:nn:ss',(Get_SongLen / 1000)/ (24 * 60 * 60));
label1.Caption:= SecondToTime(inttostr(Get_SongLen div 1000));


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz