Prg-change-Befehle senden aus einer HTML-Umgebung

  • Ersteller Selbender Sing
  • Erstellt am
Selbender Sing
Selbender Sing
Registrierter Benutzer
Zuletzt hier
02.04.22
Registriert
27.09.07
Beiträge
655
Kekse
1.695
Hallo, ich möchte mit einem kleinen Touchpad PC Programmchanges an meine miditemp senden. Um eine Oberfläche für das touchpad gestalten zu können, dachte ich an HTML-Programmierung. Jetzt ist aber die Frage, wie ich in HTML Prg-Change-Befehle losschicken kann.
Geht das nur als mididatei (die ich vorher aufzeichnen müsste) oder gibt es auch eine Möglichkeit, direkt eine Art Text zu senden?
Es gibt ja kleine Programme, die sowas können (zur Sysex-Programmierung z.B.)

Hat da jemand eine Idee?
 
Eigenschaft
 
HTML hat ja nun leider wenig bis garnichts mit programmieren zu tun, sondern ist eine Beschreibungssprache für Webseiten. Midi-Daten kannst du damit nicht senden, dazu würdest du eine Programmier- oder Skriptsprache benötigen. Außerdem brauchst du natürlich Zugriff auf die Midi-Ports deines Computers.

Eine Alternative wäre, einfach einen Dateimanager zu öffnen und daraus dann präparierte Midi-Files über eine herkömmliche Player-Software abzuspielen.
 
Wenn Du HTML verwenden möchtest bleibt Dir in der Tat nichts anderes übrig als auf eine echte Programmiersprache zurück zu greifen und das Programm dann in HTML einzubinden. Ich denke da an ASPX-Seiten, hinter denen ein C#.NET- oder VB.NET-Applet steckt. Der Vorteil an DotNet-Sprachen ist, dass man sehr einfach DirectX-Bibliotheken einbinden kann, die den Zugriff auf Multimediatreiber - so auch MIDI-Ports - ermöglichen. Das ist keine ganz triviale Angelegenheit und deutlich aufwändiger als Distance' Vorschlag mit der MIDI-Datei, die nur die Programchanges und evtl. weitere Controllerdaten enthält.
 
Es macht aber doch überhaupt keinen Sinn, all diese Dinger (egal ob Applet, Plugin oder serverseitige Scriptsprache) innerhalb einer HTML-Seite zu nutzen. Da kann man doch gleich eine kleine Java-Anwendung o.ä. schreiben, die die Oberfläche selbst mitbringt.
Hätte auch den Vorteil, dass man nicht für hunderte von Euro eine Entwicklungs- und ggf. sogar Laufzeitumgebung kaufen muss... ;)
 
Wow, schonmal vielen Dank für die vielen Antworten.
Vielleicht habe ich mich falsch ausgedrückt: ich habe mal eine eigene homepage mit einem wysiwyg HTML Programm erstellt. Das geht relativ einfach, auch für Programmierleien wie mich. Und es ist doch möglich, bestimmte Verknüpfungen zu erstellen, sodaß beim Anklicken eines Buttons z.B. eine mp3 Datei gestartet wird.
Wenn man jetzt ein stattdessen ein kleines Programm starten würde, was einen sysex, ein midi dump oder eben direkt einen prg Change Befehl sendet (das sollte natürlich alles sehr flott gehen), dann wäre ich schon äußerst zufrieden.
Für mich ist entscheidend, daß ich eine Grafik programmieren kann, die bequem auf so einem kleinen touchpad zu bedienen ist (so a la Navi) - und das alles, ohne eine mir völlig fremde Programmiersprache erlernen zu müssen.

Oder gibt es für Java auch wysiwyg - Programme?
 
Aus Sicherheitsgründen ist es nicht möglich aus HTML ein Programm zu starten. Sonst gäbe es im Netz tausende schwachsinniger Websites mit bösartigen Funktionen (die z. B. ein schnödes aber wirkungsvolles "Format C:" ausführen). Aber Du kannst aus einer HTML-Seite problemlos MIDI-Dateien abspielen lassen, wobei wir wieder bei Distance' Vorschlag wären.

