![]() |
MIDI Klavier
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
ich habe auf meiner Festplatte noch eine uralte MIDI-Komponente gefunden und wollte sie ausprobieren. Bis jetzt ist dabei das herausgekommen, was hier anhängt. (Die Komponente hängt mit an.) Man spielt über die Tastatur. Die Töne werden über das gewählte MIDI-Gerät ausgegeben. Die Standard-Tastenbelegung: untere Reihe beginnt bei <, obere bei q, schwarze schräg darüber. Wer eine nicht-deutsche Tastatur hat, muss die Belegung anpassen. Die Einstellungen werden in einer INI gespeichert*, die Registry bleibt also sauber (außer dem Unistaller-Eintrag, um es über Systemsteuerung/Software deinstallieren zu können.) Auch hier zu finden: PC-Welt: ![]() MSN (über PC-Welt): ![]() AOL (über PC-Welt): ![]() Freeware.de (über Upload.de): ![]() Updates.de (Über Upload.de): ![]() Shareware.de (Über Uploads.de): ![]() Infos in meinem Blog: ![]() Mfg FAlter Neueste Version: V 1.0 - Final Eventuell erneut runterladen von ![]() Es wurden noch zwei weitere kleine Testtools beigelegt. *) unter <user>\Anwendungsdaten\FAlterSoft\MIDI-Klavier |
Re: MIDI Klavier
Hey, nicht schlecht. (nur mal die Exe angeschaut)
Aber die Initialisierung der Tasten wird erst nach einem Neustart aktiv. (ne' Programminterne Vorbelegung währe auch noch gut) Interesant wird es noch mit einer Aufnahme.- und Wiedergabefunktion (Tastendrucklänge, Pausenlänge messen und ab in ein File oder so) |
Re: MIDI Klavier
lol...ich glaub ich schmeiß mein echtes Keyboard weg ;)
Vorschläge: Midi-Files aufnehmen und wiedergeben Tasten nicht erst nach neustart ändern Vorbelegung Auf die Tasten (Bilder9 klicken können. |
Re: MIDI Klavier
Zitat:
Zitat:
Zitat:
Zitat:
Und jetzt lade ich ein Update hoch, die neue Version kann Instrumentenwahl. //Edit: Fertig. Bei der neuen Version solltet ihr keine zu kleine Bildschirmauflösung eingestellt haben, um die 128 Instrumente auf den Bildschirm zu bekommen (nicht 640x480). Aber heutzutage ist ja sowieso größeres Standard. |
Re: MIDI Klavier
Ich finds klasse: :thumb:
Könntest du evtl. noch eine kure Erklärung zu der Komponente geben oder den Quelltext kommentieren? Ich finde diese Art der Soundausgabe für weitere Projekte sehr Interessant. Dann muss man keine Sounddateien mitliefern... |
Re: MIDI Klavier
Irgendwie macht die Source bei mir Probleme, da steht dauernd system.pas nicht gefunden. Aber die Koponente selbst funzt und auch deine exe geht bei mir... naja, liegt vielleicht daran das die kompo mit Delphi7 nicht so gut zusammenarbeitet oder so.
|
Re: MIDI Klavier
Zitat:
Kann aber sein, dass die Kompo nicht gut mit D7 arbeitet. Mit D6 hab ichs noch probiert, das geht... Aber laut Readme ist sie für Delphi 3 (das ich hier auch genommen habe). Zitat:
Sie mal in mein FormCreate:
Delphi-Quellcode:
MidiOut ist hier die Komponente (TMidiOutput).
Dev := Ini.ReadInteger('Device', 'ID', 0);
if MidiOut.Numdevs = 0 then begin Application.MessageBox(PChar(NoDevices), PChar(ErrorTitle), MB_OK or MB_ICONSTOP); Application.Terminate; exit; end else begin for I := MidiOut.Numdevs - 1 downto 0 do begin MidiOut.DeviceID := I; MenuItem := TMenuItem.Create(self); with MenuItem do begin Caption := MidiOut.ProductName; RadioItem := true; Tag := I; OnClick := ChangeDevice; if Dev = I then Checked := true; end; Gert1.Add(MenuItem); end; end; MidiOut.DeviceID := Dev; MidiOut.Open; Erst wird aus der INI das zuletzt verwendete Gerät gelesen. Dann wird geprüft, ob kein Gerät vorhanden ist, dann wird das Programm beendet (mit einer Fehlermeldung ;) ) Ansonsten wird in einer Schleife auf das Gerät gewechselt. So kann dessen Name erhalten werden, es wird hier ein entsprechender Menüeintrag generiert. Allgemein wäre die kürzeste Form der Initialisierung: Im Objektinspektor 0 als DeviceID einstellen und dann nur MidiOut.Open (beim Programm beenden oder vorm Gerätewechsel MidiOut.Close nicht vergessen). Dann hast du aber immer das gleiche Gerät. Um jetzt Töne auszugeben:
Delphi-Quellcode:
Datenbytes gehen im Bereich von 0 bis 127 (oberstes Bit immer gelöscht).
MidiOut.PutShort(Message, DataByte1, DataByte2);
Da gibt es einmal die Channel-Messages (n steht für die Channelnummer, es gibt 16 Channels von 0 bit 15, in Hex 0 bos F): Hex - Funktion: §8n - Note Off (Datenbyte 1 ist Note, Datenbyte 2 brauchst du hier nicht (Lautstärke)) $9n - Note On (Datenbyte 1 ist Note, Datenbyte 2 ist Lautstärke, wieder von 0 bis 127) $Cn - Program Change (Instrumentenwechsel, Sie Instrumente stehen in meinem Instrumentenmenü, die Nummer habe ich beim entsprechenden TMenuItem als Tag hinterlegt, Datenbyte 2 wird ignoriert (Bei der MIDI-Schnittstelle wird es, glaube ich, gar nicht übertragenm, wenn du ein externes Gerät ausgewählt hast)) Es gibt noch weitere, aber diese hier habe ich selbst schon verwendet. Über die anderen muss ich mich noch informieren, ebenso wie über globale Messages (nicht Channelbezogen). Die Noten gehen von 0 bis 127 in Halbtonschritten. 60 ist dabei c'. Channel 10 (A) ist eine3 Besonderheit: Hier kannst du kein Instrument einstellen, dafür hast du hier das Schlagzeug. Die zugeordneten Instrumente sind: Zitat:
|
Re: MIDI Klavier
Zitat:
Nur: Ich kann unter Delphi die Komponenten einbinden, und compilieren. Ich kann unter meinem Windows auch die exe ausführen. Wenn ich aber die souce in D7 lade erhalte ich system.pas nicht gfeunden, übrigens ohne eine angabe einer Zeile. Ein sehr seltsamer Fehler den ich so noch nicht hatte. In jedem anderen projekt wird die system.pas problemlos gefunden, eben sogar wenn ich die Midi-Kompon reinpack... echt merkwprdig. Wäre gut wenn mal jemand unter WinXP / D7 die Source testet... |
Re: MIDI Klavier
Wie gesagt, bei mir war das irgendwann plötzlich da, keine Ahnung warum...* Und einzige Abhilfe war es, das in den Bibliothekspfad einzutragen oder in den Suchpfad. Das Problem trat bei ALLEN Projekten auf...
Trag einfach mal dein Lib-Verzerichnis in den Suchpfad ein und sieh nach, was dann passiert. Wenn es dann geht, ist es doch OK... ________ *) Ich glaube, ich hatte da gerade das Update 2 fpr D3 installiert :gruebel: |
Re: MIDI Klavier
Hi...
Jetzt habe ich wieder 'ne neue Version hochgeladen. Änderungen: 1. Eine Zeile Code hinzugefügt und somit Bug gefixt, der das zuletzt verwendete Gerät nicht korrekt wiederhergestellt hat. 2. Standardtastenbelegung implementiert. 3. Mausklicks auf Tasten implementiert. TODO sind immernoch: 1. Drumspur einstellen, speichern, laden... 2. Aufnahme und Wiedergabe, Speichern, laden... Mfg FAlter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz