Computertastatur zur Erzeugung von Midisignalen.
-
- Beiträge: 188
- Registriert: Fr 18. Jan 2013, 09:29
- OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
- CPU-Target: Celeron
Computertastatur zur Erzeugung von Midisignalen.
Hallo zusammen.
Ich habe mir ein chromatisches Knopfakkordeon zugelegt.
Jetzt stellte ich fest, dass die Tasten des Computerkeyboards weitgehend die gleiche Anordnug wie auf dem Akkordeon haben.
Nun würde ich gerne diese Tastatur zur Ansteuerung eines Midi-Keyboards verwenden.
Dazu hätte ich ein paar Fragen
1. Kann man die Tastenwiederholungsfunktion softwaremäßig ausschalten?
2. Kann man mehrere Tasten gleichzeitig drücken?
3. Gibt es eine OS Message, die mitteilt, dass eine bestimmte Taste losgelassen wurde?
Was brauche ich, um Midi-Schnittstellen anzusprechen (die Treiber sind bereits intalliert. )
Gruß Fritz
Ich habe mir ein chromatisches Knopfakkordeon zugelegt.
Jetzt stellte ich fest, dass die Tasten des Computerkeyboards weitgehend die gleiche Anordnug wie auf dem Akkordeon haben.
Nun würde ich gerne diese Tastatur zur Ansteuerung eines Midi-Keyboards verwenden.
Dazu hätte ich ein paar Fragen
1. Kann man die Tastenwiederholungsfunktion softwaremäßig ausschalten?
2. Kann man mehrere Tasten gleichzeitig drücken?
3. Gibt es eine OS Message, die mitteilt, dass eine bestimmte Taste losgelassen wurde?
Was brauche ich, um Midi-Schnittstellen anzusprechen (die Treiber sind bereits intalliert. )
Gruß Fritz
-
- Beiträge: 6907
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Computertastatur zur Erzeugung von Midisignalen.
Vieleicht hilft dir das Beispiel im Anhang weiter.1. Kann man die Tastenwiederholungsfunktion softwaremäßig ausschalten?
Ist von der Hardware abhängig. ZB. eine gute Gamingtastatur.2. Kann man mehrere Tasten gleichzeitig drücken?
OnKeyUp im Form.3. Gibt es eine OS Message, die mitteilt, dass eine bestimmte Taste losgelassen wurde?
- Dateianhänge
-
Pacman_Steuerung.tar.gz
- (126.87 KiB) 174-mal heruntergeladen
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Computertastatur zur Erzeugung von Midisignalen.
Hallo!
Avra aus dem internationalen Forum hat mal was für Windows gebaut.
Laut Deiner Signatur ist das ja ausreichend.
https://bitbucket.org/avra/ct4laz/downl ... n_midi.zip
Winni
Avra aus dem internationalen Forum hat mal was für Windows gebaut.
Laut Deiner Signatur ist das ja ausreichend.
https://bitbucket.org/avra/ct4laz/downl ... n_midi.zip
Winni
-
- Beiträge: 188
- Registriert: Fr 18. Jan 2013, 09:29
- OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
- CPU-Target: Celeron
Re: Computertastatur zur Erzeugung von Midisignalen.
Danke erst mal,
mal schauen wie ich damit zurecht komme.
mal schauen wie ich damit zurecht komme.
-
- Beiträge: 758
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Computertastatur zur Erzeugung von Midisignalen.
Hallo Fritz,
du kannst die Tastenkontrolle komplett selbst übernehmen
Die Wiederholfunktion wird einfach über ein FLAG geblockt.
Bei KeyDown wird ein Flag gesetzt, bei KeyUp dann wieder gelöscht.
Die Repeatfunktion ist dann per Software ausgefiltert.
Wenn das Flag schon gesetzt ist, reagieren wir einfach nicht mehr auf KeyDown solange bis die Taste wieder losgelassen wurde.
Du benötigst die Unit Windows für die Tastencodes.
Zudem musst Du im Formular bei Eigenschaften KeyPreview auf TRUE setzen, damit das Formulat die Tastencodes abfängt.
Du kannst mehrere Tasten gleichzeitig drücken das funktioniert.
Ich habe zum Testen einfach 3 Checkboxen aufs Formular gesetzt.
Dazu ein Testcode:
Siro
du kannst die Tastenkontrolle komplett selbst übernehmen
Die Wiederholfunktion wird einfach über ein FLAG geblockt.
Bei KeyDown wird ein Flag gesetzt, bei KeyUp dann wieder gelöscht.
Die Repeatfunktion ist dann per Software ausgefiltert.
Wenn das Flag schon gesetzt ist, reagieren wir einfach nicht mehr auf KeyDown solange bis die Taste wieder losgelassen wurde.
Du benötigst die Unit Windows für die Tastencodes.
Zudem musst Du im Formular bei Eigenschaften KeyPreview auf TRUE setzen, damit das Formulat die Tastencodes abfängt.
Du kannst mehrere Tasten gleichzeitig drücken das funktioniert.
Ich habe zum Testen einfach 3 Checkboxen aufs Formular gesetzt.
Dazu ein Testcode:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
Windows; // wird für die Keycodes benötigt
type
{ TForm1 }
TForm1 = class(TForm)
Box_A: TCheckBox;
Box_B: TCheckBox;
Box_C: TCheckBox;
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
var A_pressed,B_pressed,C_pressed: Boolean;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
if Key = VK_A then begin // wenn die Taste "A" gedrückt wurde
if NOT A_Pressed then begin // prüfen ob sie schon gedrückt war (Wiederholfunktion ignorieren)
A_Pressed:=TRUE; // Taste gedrückt Flag setzen
Box_A.Checked:=TRUE; // Ton erzeugen oder was auch immer
end;
end;
if Key = VK_B then begin
if NOT B_pressed then begin // wenn Taste noch nicht gedrückt war
B_pressed:=TRUE; // Flag setzen, nun ist sie gedrückt
Box_B.Checked:=TRUE;
end;
end;
if Key = VK_C then begin
if NOT C_pressed then begin
C_pressed:=TRUE;
Box_C.Checked:=TRUE;
end;
end;
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = VK_A then begin // wenn Taste A losgelassen wurde, dann
A_pressed:=FALSE; // Taste gedrückt Flag löschen
Box_A.Checked:=FALSE; // Ton abschalten
end;
if Key = VK_B then begin
B_pressed:=FALSE;
Box_B.Checked:=FALSE;
end;
if Key = VK_C then begin
C_Pressed:=FALSE;
Box_C.Checked:=FALSE;
end;
end;
end.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 6907
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Computertastatur zur Erzeugung von Midisignalen.
Auf die Unit Windows kann verzichtet werden, guck doch mal mein Pacmandemo oben an.
Da wird für die meisten Tasten ein Flag gesetzt.
Da wird für die meisten Tasten ein Flag gesetzt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 758
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Computertastatur zur Erzeugung von Midisignalen.
sorry Mathias, ich kann mir das unter Windows nicht ansehen. Keine Ahnung was .tar.gz ist, Windows kennt es nicht 

Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 6907
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Computertastatur zur Erzeugung von Midisignalen.
Dann ist es höchste Zeit, das du 7zip installierst.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 758
- Registriert: Di 23. Aug 2016, 14:25
- OS, Lazarus, FPC: Windows 11
- CPU-Target: 64Bit
- Wohnort: Berlin
Re: Computertastatur zur Erzeugung von Midisignalen.
Ohne jetzt unnötig noch was zu installieren
habe ich es jetzt selbst rausgefunden.
Nicht Windows sondern "LCLType" wird benötigt.....
In dieser Unit unter der Rubrik "Virtual keys" findet man die benötigten KeyCodes VK_xxx
Siro

habe ich es jetzt selbst rausgefunden.
Nicht Windows sondern "LCLType" wird benötigt.....
In dieser Unit unter der Rubrik "Virtual keys" findet man die benötigten KeyCodes VK_xxx
Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...
-
- Beiträge: 188
- Registriert: Fr 18. Jan 2013, 09:29
- OS, Lazarus, FPC: Windows 10, Windows XP, Lazarus 1.6
- CPU-Target: Celeron
Re: Computertastatur zur Erzeugung von Midisignalen.
Danke, das mit der Tastatur klappt jetzt wunderbar.
Aber mit dem Midimodul habe ich noch Probleme.
Hat da schon jemand damit gearbeitet?
Weiß jemand einen Code wo man spionieren kann.
Ich brauche ja nicht viele Funktionen, ich will ja keinen Sequenzer schreiben.
Im wesentlichen brauch ich 3 Funktionen.
1. Ich habe mehrere Midischnttstellen auf dem Rechner. Da müßte ich eine dem Programm zuordnen.
2. Ich brauche den Note on Befehl und den Note Off Befehl. Eventuell noch all_notes_off.
Das wars dann auch schon.
Wäre halt super wenn es irgendwo ein Demoprogramm gäbe.
Gruß Fritz.
Aber mit dem Midimodul habe ich noch Probleme.
Hat da schon jemand damit gearbeitet?
Weiß jemand einen Code wo man spionieren kann.
Ich brauche ja nicht viele Funktionen, ich will ja keinen Sequenzer schreiben.
Im wesentlichen brauch ich 3 Funktionen.
1. Ich habe mehrere Midischnttstellen auf dem Rechner. Da müßte ich eine dem Programm zuordnen.
2. Ich brauche den Note on Befehl und den Note Off Befehl. Eventuell noch all_notes_off.
Das wars dann auch schon.
Wäre halt super wenn es irgendwo ein Demoprogramm gäbe.
Gruß Fritz.