dashirrsch: Sinneserweiterung im Web

Hallo!

Ich bin gerade dabei, einerseits an ein paar Webseiten herumzubasteln und andererseits Musikstücke zu komponieren. Jetzt habe ich mir überlegt, die beiden Felder zu kombinieren. Dazu hatte ich folgende Idee:

Um die Webseiten dynamischer erscheinen zu lassen, möchte ich sie mit Hintergrundmusik ausstatten. Diese Hintergrundmusik ist aber nicht fest, sondern passt sich den Aktionen des Benutzers an. Wenn zum Beispiel ein Link angeklickt wird, ergänzt ein neues Instrument die vorherige Hintergrundmusik, auf der neuen Seite wird dann eine neue Hintergrundmusik eingespielt. Die Änderung der Hintergrundmusik wollte ich mit Javascript realisieren, aber wenn es eine bessere Möglichkeit gibt, nehme ich auch die gerne an.

Soweit zur Grundidee, jetzt zum Stand meiner Umsetzung:
Die Seite habe ich mit einer php-Datei realisiert, bei der sich mit der Änderung der Variablen "$id" auch der Inhalt ändert, sprich bei "$id==1" werden News gezeigt und bei "$id==2" das Impressum usw. Die php-Datei heißt "site.php". Die Hintergrundmusik wird dabei mit dem <embed>-Tag und dem <bgsound>-Tag eingespielt, ist 5 Sekunden lang und läuft in einer Schleife.

Jetzt zu meinen Problemen:

  1. Ein Link öffnet die Datei "site.php?id=i" neu mit verändertem Parameter "i", dadurch wird die Hintergrundmusik auch neu geladen und somit unterbrochen, was ich auf jeden Fall verhindern möchte. Dazu fällt mir nur die Lösung ein, die Musik in einem seperaten Frame laufen zu lassen, aber geht es nicht auch eleganter?

  2. Der Sound beim Öffnen eines Links soll an einer ganz bestimmten Stelle des 5 sekündigen Liedes kommen und nicht gleich nach Aktivierung des Links. Meine Idee dabei war es, Javascript zu verwenden, um die aktuelle Uhrzeit am Anfang des Liedes als Zahl an eine Variable zu übergeben und diese dann bei jedem neuen Liedanfang zu erneuern. Dann wüsste ich immer, an welcher Stelle im Lied ich mich gerade befinde und kann den Zeitpunkt des Einspielens zeitlich abstimmen. Leider habe ich keine genügenden Kenntnisse in Javascript, um das ohne Hilfe bewältigen zu können.

  3. Sicher das kleinste Problem: Beim Aufrufen einer neuen Seite oder beim Öffnen eines Links soll ein neuer Sound eingespielt werden, sprich eine neue Mididatei geöffnet werden. Das könnte ich auch mit php realisieren, aber geht das nicht auch mit Javascript?

Soweit zu meinen Problemen, ich hoffe ihr könnt mir helfen. Ich möchte nur ein wenig Unterstützung und keinen fertigen Sourcecode, wo bliebe denn dann auch der Spaß? ;-) Ich habe schon über Google nach Lösungen gesucht aber noch kein derartiges Projekt gefunden. Ich bin sehr gespannt, wie sich das Projekt weiterentwickelt und freue mich über jeden Beitrag! Wenn noch etwas unklar ist, erläutere ich es gern.

mfG Philipp

  1. Lieber Philipp,

    ich bin mir nicht sicher, ob Deine Idee rein mit HTML/Javascript/MIDI umsetzbar ist. Dazu folgendes:

    Du bindest eine MIDI-Datei über ein veraltetes Attribut "bgsound" ein, welches den Browser nach einem im System angemeldeten Mediaplayer für MIDI-Dateien suchen lässt, um diesen die Datei abspielen zu lassen. Wenn dieser Player einmal spielt, kümmert sich der Browser in keiner Weise mehr um diese Angelegenheit, da der Browser selbst ja kein Audio-Player ist. Daher gibt es in Javascript auch keine "Steuerelemente" für das Abspielen von Musik- oder anderen Multimediadateien.

    Wie komplex das Einbinden von Musik in eine Webseite auf sinnvolle Art werden kann, hat Marc Reichelt ergründet und eine Lösung mit der Macromedia Flash Technologie entwickelt: EMFF. Aber auch hier beschränkt er sich auf das Abspielen von mp3-Dateien. Frage doch einmal Marc selbst, wie er sich eine Umsetzung Deiner Idee technisch überhaupt vorstellen könnte!

    Meiner Meinung nach bräuchtest Du ein Musik-System, wie es in aktuellen Spielen zum Einsatz kommt. Aber eine solche Software innerhalb einer Seite ablaufen zu lassen... das könnte - selbst wenn es komplett in Flash geschrieben und per ActionScript gesteuert - sehr große Ladezeiten in Anspruch nehmen (der Browser muss die komplette Musik vorhalten!) und zudem kaum in einem Vernünftigen Aufwand<->Nutzen-Verhältnis stehen!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Hallo Felix!

      Vielen Dank für deine Antwort. Ich hatte selber schon befürchtet, dass die Idee vielleicht zu komplex sein könnte, um umgesetzt werden zu können. Da ich mit Flash leider keinerlei Erfahrung habe, werde ich noch eine Weile versuchen, sie mit Javascript umzusetzen. Nebenher verstehe ich schon jetzt Javascript viel besser als vorher, was auch nicht schlecht ist. ;-)

      Nochmals Danke für dein Interesse!

      lG Philipp

    2. Hallo Felix,

      Daher gibt es in Javascript auch keine "Steuerelemente" für das Abspielen von Musik- oder anderen Multimediadateien.

      In Javascript nicht, aber es gibt proprietäre Steuerelemente der Player, übrigens auch des BGSOUND-Elements, die auf Javascript ansprechen.

      Mit Flash ließe sich das Bolero-Vorhaben von Philipp noch am ehesten realisieren. Da könnte er zu bestimmten Zeiten, die dem Takt der Musik _und_gleichzeitig_ einem ganzzahligen Vielfachen der Framerate in Flash entsprechen, neue Sounds(Instrumente) starten lassen.

      Gruß Gernot

  2. Ich habe mich heute weiter mit dem Problem auseinandergesetzt und bin auf folgenden Lösungsweg gekommen:

    Von meinem Hauptframe "main" aus, in dem site.php eingebunden ist, übermittle ich die Variable

    sound = i;

    mit

    if (parent.frame['sound']) parent.frame['sound'].lied = sound;

    als die Variable "lied" an den Frame "sound", in dem die Mididateien abgespielt werden.
    In diesem Frame greifen der <embed>- und der <bgsound>-Tag auf die Variable "lied" zurück. Der Frame lädt sich mit Hilfe von

    setTimeout("location.reload()", 5000)

    alle 5 Sekunden neu.

    Das ist meine Idee, ich habe sie noch nicht erprobt, werde es aber gleich tun. Ist ein solches Script umzusetzen? Oder habe ich da einen Denkfehler drin?

    mfG Philipp

    1. Hallo,

      In diesem Frame greifen der <embed>- und der <bgsound>-Tag auf die Variable "lied" zurück. Der Frame lädt sich mit Hilfe von

      setTimeout("location.reload()", 5000)

      alle 5 Sekunden neu.

      Bei einem Neuladen werden auch alle Variablen gelöscht. Das Dokument im Frame könnte sich die Daten höchstens alle 5 Sekunden eigenständig holen, und zwar z.B. vom window-Objekt des Frameset-Dokuments, also top.variable.

      Aber ehrlich gesagt solltest du dir mit HTML/JavaScript nicht viele Chancen ausrechnen, was du da bauen willst, ist mir heutigen HTML- und JavaScript-Fähigkeiten nicht wie gewünscht umsetzbar.

      Mathias

      --
      »No nations, no borders.«
      SELFHTML Weblog
  3. Hi there,

    Ich bin gerade dabei, einerseits an ein paar Webseiten herumzubasteln und andererseits Musikstücke zu komponieren. Jetzt habe ich mir überlegt, die beiden Felder zu kombinieren.

    Bei Codebrain gibts ein Javaapplet, das mit javascript zu steuern ist. Das verarbeitet leider nur .au Dateien (also keine Midifiles oder Komprimierters wie .mp3 oder .ogg), aber vielleicht ist es für Dich trotzdem zu gebrauchen...