AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte MIDI Klavier
Thema durchsuchen
Ansicht
Themen-Optionen

MIDI Klavier

Ein Thema von FAlter · begonnen am 28. Jun 2005 · letzter Beitrag vom 21. Aug 2008
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    
Benutzerbild von FAlter
FAlter
Registriert seit: 21. Jul 2004
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
Angehängte Dateien
Dateityp: gz midi_klavier_1_0_setup.exe_288.gz (996,6 KB, 169x aufgerufen)
Dateityp: 7z midi_klavier_1_0_setup_371.7z (604,9 KB, 313x aufgerufen)
 
Benutzerbild von turboPASCAL
turboPASCAL

 
Delphi 6 Personal
 
#2
  Alt 28. Jun 2005, 21:34
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)
Matti
  Mit Zitat antworten Zitat
Neuni

 
Delphi 7 Personal
 
#3
  Alt 28. Jun 2005, 22:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

 
FreePascal / Lazarus
 
#4
  Alt 28. Jun 2005, 23:38
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 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

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.
Felix Alter
  Mit Zitat antworten Zitat
Nicolai1234

 
Turbo Delphi für Win32
 
#5
  Alt 28. Jun 2005, 23:57
Ich finds klasse:

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...
  Mit Zitat antworten Zitat
Benutzerbild von tilman
tilman
 
#6
  Alt 29. Jun 2005, 00:04
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.
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

 
FreePascal / Lazarus
 
#7
  Alt 29. Jun 2005, 12:17
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 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:

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 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
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von tilman
tilman
 
#8
  Alt 29. Jun 2005, 12:22
Zitat von FAlter:
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
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...
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

 
FreePascal / Lazarus
 
#9
  Alt 29. Jun 2005, 12:28
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
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

 
FreePascal / Lazarus
 
#10
  Alt 29. Jun 2005, 12:39
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
Felix Alter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
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