Pluginentwicklung

Fragen zur Verwendung des PC_DIMMER
Antworten
blaubart
Lüsterklemmenschrauber
Beiträge: 47
Registriert: 12.11.2008, 07:40
Wohnort: Schleswig-Holstein

Pluginentwicklung

Beitrag von blaubart »

So, ich habe mich mal mit einem Plugin in C++ versucht und bin gestolpert. :cry:
1. Beim "DLLDeactivate()" gibt es keine Rückmeldung, trotzdem meldet das Programm, dass auf die Deaktivierung eine Fehlermeldung folgte. Was muss man da tun?
2. Ich kämpfe mit dem Datentyp VARIANT. Habe versucht, "SendMessage( MSG_ADDLOGFILEENTRY, ... " zu verwenden, aber da kommt nix.
3. Habe versucht, "SendMessage( MSG_SYSTEMSPEED, ... " zu verwenden, um den Counter auf 123 bzw. 123.4 zu setzen, aber das Ergebnis war ständig 589.9 (oder so).

Gibt's dazu irgendwelche Beispiele - speziell zu VARIANT mit C++ / Visual Studio 2005 :roll: :?:

Martin
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Pluginentwicklung

Beitrag von Christian »

Hi Martin,


gehen tut es auf jedenfall, da schonmal einer ein Plugin für den PC_DIMMER in C++ programmiert hat. Der Typ Variant ist ja ein Typ, welcher unterschiedliche Datentypen beinhalten kann. Man muss den unter Umständen mit einem Typecast erst auf den korrekten Typ der jeweiligen Nachricht umbiegen, damit VisualC++ das korrekt macht.

Ich habe mal ein Beispiel unter C angefangen. Ich kann das nochmal nachprüfen und dir dann zuschicken.


bis dann,
Christian :)
blaubart
Lüsterklemmenschrauber
Beiträge: 47
Registriert: 12.11.2008, 07:40
Wohnort: Schleswig-Holstein

Re: Pluginentwicklung

Beitrag von blaubart »

Also:
Bei MSG_SYSTEMSPEED liefert ein Wert von '1' (als Typ VT_I4) im Beattool die Anzeige '600'. Bei 40000 ergibt das 200bpm und um meine gwünschten 123.4 bpm einzustellen muss ich demnach 47660 übergeben. :shock:
Das ist irgendwie: 600 - ( iValue/100.0 ).
Habe ich da den falschen Datentyp zu fassen oder ist die Message einfach anders zu verstehen :?: :roll:
blaubart
Lüsterklemmenschrauber
Beiträge: 47
Registriert: 12.11.2008, 07:40
Wohnort: Schleswig-Holstein

Re: Pluginentwicklung

Beitrag von blaubart »

blaubart hat geschrieben: Das ist irgendwie: 600 - ( iValue/100.0 ).
Grübel grübel und studier...

@Christian: Das werden wohl Hundertstel Millisekunden sein, oder?
blaubart
Lüsterklemmenschrauber
Beiträge: 47
Registriert: 12.11.2008, 07:40
Wohnort: Schleswig-Holstein

Re: Pluginentwicklung

Beitrag von blaubart »

blaubart hat geschrieben:So, ich habe mich mal mit einem Plugin in C++ versucht und bin gestolpert. :cry:
1. Beim "DLLDeactivate()" gibt es keine Rückmeldung, trotzdem meldet das Programm, dass auf die Deaktivierung eine Fehlermeldung folgte. Was muss man da tun?
Ich habe mal in den Quellen gesucht und gesehen, dass beim Deaktivieren ein Rückgabewert abgefragt wird.
Demnach ist "void __stdcall DLLDeactivate()" nicht (mehr) die richtige Definition.
Und nach dem Ändern auf Typ "bool" und der Rückgabe von TRUE klappt auch das Deaktivieren ohne Probleme.
:)
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Pluginentwicklung

Beitrag von Christian »

Du fragst Sachen *g*

bin leider kaum zu Hause, sonst hätte ich jetzt in meinen Sources schauen können. Ich weiß grad nicht, welche Werte ich für diese Nachricht vorgesehen habe. Wenigstens funktioniert jetzt die DLLDeactivate()-Routine vernünftig. Tut mir leid, wenn die Doku eher mäßig ist - für sowas nehm ich mir keine Zeit :oops: .

Ich melde mich nochmal wegen der Beatwerte...
blaubart
Lüsterklemmenschrauber
Beiträge: 47
Registriert: 12.11.2008, 07:40
Wohnort: Schleswig-Holstein

Re: Pluginentwicklung

Beitrag von blaubart »

Ja, ich schon wieder! 8)
Ich habe mir nun also ein Plugin geschrieben, das das BPM-Studio nach dem aktuellen Wert fragt und dann eine Beat-Message an das Hauptprogramm sendet. Das funktioniert soweit schon ganz gut, aber ...
1. Das Beattool muss auf "Plugin" gestellt werden, damit die Beat-Message empfangen wird. Leider reagiert z.B. der Effektplayer nicht auf dieses Signal. Einen neuen BPM-Wert senden kann das Plugin in diesem Fall nicht. :(
2. Stellt man das Beattool auf "Temposlider" kann man einen neuen BPM-Wert vom Plugin aus einstellen, es wird aber keine Beat-Message ausgewertet. :|

@Christian: Das Reagieren auf die Message unter Punkt 1 hätte ich doch gern gelöst :wink:,
das Senden einer neuen SYSTEMSPEED wäre wünschenswert.

Martin
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Pluginentwicklung

Beitrag von Christian »

Hi Martin,

ist ja auch nicht vergessen, aber ich bin so selten zu Hause, dass ich da bislang nicht zu gekommen bin. Ich seh zu, dass ich dir da bald was anbieten kann.


bis dann,
Christian
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Pluginentwicklung

Beitrag von Christian »

Update: die neue Version, die seit gestern Abend online ist, hat ein paar Bugfixes. Unter anderem reagiert nun auch der Effektsequenzer auf Beatimpulse der Plugins.

Du willst ja auch nen Beat-Message aus dem Plugin senden, auch wenn im Beattool was anderes als "Plugin" als Quelle gewählt wird. Das werde ich noch als Option einbauen. Kommt dann in der nächsten Version.

Ansonsten kann man soweit alles per Plugin einstellen (BPM-Wert, etc.). Da gabs bei mir keine Probleme.


ciao,
Christian
Antworten