Here are some questions that are asked by working with one of the SDK's.
You can also read paragraph 5.1 in the manual,
which is about creating plugins for CPS.
Can I make full-fledged VST plugins/instruments with GUI and all using CPS?
No, CPS is not a graphic authoring tool, so you can not make VST plugins with an interface
(perhaps in the future, who knows!).
You can write plugins for CPS in C++, and use them as well in CPS as in an other VST host.
You can also run CPS inside VST, which is more
convenient of course. For each controlrate input of CPS,
one fader appears inside the VST host.
The mouseOver name of the controlrate inputs, are used as names for these faders
How do I read the value of a numberField or a fader inside Director/Java/C++?
Generate sourcecode, and look closely to it, especially look for a call which mentions
'conversate'. Now conversate the command 'get' to the Display object that you want to
read out. The return value is it's current value (in a string).
Do I need to install a Java VM when using CPS standAlone (C++ or in Director)?
No. The Java Virtual Machine is only used to run the CPS program, but not when CPS
is used standAlone. Unless of course if you are using CPS standAlone in Java, but then
you can use any Java Virtual Machine you want, not just the Microsoft VM.
Which compiler must I use to build a plugin?
On the Macintosh, you can only use the g++ compiler. All examples use this compiler.
If you type 'g++' inside a 'Terminal' and it gives some output, then it is already
installed. If the command is not found, then you should download it together with
ProjectBuilder or Xcode,
which are nice graphical editors (IDE's).
On Windows, the only supported compiler is Microsoft C++ (5 or higher), though
a lot of people have worked with all kinds of other compilers succesfully as well.
For the Java part (for the graphical interface of your plugin or to use
CPS standAlone), you can use any Java compiler on all the platforms.
I read about 'a dynamic number of in- and outputs'. How dynamic is this?
You can change the number of in- and outputs in your plugin the way you want, as long
as each steps reverses in the same way (otherwise a saved patch doesn't look the
same after reloading). An example of a complete change of in&outputs are all
the 'Operators' and 'Math' objects in CPS. They change from control in&outputs only
to audio in&outputs only.
So, there are no constraints towards changing the number of in- and outputs. The maximum of
inputs or outputs is nine.
Do I have to leave CPS to reload plugins?
No. Because you do not have to leave CPS, no special option is created for
when creating plugins.
Plugin dynamic libraries are released when there is no instance of it in CPS.
The easiest way of debugging your plugin, is to create a patch with your plugin,
save it, and
when you have compiled a new version, select File - New, re-drag the new dynamic
library into the /plugins/ folder, and open the saved patch back again.
This does not hold true for the Java plugin part. You may have to leave CPS for that.
This is true
because most Java interpreters cache their classes. Fortunately you are able to create
the Java part independently from CPS.
Note that CPS tries to load a plugin before it tries to load a Macro from file (which are
in the macros/ folder) in the Macro's menu. This is done
so you can still make a nice Macro's folder, even when these are plugins in reality.
Can I use VST-plugins when CPS is running standAlone, and can I open their graphic interfaces?
Yes. When CPS is running standAlone, you can still use and load plugins.
Because CPS-plugins and VST-plugins are handled in the same way, you can use them both.
You can open the graphical interface of a VST plugin, even when CPS is running standAlone.
Look for the appropiate command in the standAlone SDK documentation.
Can I make a modal interface for my plugin?
Yes. Standard, you get a Dialog which is not modal, but you can make it modal by
Modal means that you cannot go back to the CPS graphical interface before you
have closed your interface.
Can I use other objects and other self-made plugins in my plugin?
Yes, you can, as much as you want.
Do I have to have a lot of experience in programming to make a CPS plugin?
No, not at all. You can already make a CPS plugin when you have only a few months
C or C++ experience. Then you can directly start and make a plugin that does
something with audio and control data.
This is one of the reasons why CPS is suitable for educational purposes.
You do not have to know anything about programming in a certain native language,
multithreading & synchronizing, or any platform dependent issue at all!
I want my plugin in a 'Frame' instead of a 'Dialog'. Is this possible?
Yes, that is possible. The 'cpsChat' network object is a Frame plugin.
I do not have an English compiler. Now what?
If you do not have an English compiler, then it might happen that you can't open the
projects which are included in one of the SDK's, but only on Windows, because on the Macintosh
there are no projects included (but only one command line to compile the project).
What you must do then is doubleclick on the
.cpp file, and press 'compile'. At asks then to create a new project, answer 'yes'. Then you
have a correct project. Since all examples projects only have one .cpp file, this works for all
C++ projects. The only thing you also must do is, go to Project - Settings - the 'C/C++' tab -
Category: 'Code Generation' - set 'Use run-time library:' to 'Multithreaded DLL'.
How much memory does the CPS engine use in standAlone mode?
Without a patch loaded, it allocates about 2.3MB.
Objects theirselves are not really big, so depending on the size of your patch,
it will double during runtime.
Can I run several compiled patches or Director-CPS-patches at the same time?
Yes, but you have to run them in the same executable file, or in the same Director
If you start one engine several times, but not within one file (for example not inside
one .exe file),
then some engine calls can get mixed up and things can go seriously wrong. This problem
may be solved in the future, however if you are aware of this, it should be no problem.