Für Java gibt es keine WYSIWYG-Programme da Java, im Gegensatz zu HTML, eine Programmiersprache ist. Wahrscheinlich gibt es für die verschiedenen GUI-Modelle von Java (z. B. die Swing-Bibliothek) Entwicklungsumgebungen, die das "Zusammenklicken" von Benutzeroberflächen ermöglichen, so wie es bei den Visual-Sprachen von Microsoft realisiert wurde. Aber hinter einer Oberfläche steckt noch keinerlei Funktionalität, die muss man von Hand programmieren.

Es macht aber doch überhaupt keinen Sinn, all diese Dinger (egal ob Applet, Plugin oder serverseitige Scriptsprache) innerhalb einer HTML-Seite zu nutzen. Da kann man doch gleich eine kleine Java-Anwendung o.ä. schreiben, die die Oberfläche selbst mitbringt.
Hätte auch den Vorteil, dass man nicht für hunderte von Euro eine Entwicklungs- und ggf. sogar Laufzeitumgebung kaufen muss... ;)
Wenn man aber nicht programmieren kann aber eine grafische Oberfläche braucht, ist HTML IMO die sinnvollste Lösung.
Java ist übrigens Open Source und kostenlos, und freie IDEs gibt es auch zur Genüge.
 
Zuletzt bearbeitet:
Wenn man aber nicht programmieren kann aber eine grafische Oberfläche braucht, ist HTML IMO die sinnvollste Lösung.
Naja, man muss dann aber schon eine Menge Seiten programmieren... Will man beispielsweise auf dem Display 6 Presets anzeigen (3x2), muss man schon 6 Seiten programmieren, die jeweils bis auf die enthaltene Midi-Datei identisch sind. Vermutlich will man aber viel viel mehr, d.h. man müsste Umschalter haben (mit "vor"- und "zurück"-Buttons, oder wie auch immer), die müssen entsprechend verlinkt werden. Dafür braucht man dann auch gleich wieder Seiten, die nur Presets zeigen, aber keine Midi-Daten senden.
Es sind also für das Ansteuern von n Presets bei m Presets pro Bild n + n/m HTML-Seiten zu schreiben.
Außerdem sollte man zumindest prüfen, ob der Browser schnell genug für sowas ist.

Java ist übrigens Open Source und kostenlos, und freie IDEs gibt es auch zur Genüge.
Eben - im Gegensatz zu den ganzen Microsoft-Klamotten, die man z.B. für deine ASP-Vorschläge brauchen würde. Deshalb sagte ich das ja ;)
 
Eben - im Gegensatz zu den ganzen Microsoft-Klamotten, die man z.B. für deine ASP-Vorschläge brauchen würde. Deshalb sagte ich das ja ;)
Nö, auch das .NET-SDK ist kostenlos, die DirectX-Libraries ebenso und freie IDEs gibt es auch.
 
Velen Dank für die Antworten,
ein bißchen haben wir aber wohl aneinander vorbeigeredet: Meine Frage lautet eigentlich nur: gibt es eine Möglichkeit (analog zum Starten von mp3 Dateien) aus einer HTML Umgebung heraus auch andere Dateien zu starten?

Beim Starten von mp3s ist es ja so, daß man die HTML Seite mit der Datei verlinkt und durch die entsprechende Verknüpfung mit einem Programm (Media-Player oder andere) wird die Datei automatisch gestartet.

Da man Mididateien auch mit dem Media-Player abspielen kann und es wahrscheinlich auch möglich ist, den Mediaplayer auf Midiausgänge zu legen, könnte man Prg-Changes natürlich auch über den Mediaplayer (oder ein vergleichbares Programm, was vielleicht besser mit midi-Dateien umgehen kann) nach draußen schicken.

Ich weiß aber nicht, ob man beliebige Dateien aus einer HTML-Umgebung heraus starten kann oder ob mp3 da eine Ausnahme darstellt. (Die Einwand, daß man verhindern möchte, daß jeder wildgewordene Teenager einem aus einer website haraus die Festplatte löscht, ist natürlich nicht von der Hand zu weisen)

Natürlich werde ich mein Programm nicht ins Internet stellen, das bleibt schön daheim auf dem Rechner. Daher dürfte es mit der Geschwindigkeit auch keine Problem geben.

Ach, Entschuldigung, war wohl gestern abend etwas müde.

Habs jetzt entdeckt, daß es ohne Probleme möglich ist, aus einer website Mididateien zu starten.
Dann ist meine Frage ja beantwortet, vielen Dank.

Also, ich bin jetzt schon etwas weitergekommen.
Ich werde eine lokale website basteln und hier mit hyperlinks entweder (wie bereits festgestellt) mididateien verlinken, was aber sehr aufwändig ist, oder (besser) versuchen sysex-Dateien zu verlinken. Über die kann man doch auch Prg-Changes senden.
Ich habe irgendwo mal eine kleines Programm gehabt, mit dem man sysex Dateien anlegen und aus dem Midiport rausschicken konnte (leider vergessen, wie es hieß). Hat jemand eine Idee, was es in er Richtung geben könnte?
Am Allernettesten wäre natürlcih eine kleines Hilfsprogramm, mit dem man auf dieselbe Art Programmchanges erstellen und senden kann.

Ich erstelle also zunächst lauter Dateien (midi oder sysex oder prg changes), lege alle in einen Ordner, Verknüpfe dies Dateien mit einem geeigneten Programm, und verhyperlinke nun die Datein mit meiner lokalen website.
Klicke ich nun auf einen button, wird die Datei aufgerufen (?) und automatisch in dem mit ihr verknüpften Programm gestartet.

Ist das soweit korrekt?
 
Zuletzt bearbeitet von einem Moderator:
Nö, auch das .NET-SDK ist kostenlos, die DirectX-Libraries ebenso und freie IDEs gibt es auch.
Und der Server, auf dem das dann läuft?

Habs jetzt entdeckt, daß es ohne Probleme möglich ist, aus einer website Mididateien zu starten.
Das ist so nicht richtig. Alles was du mit deiner Seite machen kannst ist, auf eine Midi-Datei zu linken. Was der Browser dann damit macht hängt ganz von der Konfiguration ab.
Bei mir würde z.B. beim Klick auf eine MP3-Datei genauso wenig mein Player gestartet wie bei einer Midi-Datei - stattdessen würde ich einen Download-Dialog bekommen. Du musst also vor allem deinen Browser konfigurieren, weniger die Seite

Ich werde eine lokale website basteln und hier mit hyperlinks entweder (wie bereits festgestellt) mididateien verlinken, was aber sehr aufwändig ist, oder (besser) versuchen sysex-Dateien zu verlinken. Über die kann man doch auch Prg-Changes senden.
Program-Changes sind Midi-Standard, während SysEx-Daten ja eben gerade nicht standardisiert sind. Mag sein, dass du mit deinem SysEx-Programm auch Program-Changes senden kannst oder dein Gerät auch per SysEx umgeschaltet werden kann, aber normalerweise sollte Midi dafür völlig ausreichen. Wo dabei der Aufwand größer ist (gegenüber SysEx) ist mir auch noch nicht ganz klar...

Ich erstelle also zunächst lauter Dateien (midi oder sysex oder prg changes), lege alle in einen Ordner, Verknüpfe dies Dateien mit einem geeigneten Programm, und verhyperlinke nun die Datein mit meiner lokalen website.
Klicke ich nun auf einen button, wird die Datei aufgerufen (?) und automatisch in dem mit ihr verknüpften Programm gestartet.

Ist das soweit korrekt?
Ja, wenn dein Browser so konfiguriert ist, wie gesagt.
Allerdings musst du eben beachten, dass du nicht nur HTML-Seiten mit Links auf die reinen Midi-Files brauchst, sondern auch wieder aufwendige Verlinkungen der HTML-Seiten untereinander. Und du musst dafür sorgen, dass dein Browser zwar die Midi-Datei öffnet, aber dabei nicht die aktuelle Seite verlässt. Er darf aber auch kein neues Fenster/Tab öffnen...


Achja: Und lass bitte die Doppelposts. Wenn du was ergänzen willst, gibts die "Bearbeiten"-Funktion dafür.
 
Äh, wieso löschst du einfach meinen anderen thread, distance.
Da gings doch darum mit welchem Programm man Prg-Change Befehle senden kann, hier geht es doch eher um die Frage nach der HTML-Umgebung. Das hat natürlich etwas miteinander zu tun, sind aber trotzdem 2 verschiedene Fragestellungen. Und vor allem 2 verschiedene Überschriften.
Jmd, der mit HTML nichts am Hut hat, wird hier doch gar nicht reinschauen, deswegen habe ich einen neuen thread aufgemacht, für alle, die sich mit Midi-Programmen auskennen. Das wird ja wohl in Ordnung gehen.
Außerdem, wer entscheidet denn sowas überhaupt..............
 
Zuletzt bearbeitet:
Und der Server, auf dem das dann läuft?
Sobald das .NET-SDK installiert und Windows neu gestartet wurde ist Dein Localhost der Server. Ist aber auch schnuppe, da eine aufwändige Programmierung für Selbender Sing nicht in Frage kommt.


Das ist so nicht richtig. Alles was du mit deiner Seite machen kannst ist, auf eine Midi-Datei zu linken. Was der Browser dann damit macht hängt ganz von der Konfiguration ab.
Bei mir würde z.B. beim Klick auf eine MP3-Datei genauso wenig mein Player gestartet wie bei einer Midi-Datei - stattdessen würde ich einen Download-Dialog bekommen. Du musst also vor allem deinen Browser konfigurieren, weniger die Seite
Korrekt. Wenn man dem Browser nicht sagt, was er mit einer Datei anstellen soll, also mit welchem Programm sie geöffnet werden soll, wird automatisch ein Download versucht.


Program-Changes sind Midi-Standard, während SysEx-Daten ja eben gerade nicht standardisiert sind. Mag sein, dass du mit deinem SysEx-Programm auch Program-Changes senden kannst oder dein Gerät auch per SysEx umgeschaltet werden kann, aber normalerweise sollte Midi dafür völlig ausreichen. Wo dabei der Aufwand größer ist (gegenüber SysEx) ist mir auch noch nicht ganz klar...
Auch das ist korrekt. Es gibt sicherlich Geräte, bei denen man Program-Changes auch mittels SysEx durchführen kann, das ist jedoch alles andere als Standard. Zudem sollte man SysEx vermeiden wenn nicht unbedingt notwendig, damit nicht versehentlich Daten überschrieben werden.


Ja, wenn dein Browser so konfiguriert ist, wie gesagt.
Allerdings musst du eben beachten, dass du nicht nur HTML-Seiten mit Links auf die reinen Midi-Files brauchst, sondern auch wieder aufwendige Verlinkungen der HTML-Seiten untereinander. Und du musst dafür sorgen, dass dein Browser zwar die Midi-Datei öffnet, aber dabei nicht die aktuelle Seite verlässt. Er darf aber auch kein neues Fenster/Tab öffnen...
Ja, für die Benutzbarkeit wäre das sicher die optimalste Lösung. Zu diesem Zweck gibt es die Möglichkeit einen vereinfachten Windows-Media-Player in Webseiten einzubinden. Wenn ich mich recht erinnere wird das über ein Plugin gelöst.

Ich überlege gerade, ob ich das nicht selbst mal ausprobieren soll, nur so just for fun.

Edit:

