| Autor |
Beitrag |
ebs
      
Beiträge: 213
Suse Linux 9.2, Win 98, Win NT, Win XP, Win for Workgroups, Win XP SP2, Dos 6.1
D3 Prof, D2005 PE, Delphi 2006 Prof.
|
Verfasst: Fr 14.10.05 13:04
Hallo
ich habe ein spezielle Lichtsoftware: www.daslight.com
Nun kann man damit verschiedene Lichtscenen erstellen.
Nun soll man nach DASLIGHT das ganze per MIDI steuern können, um die Szenen aufzurufen. Nun habe ich mir in mühevoller kleinarbeit so eine Art Tastatur mit 250 Tasten gebaut. Das Teil dann mit meinem Rechner verbunden, und eine Software geschrieben, das signalisiert, wenn eine Taste gedrückt wird und die entsprechende Nummer ausgibt. Nun möchte ich halt aber auch, dass das ganze dann als MIDI Signal ausgegeben wird.Also ich möchte den Kanal und die Midi Note an die Software senden. Hat da einer eine Idee, was die Software haben will?
Danke für jede Hilfe 
|
|
FAlter
      
Beiträge: 192
Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
|
Verfasst: So 16.10.05 14:30
Hi,
auf www.borg.com/~jglatt/tech/midispec.htm sollte die der "Messages"-Bereich weiterhelfen.
Mfg
FAlter
|
|
Timi-loader
      
Beiträge: 58
Win XP
Delphi 7 Personal
|
Verfasst: So 19.08.07 19:42
schöne dokumentation.
aber wie sende ich nun diese befehle ab?
|
|
FAlter
      
Beiträge: 192
Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
|
Verfasst: So 19.08.07 19:59
Hi,
Da gibt es sone MIDI-Komponenten. Ich hänge mal die modifizierte Variante an, welche ich für mein MIDI-Klavier benutze.
Pack dir ein TMIDIOutput aufs Form. Dann kannst du einen MIDI-Befehl so senden:
Delphi-Quelltext 1:
| MIDIOutput1.PutShort(MessageByte, DataByte1, DataByte2); |
Beispiel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.Button1Click(Sender: TObject); begin MIDIOutput1.DeviceID := -1; MidiOutput1.Open; try MIDIOutput1.PutShort($90, 36, 127); sleep(500); MIDIOutput1.PutShort($80, 36, 127); sleep(100); finally MidiOutput1.Close; end; end; |
Hier wird das Standardgerät eingestellt (ansonsten 0..NumDevs-1) und dann die Note mit der Nummer 36 auf Kanal 0 in voller Anschlagsstärke (127=max) angespielt und nach 500 ms beendet.
Mfg
FAlter
Einloggen, um Attachments anzusehen!
|
|
Timi-loader
      
Beiträge: 58
Win XP
Delphi 7 Personal
|
Verfasst: So 19.08.07 23:34
danke für das fast rundum-sorglos-paket.
leider hab ich schon sone halben packages installiert gehabt. aber es waren veraltete. hab auch versucht die zu deinstallieren.. jedenfalls machen die beispiel dprs in deinem package auch probleme. das midiin hat irgendwie falsche id meint delphi und baut das dann nicht ein.
nja mir gings ja nur um die ausgabe. also da klappt dein beispielcode. nur eine kleine frage noch: wo stelle ich den kanal ein? denn irgendwie reagiert meine dj-software noch nicht auf den ton. (der sollte dann ja auch nicht hörbar sein)
mfg
|
|
FAlter
      
Beiträge: 192
Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
|
Verfasst: Mo 20.08.07 09:11
Hi,
meinst du den Kanal oder das Gerät?
Das Gerät stellst du über DeviceID vor dem Open ein. Der Kanal ist bei den meisten Geräten in den vier niedrigen Bits der Message gespeichert (also für Note On $9X, wobei X=0..F den Kanal darstellt).
Nach dem Setzen der DeviceID steht dir übrigens auch die Bezeichnung des Gerätes (ProductName) zur Verfügung. Da kannst du ablesen, ob du das richtige Gerät eingestellt hast.
Mfg
FAlter
|
|
Timi-loader
      
Beiträge: 58
Win XP
Delphi 7 Personal
|
Verfasst: Mo 20.08.07 14:55
aha ok danke.
töne höre ich aber irgendwie empfängt das DJ-Prog garnichts. :-/
|
|
FAlter
      
Beiträge: 192
Win XP Home
Turbo Delphi 2006 (Win32), C# (VS 2008 Prof.), Java (Eclipse), PHP
|
Verfasst: Mo 20.08.07 18:47
Hi,
vielleicht hilft dir das weiter:
| iGoA @ DP hat folgendes geschrieben: |
Du hast im Prinzip 2 Möglichkeiten:
1. Einen eigenen MIDI-treiber schreiben, der ein virtuelles MIDI-Gerät darstellt. Keine Ahnung wie das in Delphi geht.
2. Du benutzt MIDIYoke. Das ist ein virtuelles MIDI-Kabel, welches als Empfänger und Sender dienen kann. In Deiner DJ-Spftware würdest Du es als MIDI-Eingabe-Gerät auswählen und mit einem Delphi-Programm MIDI-Daten an dieses virtuelle Gerät senden. Müsstest mal nach MIDI-Yoke googlen und anschließend nach ner einfachn Möglichkeit, mit Delphi MIDI-Daten zu versenden.
|
Es hört sich nämlich so an, als ob dein Programm MIDI-Eingaben benötigt. Die kannst du mit MIDIYoke aus deinen MIDI-Ausgaben erstellen, sozusagen eine Schleife von Ausganz zu Eingang.
Mfg
FAlter
|
|
Timi-loader
      
Beiträge: 58
Win XP
Delphi 7 Personal
|
Verfasst: Di 21.08.07 17:31
yesss.. mit midiyoke klappts  und mein dj prog empfängts. juhu. 
|
|