Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Maus Messages an VST-Plugin senden? (https://www.delphipraxis.net/153074-maus-messages-vst-plugin-senden.html)

supermuckl 19. Jul 2010 22:45


Maus Messages an VST-Plugin senden?
 
Hi!
Ich bin an einem größeren Projekt dran und möchte gerne wissen, wie ich ein VST-Plugin, daß das handle eines Panels als parent nimmt(als Anzeige), dazu bringen kann, daß ich mausaktionen direkt an das Plugin senden kann?
Also im Grunde genommen möchte ich

1. VST Plugin nicht anzeigen (kein Visuelles Fenster)
und dieses
2. Über netzwerk mit Mouseeingaben steuern können (Click, Move usw)

Derzeit hab ich es unglücklich gelöst, indem ein Form mit einem Panel drauf - und das Plugin als child des Panels als "Gui" übernimmt und die Maus per systemweite mouse commands gesteuert wird - das ist unschön und ich kann auch nicht mehrere plugins gleichzeitig übers netzwerk steuern, weil es ja nur eine Maus gibt ;)

Die Visuelle Rückmeldung funktioniert via "Render to Bitmap" und dann per PNG verschickt - das ist atm kein Problem.

Was ich bisher ausprobier habe sind per "postmessage" - messages an das handle des plugins zu senden (ist child des panels)
es geht auch TEILWEISE - es werden clicks angenommen - aber moves und clicks auf manche grafischen knöpfe des plugins werden nicht übernommen
mit winsight zeigt es mir auch massenhaft messages an wie "WM_MOUSELEAVE" was wohl das ganze auch zum wackeln bringt, wenn die mouse neben dem fenster sitzt
im prinzip müsste ich alle mousemessages an das VST plugin abfangen und "vergessen" und dann meine eigenen mouse messages an das handle schicken
ein wndproc überschreiben des panels hat irgendwie nicht funktioniert - ich kann das plugin auf dem "hostrechner" trotzdem per maus steuern wie gehabt

hier hab ich die wndproc überschrieben - was wohl nicht funktioniet:
Delphi-Quellcode:

  type Tpanel2 = class(Tpanel)
    public
    procedure WndProc(var Message: TMessage); override;
  end;


procedure Tpanel2.WndProc(var Message: TMessage);
begin
  case message.Msg of
   WM_MOUSEMOVE: exit;
    WM_MOUSELEAVE: exit;
    WM_LBUTTONDOWN: exit;
    WM_LBUTTONup: exit;
    WM_RBUTTONDOWN: exit;
    WM_RBUTTONup: exit;
    WM_CHILDACTIVATE: exit;
  end;

   inherited WndProc(Message);
end;

blackfin 19. Jul 2010 22:52

AW: Maus Messages an VST-Plugin senden?
 
Du meinst ein Cubase-VST Plugin?

Wenn ja, wieso steuerst du das ganze nicht per MIDI an? Dann kann man z.B. auch externe Controller / HUI's verwenden.

supermuckl 19. Jul 2010 22:53

AW: Maus Messages an VST-Plugin senden?
 
weil nicht alle VST plugins eine automatisierung aller parameter per midi können
und menüs per midi nicht anklickbar sind ;)

blackfin 19. Jul 2010 22:54

AW: Maus Messages an VST-Plugin senden?
 
Über SYSEX geht alles :)

supermuckl 19. Jul 2010 22:56

AW: Maus Messages an VST-Plugin senden?
 
ähm nein.
nochmals:
du musst solche sachen ausprogrammieren als plugin programmierer
ergo gibt es plugins die das nicht machen
ausserdem gehen keine menüs, die nur auf klick reagieren auf

hast du eine lösung?

blackfin 19. Jul 2010 23:03

AW: Maus Messages an VST-Plugin senden?
 
Achso du willst ein fremdes VST steuern, ich dachte, du schreibst ein eigenes, sorry. Da könntest du so ziemlich alles über MIDI umschaltbar / auswählbar machen, aber so ist das natürlich ein Problem.

Mhm, nein, da fällt mir so schnell leider erstmal keine Lösung ein. Ich hab zwar auch mal ein paar VST's programmiert, aber ich hab das SDK nicht mehr so im Kopf (ehrlich gesagt gar nicht mehr)...

Klingt das irgendwie danach, als ob du einen mini VST-Host baust?
Zitat:

..aber moves und clicks auf manche grafischen knöpfe des plugins werden nicht übernommen
Haben die grafischen Knöpfe vielleicht ein eigenes Handle?
Nur so als Idee, wenn du die Children des Plugins iterierst und die Befehle direkt an diese schickst?

supermuckl 19. Jul 2010 23:06

AW: Maus Messages an VST-Plugin senden?
 
jo
also nochmal zur erklärung
ich bin VST-Host und lade eine VST-DLL
und dieses handle klebt auf dem panel

und dieses vst-dll-handle soll keine "echten" messages mehr bekommen von der maus -
soll aber meine virtuell erzeugten mausaktionen per messages oder sonstwie "verdauen"

im prinzip kann man warscheinlich bei einer vst plugin - dll wie bei jeder anderen DLL mit oberfläche verfahren
aber wie?

supermuckl 21. Jul 2010 05:45

AW: Maus Messages an VST-Plugin senden?
 
*vorsichtigpush*

also eine normale DLL mit oberfläche müsste sich auch so verhalten
hat das nicht schonmal jemand machen müssen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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