H4ndy - Sa 29.05.10 05:08
Titel: MIDI I/O Komponenten v7
Hallo Delphi-Forum/Entwickler-Ecke,
Ich hab mein erstes OS-Projekt zum Anlass genommen, mich auch mal hier zu tummeln, statt immer nur in der Delphi-Praxis ;)
Deshalb findet man dieses Cross-Posting auch dort (
http://www.delphipraxis.net/topic178030_midi+io+komponenten+v7.html).
Da es hier vllt. nich so gelaufig ist: Die Komponenten (TMidiInput, TMidiOutput) stellen eine Verbindung zu beliebigen MIDI-Geraeten her (ueber das MMSYSTEM) und unterstuetzen neben den normalen (kurzen) Kommandos auch SysEx-Nachrichten. Damit kann man Soft- und Hardware-Synthesizer ansteuern.
---
Hallo DP,
Lange vorbereitet, endlich da: Eine neue Version der alten MIDI-Komponenten, welche hier schon eine Weile in der DP rumgeistern.
Hauptsaechlich benutzt von FAlter fuer sein
MIDI-Klavier [
http://www.delphipraxis.net/internal_redirect.php?t=57681] und sein MIDI-Tutorial (
Teil 1 [
http://www.delphipraxis.net/internal_redirect.php?t=133897],
Teil 2 [
http://www.delphipraxis.net/internal_redirect.php?t=133905]).
Version 6 wurde seiner Zeit von
FAlter [
http://www.delphipraxis.net/internal_redirect.php?u=7745] und
turboPASCAL [
http://www.delphipraxis.net/internal_redirect.php?u=13047] erstellt (und damit fuer Delphi 6 fit gemacht). Vielen Dank dafuer!
Da die urspruengliche Version Public Domain war, habe ich mir erlaubt, die Lizensierung zu aendern (zumal PD in Deutschland theoretisch nicht moeglich ist).
Version 7 steht unter der
MPL 1.1+ [
http://www.mozilla.org/MPL/MPL-1.1.html] mit optionaler alternativer Nutzung der
GPL 3+ [
http://www.gnu.org/licenses/gpl.html] oder der
LGPL 3+ [
http://www.gnu.org/licenses/lgpl.html] (aehnlich dem Firefox-Browser).
Die MPL erlaubt euch die freie Nutzung der Komponenten, ohne den Quellcode eures gesamten Programms veroeffentlichen zu muessen (im Gegensatz zur GPL/LGPL).
Details bitte dem Lizenz-Header entnehmen. Wer es total frei will, nutzt sie fuer sich unter der GPL :mrgreen:
Aenderungen zur v6.1:
- Dateien gruendlich aufgeraeumt (Beispiele von den Komponenten getrennt, teilweise umbenannt)
- Neues Package (erstellt mit D2010, noch nicht weiter getestet)
- Kleine Debug-App hinzugefuegt, welche MIDI-Ereignisse durchschleift und dabei anzeigt (kann auch als Mini-Demo genutzt werden ^^)
- Fehlerbehebungen (z.B. SysEx funktioniert jetzt (wieder?))
- Viele Bequemlichkeitsfunktionen, wie NoteOn, NoteOff, ChangeInstrument (mit komplett Set-Tabelle!), etc. (wie von shmia [http://www.delphipraxis.net/internal_redirect.php?u=5675] vorgeschlagen)
- Angefangen TMidiInput und TMidiOutput von einer Basisklasse abzuleiten (fuer abstrakteren Zugriff)
- Bisher nicht implementierte Funktionen eingebaut (z.B. Patch-caching), teilweise als experimentell gehintet, da nicht getestet
- Nutzt v3.0c der Basis-Komponenten von David Churcher
Die Komponenten entwickle ich im Moment waehrend meines US-Aufenthalts, daher kann ich nur unter Turbo Delphi 2006 sowie Delphi 2010 Pro auf WinXP testen.
Geplant ist volle Unterstuetzung fuer Windows XP bis 7 und D6 und neuer, kann dass aber erst spaeter verifizieren (ausser jemand hilft mir :stupid:).
Die alten Beispiele (unter \Examples\) werde ich demnaechst noch ueberarbeiten.
Download
Die aktuellesten Aenderungen gibt es immer aus meinem
Mercurial-Repository bei BitBucket [
http://bitbucket.org/h4ndy/midiio-dev].
Dort bekommt Ihr auch nen RSS-Feed, Changelog, Issue-Tracker, etc. Neuerer Zwischenversionen bitte direkt ausm Repo
unter "Source" und dann rechts oben "get source" -> zip herunterladen, da ich hier nicht jedes Commit posten werde.
Aktuelle Revision:
v7.0r3
http://bitbucket.org/h4ndy/midiio-dev/downloads/midiio-dev-7.0r3.zip
Changeset:
Quelltext
1: 2: 3: 4: 5:
| Merged newer base component version 3.0c (used 3.0 for modifications) - prevent Windows shutdown fixed - possible SysEx data appending fixed - found on http://go.to/davesmidi # http://davesmidi.dchurcher.com/ - Updated README accordingly |
Vorschlaege, Hinweise, Bugs bitte hier melden oder direkt im
Issue-Tracker [
http://bitbucket.org/h4ndy/midiio-dev/issues?status=new&status=open] einen neuen Eintrag anlegen.
Hoffe, dass die Dinger noch anderen Leuten Freude bereiten :)