Delphi-PRAXiS
Seite 1 von 8  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   MIDI Klavier (https://www.delphipraxis.net/48669-midi-klavier.html)

FAlter 28. Jun 2005 19:53


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: http://www.pcwelt.de/downloads/multi.../midi_klavier/
MSN (über PC-Welt): http://tech.de.msn.com/downloads/aud...mentid=9286718
AOL (über PC-Welt): http://computer.aol.de/Downloads-MP3...1605181-0.html
Freeware.de (über Upload.de): http://www.freeware.de/download/midi-klavier_35675.html
Updates.de (Über Upload.de): http://www.updates.de/software/Progr...ier_35675.html
Shareware.de (Über Uploads.de): http://midi-klavier.shareware.de/

Infos in meinem Blog:
http://falters-blog.blogspot.com/search/label/MIDI

Mfg
FAlter

Neueste Version: V 1.0 - Final
Eventuell erneut runterladen von http://faltersoft.de/soft/?software=klavier oder Anhang.
Es wurden noch zwei weitere kleine Testtools beigelegt.

*) unter <user>\Anwendungsdaten\FAlterSoft\MIDI-Klavier

turboPASCAL 28. Jun 2005 20:34

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)

Neuni 28. Jun 2005 21:29

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.

FAlter 28. Jun 2005 22:38

Re: MIDI Klavier
 
Zitat:

Zitat von turboPASCAL
Aber die Initialisierung der Tasten wird erst nach einem Neustart aktiv.

Ja, das war ein Bug, ich habe die Initialisierung an der falschen Stelle gemacht, jetzt sollte es funktionieren.

Zitat:

(ne' Programminterne Vorbelegung währe auch noch gut)
Ähm, kann ich machen, evtl. beim nächsten Update...

Zitat:

Interesant wird es noch mit einer Aufnahme.- und Wiedergabefunktion (Tastendrucklänge, Pausenlänge messen und ab in ein File oder so)
notiert, MID und eigenes Format ;-)

Zitat:

Zitat von neuni
Auf die Tasten (Bilder9 klicken können.

Werde ich eventuell auch mal machen, aber auf der Tastatur spielt es sich eigentlich doch besser :mrgreen:

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.

Nicolai1234 28. Jun 2005 22:57

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...

tilman 28. Jun 2005 23:04

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.

FAlter 29. Jun 2005 11:17

Re: MIDI Klavier
 
Zitat:

Zitat von tilman
system.pas nicht gefunden

Diese Unit gehört zu Delphi dazu. Das Problem hast du, wenn aus irgendeinem Grund das Unterverzeichnis Lib des Delphi-Verzeichnisses nicht mehr in den Bibliotheksverzeichnissen und im Suchpfad steht, hatte ich auch schon mal.

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:

Zitat von Nicolai1605
Könntest du evtl. noch eine kure Erklärung zu der Komponente geben oder den Quelltext kommentieren?

Eigentlich spricht die Komponente für sich - zumindest, soweit ich sie schon genutzt habe.

Sie mal in mein FormCreate:

Delphi-Quellcode:
  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;
MidiOut ist hier die Komponente (TMidiOutput).

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:
MidiOut.PutShort(Message, DataByte1, DataByte2);
Datenbytes gehen im Bereich von 0 bis 127 (oberstes Bit immer gelöscht).

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:

Zitat von MIDI-Liste über Drums
MIDI-Drums
Ton Tastennummer Schlaginstrument
B1 35 Acoustic Bass Drum
C2 36 Bass Drum 1
C#2 37 Side Kick
D2 38 Acoustic Snare
D#2 39 Hand Clap
E2 40 Electric Snare
F2 41 Low Floor Tom
F#2 42 Closed High-Hat
G2 43 High Floor Tom
G#2 44 Pedal High Hat
A2 45 Low Tom
A#2 46 Open High Hat
B2 47 Low-Mid Tom
C3 48 High-Mid Tom
C#3 49 Crash Cymbal 1
D3 50 High Tom
D#3 51 Ride Cymbal 1
E3 52 Chinese Cymbal
F3 53 Ride Bell
F#3 54 Tambourine
G3 55 Splash Cymbal
G#3 56 Cowbell
A3 57 Crash Cymbal 2
A#3 58 Vibrastrap
B3 59 Ride Cymbal 2
C4 60 High Bongo
C#4 61 Low Bongo
D4 62 Mute High Conga
D#4 63 Open High Conga
E4 64 Low Conga
F4 65 High Timbale
F#4 66 Low Timbale
G4 67 High Agogo
G#4 68 Low Agogo
A4 69 Cabasa
A#4 70 Maracas
B4 71 Short Whistle
C5 72 Long Whistle
C#5 73 Short Guiro
D5 74 Long Guiro
D#5 75 Claves
E5 76 High Wood Block
F5 77 Low Wood Block
F#5 78 Mute Cuica
G5 79 Open Cuica
G#5 80 Mute Triangle
A5 81 Open Triangle
General-MIDI-Drums


tilman 29. Jun 2005 11:22

Re: MIDI Klavier
 
Zitat:

Zitat von FAlter
Zitat:

Zitat von tilman
system.pas nicht gefunden

Diese Unit gehört zu Delphi dazu. Das Problem hast du, wenn aus irgendeinem Grund das Unterverzeichnis Lib des Delphi-Verzeichnisses nicht mehr in den Bibliotheksverzeichnissen und im Suchpfad steht, hatte ich auch schon mal.

Ja, ich arbeite so ca. seit 5-6 Jahren mit Delphi... das system.pas dazu gehört und mein fehler auf einen falschen LIB-Pfad hinweißt ist mir schon klar :wink:
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...

FAlter 29. Jun 2005 11:28

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:

FAlter 29. Jun 2005 11:39

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 02:57 Uhr.
Seite 1 von 8  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz