Juniors WorkstationLidos BerlinComputer PassDies und Das
Nutzungsbedingungen    Datenschutz    Impressum       Kontakt        Registrieren       <== zurück zur Startseite    
 
  Lernen durch Lehren
 
  LDL - Wissenswertes
  LDL - Hardwaretests
  LDL - Softwaretests
  LDL - Tipps & Tricks
  LDL - Workshops
 


  Profan² Einsteiger FAQ 7.5
 
  Profan² Einsteiger FAQ 7.5
  Profan² an die Schulen
  Profan² Script - FAQ
  Profan² Erweiterungen
  Profan² Helferlein
  Profan² Quellcode
 


  HTML Einsteiger FAQ 4.07
 
  HTML Einsteiger FAQ 4.07
  HTML indirekte Fragen
  kleine JavaScript FAQ
 


250 MB mit PHP / MySQL
 
Sie suchen noch Webspace, der kosten- und werbefrei ist, PHP (5.x) und MySQL (3.x) unter- stützt ...

Sie haben Fragen und benötigen Antworten
 
Das verstehen wir - und genau aus diesem Grund haben wir versucht, auf Ihre (am häu- figsten) gestellten Fragen zu antworten.
 
Lern- und Lehrbereich: Juniors Workstation
 
   einen Beitrag auswählenzum Anfang eine Seite zurück  eine Seite vor zum Ende     
   Bereich Kennung Zuordnung Klick Titel 
11  Workstation FAQ Profan Profan-FAQ81239  Profan² - eine Programmiersprache Profan-FAQ - Profan² - eine Programmiersprache
12  Workstation FAQ Profan Profan-FAQ34096  Profan² - dieser Name steht für ein Programmiersystem Profan-FAQ - Profan² - dieser Name steht für ein Programmiersystem
13  Workstation FAQ Profan Profan-FAQ36090  Profan² - eine Scriptsprache Profan-FAQ - Profan² - eine Scriptsprache
14  Workstation FAQ Profan Profan-FAQ36105  Profan² - eine Datenbank-Sprache Profan-FAQ - Profan² - eine Datenbank-Sprache
15  Workstation FAQ Profan Profan-FAQ33689  Profan² - Versionen im Download Profan-FAQ - Profan² - Versionen im Download
16  Workstation FAQ Profan Profan-FAQ37005  Was sind Ereignisse? Profan-FAQ - Was sind Ereignisse?
17  Workstation FAQ Profan Profan-FAQ34743  Was ist eine Multimedia-Schnittstelle? Profan-FAQ - Was ist eine Multimedia-Schnittstelle?
18  Workstation FAQ Profan Profan-FAQ39779  Was ist und enthält eine Windows-Nachricht? Profan-FAQ - Was ist und enthält eine Windows-Nachricht?
19  Workstation FAQ Profan Profan-FAQ35358  Definitionen, Funktionen und Operatoren unter Profan² Profan-FAQ - Definitionen, Funktionen und Operatoren unter Profan²
33  Workstation FAQ Profan Profan-FAQ38112  Einiges über Variablen und Platzhalter ... Profan-FAQ - Einiges über Variablen und Platzhalter ...

135 registrierte Beiträge gefunden; davon werden aktuell 10 angezeigt. 

 
   Mit Profan² Track-Dateien (ua. MP3, S3M) abspiele

Da dies nicht die erste Anfrage in diese Richtung ist, möchte ich zunächst einmal ganz allgemein betonen: Unter Profan² ist bis auf ganz wenige Ausnahmen alles möglich!

Voraussetzung ist natürlich, ein schlauer Kopf programmiert dazu eine entsprechende Ressource in Pascal (Delphi) oder C++. Nehmen wir nur einmal das Beispiel JPG-Bilder unter Profan². Da hieß es ja auch lange Zeit: Das geht nicht.

Ob ZIP-Dateien zu packen/entpacken sind, ob ein Download/Upload zu realisieren ist ...
ob andere Soundformat-Dateien abzuspielen sind - kurz, auch wenn viele behaupten, es geht nicht, ich behaupte trotzdem, daß es geht (auch dann noch, wenn ich selber nicht in der Lage bin, eine solche Ressource zu programmieren).

Und so gibt es auch einen "Pfiffigen" (Eldermage Entertainment, Inc.), der eine DLL im Januar 1998 in C++ geschrieben hat, die nicht nur das Format "MOD" unterstützt, sondern zusätzlich eine Reihe von interessanten Funktionen enthält. Die "MODDLL.DLL" ist FreeWare und darf beliebig genutzt werden.

Leider haben die Programmierer der "MODDLL.DLL" keine nähere Beschreibung beigelegt. Aus diesem Grund möchte ich Sie auf einige Besonderheiten aufmerksam machen, damit Ihr neuer Player auch unter Profan² störungsfrei funktioniert.

  1. MODDLL.DLL ist kompakt
    Eine wesentliche Besonderheit dieser DLL besteht darin, daß sie nach dem Laden in den Speicher mit "UseDLL" zusätzlich mit der Funktion "InitPlayer" initialisiert werden muß. Die Ursache liegt u.a. darin begründet, daß es möglich ist, den Sound in verschiedenen Frequenzbereichen über die Soundkarte (entsprechend der Soundkarte und des MS Windows DirektX) abspielen zu lassen (der entsprechende Player wird "entpackt" und aktiviert).
    Nach dem Abspielen oder mit dem vorzeitigen Beenden des Sounds muß der initialisierte Player mit der Funktion "ClosePlayer" aus dem Speicher entfernt werden.
    (Achtung: Speicher muß wieder freigegeben werden, sonst droht ein Überlauf!)

     

      DEF InitPlayer(5) !"moddll.dll","InitPlayer"
      DEF ClosePlayer(0) !"moddll.dll","ClosePlayer"
      InitPlayer(0,44100,0,1,0)
      ClosePlayer()

    Die Funktion "InitPlayer" fordert 5 Parameter, wovon für Sie nur der zweite und der vierte von Interesse sind. Alle anderen Parameter sollten auf Null stehen:

       1. Parameter -> Verarbeitungsdichte (0 = 8-Bit oder 1 = 16-Bit)
       2. Parameter -> Abspiel-Frequenz (22050, 24000, 44100 oder 48000)
       3. Parameter -> Spezifikation für ATARI compatible
       4. Parameter -> 0 = Mono 1 = Stereo
       5. Parameter -> Spezifikation als Komponente für Delphi-Player

  2. Sound-Datei wird komplett in den Speicher geladen!

    Im Gegensatz zu dem bisher geläufigen Abspielen von Sound-Dateien muß hier vor dem Abspielen eines Sounds die Datei komplett über die Funktion "LoadMod" in den Speicher geladen werden. Nach dem Abspielen oder mit dem vorzeitigen Beenden des Sounds muß die Datei mit der Funktion "FreeMod" aus dem Speicher entfernt werden.
    (Achtung: Speicher muß wieder freigegeben werden, sonst droht ein Überlauf!)

      DEF LoadMod(1) !"moddll.dll","LoadMod"
      DEF FreeMod(1) !"moddll.dll","FreeMod"
      snd$=LoadFile$("Welchen Sound?", "*.MOD")
      IF neq$(snd$,"")
       STRING mod#,0=snd$
       mod& = @LoadMod(mod#)
       FreeMod(mod&)
      endif


  3. Der Player muß gestartet und angehalten werden!

    Ähnlich der Funktion "@MCISEND$" in Profan² muß auch hier der Sound gestartet und gestoppt werden. Dafür sind die Funktionen "PlayMod" und "StopMod" zuständig. Aber im Gegensatz zu "@MCISEND$" kann der Sound hier genau an der Stelle fortgesetzt werden, wo er zuvor gestoppt wurde.
    (Tip: Funktion "StopMod" immer mit aufrufen, egal ob Soundende erreicht oder nicht)

      DEF PlayMod(1) !"moddll.dll","PlayMod"
      DEF StopMod(0) !"moddll.dll","StopMod"
      mod& = @LoadMod(mod#)
      PlayMod(mod&)
      StopMod()

    Da der Player nicht selbständig am Ende einer Sounddatei abschaltet, muß geprüft werden, ob das "Dateiende" der aktuell wiedergegebenen Sounddatei erreicht ist. Zu diesem Zweck dient die Funktion "ModStatus". Ist das gelieferte Ergebnis "1", hat der Player das Ende der zu spielenden Datei erreicht, ist das Ergebnis "0" wird ordnungsgemäß abgespielt und ist das Ergebnis größer "1" trat ein Fehler auf.
    Daher könnte eine Prüfung folgendermaßen aussehen:

      DEF ModStatus(0) !"moddll.dll","ModStatus"
     
      WHILE EQU(ModStatus(), 0)
      WEND


  4. "Tracker"-Dateien sind anders als MID-Dateien aufgebaut!

    Wie der Name schon verrät, wird neben den bekannten Soundkanälen in MOD-Dateien (kompatible) nach sogenannten Tracks (Beats) gelesen. Aus diesem Grund benötigt man zwei Angaben, um die aktuelle Position innerhalb eines zu spielenden Sounds zu bestimmen.

    Zuerst bestimmen wir den Track (Beat) mit der Funktion "emp_sngpos" und danach die Position innerhalb des aktuellen Tracks mit der Funktion "emp_patpos".

      DEF Emp_SngPos(0) !"moddll.dll","emp_sngpos"
      DEF Emp_PatPos(0) !"moddll.dll","emp_patpos"
      print Emp_SngPos(),Emp_PatPos(0)


  5. MODDLL.DLL interpretiert mehrere Formate!

    Bei einem Aufruf einer Sounddatei brauchen Sie nicht das Format gesondert zu definieren. Das übernimmt die "MODDLL.DLL" für Sie. Das Problem hierbei besteht aber darin, daß die DLL keinen Wert für falsch oder nicht zu interpretierende Dateien liefert.

    Anders gesagt: Wird eine fehlerhafte oder nicht zu interpretierende Datei geladen, stürzt Ihnen das Programm ab.

    Hier haben nicht die Autoren der DLL geschlafen. Da diese DLL als Bestandteil einer Delphi-Komponente ("Mod X") konzipiert ist, wurde auf eine Fehlerbehandlung verzichtet. Die eigentliche Player-Komponente von Delphi verfügt selbstverständlich über eine entsprechende Fehlerbehandlung.

    Es sollte also in jedem Fall sichergestellt werden, daß es sich um eine kompatible Sounddatei handelt. Eine relative Sicherheit erreichen Sie z.B. über den profaneigenen "LoadFile$"-Dialog:

      snd$="MOD StarTracker|*.MOD|
            S3M ScreamTracker|*.S3M|
            STM ScreamTracker|*.STM|
            ULT UltraTracker|*.ULT|
            XM FastTracker|*.xm"
      snd$=LoadFile$("Welchen Sound?", snd$)

    Die "MODDLL.DLL" interpretiert die "32 channels of Digital music and sound effects" sowie die Dateiformate (kompatible) ProTracker, StarTracker, MultiTracker, FastTracker, ScreamTracker (2 & 3), UltraTracker, Oktalyzer und Amiga MOD. Desweiteren unterstützt die MODDLL.DLL das WAV-Soundformat (PCM-Format).

    Absichtlich habe ich hier keine näheren Angaben dazu gemacht, da es unter Profan² den wesentlich effektiveren Befehl "PLAYSOUND" (natürlich auch "MCISEND$") gibt.
    Wer es trotzdem mit der "MODDLL.DLL" versuchen möchte, schickt mir eine E-Mail. Er erhält von mir die erweiterte "MODDLL.DLL" einschließlich der *.vbw, *.vbp und das *.frm für C++ bzw. Visual C++ 5 im Original zum persönlichen Gebrauch.

    (Die kommerzielle Nutzung der erweiterten "MODDLL.DLL" von "Eldermage Entertainment" ist verboten.)

 

Wie ein MOD-Player programmiert wird, demonstriert das folgende Beispiel:

  DEF InitPlayer(5) !"moddll.dll","InitPlayer"
  DEF ClosePlayer(0) !"moddll.dll","ClosePlayer"
  DEF LoadMod(1) !"moddll.dll","LoadMod"
  DEF FreeMod(1) !"moddll.dll","FreeMod"
  DEF PlayMod(1) !"moddll.dll","PlayMod"
  DEF StopMod(0) !"moddll.dll","StopMod"
  DEF ModStatus(0) !"moddll.dll","ModStatus"
  DECLARE dll%,mod#,mod&,ende%,snd$
  DIM mod#, 50
  snd$="MOD/S3M/STM/MTM/ULT/XM Sound unter Profan²"
  WindowTitle snd$
  dll%=UseDLL("MODDLL.DLL")
  cls
  snd$="MOD StartTracker|*.MOD|
        S3M ScreamTracker|*.S3M|
        STM ScreamTracker|*.STM|
        ULT UltraTracker|*.ULT|
        XM FastTracker|*.xm"
  snd$=LoadFile$("Welche Sound-Datei abspielen?", snd$)
  IF neq$(snd$,"")
   STRING mod#,0=snd$
   InitPlayer(0,44100,0,0,0)
   mod& = @LoadMod(mod#)
   PlayMod(mod&)
   PRINT "Drücke ESC zum beenden!"
   ende% = 0
   WHILENOT ende%
    CASE SCANKEY(27): ende%=1
    CASE NEQ(ModStatus(), 0): ende%=1
   WEND
   StopMod()
  ENDIF
  FreeMod(mod&)
  ClosePlayer()
  DISPOSE mod#
  FREEDLL dll%
©2012 Lidos Berlin - alle Rechte vorbehalten.