So, ich habe das jetzt mal in einer Online-Version gemacht. Dazu braucht man nichtmal den Browser zu konfigurieren.
Code:
<html>
SONG1<OBJECT ID="MediaPlayer"  classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
width="150" height="53" standby="Loading Microsoft Windows Media Player components..."
type="application/x-oleobject">
<PARAM NAME="FileName" VALUE="SONG1.MID">
<PARAM NAME="TransparentAtStart" Value="true">
<PARAM NAME="AutoStart" Value="false">
<PARAM NAME="AnimationatStart" Value="false">
<PARAM NAME="ShowStatusBar" Value="true">
<PARAM NAME="ShowControls" Value="true">
<PARAM NAME="autoSize" Value="false">
<PARAM NAME="displaySize" Value="false">
<PARAM NAME="ShowAudioControls" Value="true">
<PARAM NAME="ShowPositionControls" Value="false">
<Embed type="application/x-mplayer2"
pluginspage=" http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/"
src="SONG1.MID" Name="MediaPlayer"
width="150" height="53" transparentAtStart="1" autostart="0"
animationAtStart="0" ShowControls="true" ShowAudioControls="1"
ShowPositionControls="0" autoSize="0" ShowStatusBar="1" displaySize="false">
</embed></OBJECT>
&nbsp;
SONG2<OBJECT ID="MediaPlayer"  classid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"
CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715"
width="150" height="53" standby="Loading Microsoft Windows Media Player components..."
type="application/x-oleobject">
<PARAM NAME="FileName" VALUE="SONG1.MID">
<PARAM NAME="TransparentAtStart" Value="true">
<PARAM NAME="AutoStart" Value="false">
<PARAM NAME="AnimationatStart" Value="false">
<PARAM NAME="ShowStatusBar" Value="true">
<PARAM NAME="ShowControls" Value="true">
<PARAM NAME="autoSize" Value="false">
<PARAM NAME="displaySize" Value="false">
<PARAM NAME="ShowAudioControls" Value="true">
<PARAM NAME="ShowPositionControls" Value="false">
<Embed type="application/x-mplayer2"
pluginspage=" http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/"
src="SONG1.MID" Name="MediaPlayer"
width="150" height="53" transparentAtStart="1" autostart="0"
animationAtStart="0" ShowControls="true" ShowAudioControls="1"
ShowPositionControls="0" autoSize="0" ShowStatusBar="1" displaySize="false">
</embed></OBJECT>
</html>

Die Passagen SONG1.MID und SONG2.MID müssen jeweils dreimal durch den Dateinamen des MIDI-Files ersetzt werden (auf Groß-Klein-Schreibung achten). Der Code kann beliebig oft kopiert werden. Ich werde versuchen, etwas ähnliches auch offline hinzubekommen. Hmm, man kann noch keine Bilder einbinden, sonst hätte ich noch einen Screenshot gepostet.
 
Zuletzt bearbeitet:
Hey, coole Wurst, werde ich morgen gleich mal ausprobieren.

Ähm, wie kann ich es am einfachsten starten? In welchem Programm, meine ich? Ich habe sowas wie gesagt, bisher nur in einem wysiwyg Programm gemacht.

Und wie kriegt man es hin, daß der Mediaplayer die Midi-Ausgänge anspricht (ich habe so einen Adapter (Midisport oder sowas))

Ah, Programm habe ich schon gefunden, sieht vielversprechend aus, dein Entwurf, habe nur auf diesem Rechner keine Mididateien zur Hand, das kläre ich morgen.

Kann man das denn auch so machen, daß man den kleinen Player gar nicht mehr sieht? Ich bräuchte ja keine Start stop Funktion oder Lautstärkeanpassung und so, sondern nur einen Button, auf dem steht, welchen Programmchange ich da sende (bzw., wie der Sound heißt, den ich dann (hoffentlich) hören werde)
 
Zuletzt bearbeitet:
Hey, coole Wurst, werde ich morgen gleich mal ausprobieren.

