Autor Beitrag
koarlheinz
Hält's aus hier
Beiträge: 5


D7 Ent
BeitragVerfasst: Fr 21.01.05 08:31 
Hallo.

Brauche dringend Hilfe!
Ich möchte in Delphi 7 bei einem klicken auf eine paintbox oder image ein Midi ausgeben.
Das Midi darf aber nur solange ausgegeben werden bis ich die linke Maustaste loslasse.
Also mit der procedure OnMouseDown und OnMouseUp.
Mit dem Mediaplayer ist das schlecht, da der zu lange zum ansprechen braucht.

Vielleicht eine von Delphi verwendete interne Midifunction.

Das dann aber auf alle Tasten bezogen.

Kann euch auch auch mal den Quelltext zusenden.


Kann mir bitte jemand helfen (bzw. tipps geben), ist dringend!
Danke.
Fireblade
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 23.01.05 19:04 
Irgendwie scheint keinem so richtig was einzufallen... :)
Ich kann dir auch nicht wirklich sagen in welche Richtung du suchen solltest,
aber falls sich gar nichts brauchbares finden lässt - recherchier doch evtl. mal
was es in DirectSound an Headern gibt und wie schwer es wäre selbst den Sound
auszugeben...
Ich kenne die DirectSound API leider nicht, aber ich könnte mir vorstellen dass man ein
kleines Midi gar nicht so schwer abgespielt bekommt. Da wird es sicher einen Ansatz geben
die Töne bzw. Midi Sequenzen hochzuladen in einen per GetMem reservierten Bereich und der
DirectSound API den Pointer auf diesen Bereich zu geben..
Nur mal grob, wie ich denke, welche Richtung möglich wäre...
Allerdings wird das mit sich bringen, dass du dich in die API einarbeiten müsstest,
und die external Funktionen selbst einbindest.
...
Ich vermute du möchtest ein MIDI Programm schreiben um selbst Partituren einzugeben o.ä.
Da wär es auf jeden Fall von vorteil "so nah wie möglich" an der Ausgabe des Sounds
beteiligt zu sein. Besser auf jeden Fall als über andere Programme zu agieren...
Tja.. mehr kann ich leider auch schon nicht mehr sagen, aber wenn das der richtige Weg ist, wird sich bestimmt auch ein Tutorial zum Thema DirectSound finden und da weiterfragen...

Viel Erfolg
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: So 23.01.05 19:54 
Ich habe leider nur eine Lösung für .WAV Dateien am Start. Hast du evt. die Möglichkeit die Dateien zu converten?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
uses mmsystem;
[...]
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 PlaySound('c:\sdfjsdkfjsdf.wav', 0, SND_FILENAME + SND_ASYNC);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 playsound(nil, 0,0);
end;