Ähm, wie kann ich es am einfachsten starten? In welchem Programm, meine ich? Ich habe sowas wie gesagt, bisher nur in einem wysiwyg Programm gemacht.
Du kopierst den Text einfach in den Editor von Windows und speicherst dann unter "cooleWurst.html". Die MIDI-Dateien sollten idealerweise im gleichen Verzeichnis liegen. Wenn Du die Datei dann öffnest wird sie von Deinem Standardbrowser geladen. Ich habe das bisher nur mit dem Internet Explorer getestet. Firefox werde ich heute Abend testen.

Und wie kriegt man es hin, daß der Mediaplayer die Midi-Ausgänge anspricht (ich habe so einen Adapter (Midisport oder sowas))
Systemsteuerung, Sounds und Audiogeräte, Registerkarte Audio, dort in der Mitte Dein MIDI-Interface auswählen.

Kann man das denn auch so machen, daß man den kleinen Player gar nicht mehr sieht? Ich bräuchte ja keine Start stop Funktion oder Lautstärkeanpassung und so, sondern nur einen Button, auf dem steht, welchen Programmchange ich da sende (bzw., wie der Sound heißt, den ich dann (hoffentlich) hören werde)
Ob das geht, habe ich noch nicht herausfinden können. Ich werde erstmal versuchen etwas hinzubekommen, dass den Player nur einmal integriert. Dann stelle ich mir vor, über Buttons oder Links die jeweilige Datei mit dem Player zu verlinken und dann über Autostart abzuspielen.
 
Zuletzt bearbeitet:
Du kopierst den Text einfach in den Editor von Windows und speicherst dann unter "cooleWurst.html". Die MIDI-Dateien sollten idealerweise im gleichen Verzeichnis liegen. Wenn Du die Datei dann öffnest wird sie von Deinem Standardbrowser geladen. Ich habe das bisher nur mit dem Internet Explorer getestet. Firefox werde ich heute Abend testen.

Herrlich, wie das flutscht. IE kein Problem, Firefox will wohl keinen Player von der Konkurrenz


Ob das geht, habe ich noch nicht herausfinden können. Ich werde erstmal versuchen etwas hinzubekommen, dass den Player nur einmal integriert. Dann stelle ich mir vor, über Buttons oder Links die jeweilige Datei mit dem Player zu verlinken und dann über Autostart abzuspielen.

Im einfachsten Falle könnte man die Player ja auch außerhalb des sichtbaren Bildschirms deponieren. Würde für meine Zwecke reichen.
Es ist wahrscheinlich ziemlich geil, daß man mehrere Player am Start hat, da dann die Übertragung schneller gehen dürfte. Muss man alles mal der Reihe nach checken, wenn es Formen annimmt.

Aber hier ist noch eine andere Frage. Kann man Midifiles als Script darstellen? Dann könnte man nämlich in Windeseile den jeweiligen Prg-Change Befehl oder den Midikanal modifizieren, unter anderem Namen abspeichern, und fettich. Das würde eine erhebliche Menge Zeit sparen.
 
Ist es denn überhaupt ok für Dich, dass es sich um eine Online-Variante handelt? Auf der Bühne wirst Du sie nicht benutzen können, es sei denn Du hättest dort Internet.
 
Wahrscheinlich ist mir der genaue Unterschied überhaupt nicht klar. Das was du programmiert hattest funktioniert doch auch ohne Internet. Was wäre der Unterschied zu einer nicht online Version (ist das dann eine lokale?)
 
Hmm, bei mir hat es bisher nur online (mit aktiver Internetverbindung) funktioniert. Aber wenn es bei Dir auch offline funktioniert, um so besser. Dann mache ich bei diesem Ansatz weiter. Ich hoffe, dass ich heute Abend mal wieder dazu komme.
 
Das ist toll,
ich kann im Moment leider gar nichts beisteuern, weil mein Hauptrechner, mit dem ich Musik mache, komplett im arsch ist. Motherboard ist wohl hin.
 

Ähnliche Themen


Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben