g++ -o plugin.so build/src/Prototype.cpp.o build/src/QuickJSEngine.cpp.o build/src/LuaJITEngine.cpp.o build/src/SuperColliderEngine.cpp.o build/src/VultEngine.cpp.o build/src/LibPDEngine.cpp.o build/src/FaustEngine.cpp.o dep/lib/libefsw-static-release.a dep/lib/quickjs/libquickjs.a dep/lib/libluajit-5.1.a dep/supercollider/build/lang/libsclang.a dep/supercollider/build/external_libraries/libtlsf.a dep/supercollider/build/external_libraries/hidapi/linux/libhidapi.a dep/supercollider/build/external_libraries/hidapi/hidapi_parser/libhidapi_parser.a dep/supercollider/build/external_libraries/libboost_thread_lib.a dep/supercollider/build/external_libraries/libboost_system_lib.a dep/supercollider/build/external_libraries/libboost_regex_lib.a dep/supercollider/build/external_libraries/libboost_filesystem_lib.a dep/supercollider/build/external_libraries/libyaml.a dep/lib/libpd.a dep/lib/libfaust.a -lpthread -lasound -ludev -shared -L../Rack/ -lRack -Wl,-rpath=/tmp/Rack2 -static-libstdc++ -static-libgcc
/usr/bin/ld: dep/lib/libfaust.a(errormsg.cpp.o): in function `yyerror(char const*)':
/home/dreamer/Sources/_audio/_rack/VCV-Prototype/dep/faust/compiler/errors/errormsg.cpp:64: multiple definition of `yyerror(char const*)'; dep/supercollider/build/lang/libsclang.a(PyrLexer.cpp.o):/home/dreamer/Sources/_audio/_rack/VCV-Prototype/dep/supercollider/lang/LangSource/PyrLexer.cpp:1293: first defined here
/usr/bin/ld: dep/lib/libfaust.a(faustlexer.cpp.o):/home/dreamer/Sources/_audio/_rack/VCV-Prototype/dep/faust/build/faustdir/faustlexer.cpp:819: multiple definition of `yytext'; dep/supercollider/build/lang/libsclang.a(PyrLexer.cpp.o):/home/dreamer/Sources/_audio/_rack/VCV-Prototype/dep/supercollider/lang/LangSource/PyrLexer.cpp:104: first defined here
/usr/bin/ld: dep/lib/libfaust.a(faustlexer.cpp.o): in function `yylex()':
/home/dreamer/Sources/_audio/_rack/VCV-Prototype/dep/faust/build/faustdir/faustlexer.cpp:1033: multiple definition of `yylex()'; dep/supercollider/build/lang/libsclang.a(PyrLexer.cpp.o):/home/dreamer/Sources/_audio/_rack/VCV-Prototype/dep/supercollider/lang/LangSource/PyrLexer.cpp:359: first defined here
collect2: error: ld returned 1 exit status
make: *** [../Rack//compile.mk:62: plugin.so] Error 1
Vult just gets stuck on Compiling... so also not functional yet for me.
The rest (Pd, JS, Supercollider) seem to work fine after adding the . to their extensions.
That was helpful. I managed to compile a working windows version without Faust and Supercollider. PureData works. So does lua and js. Loading a vult script results in the message “Compiling…”.
The error I get on Supercollider when running make after make dep is:
fatal: destination path 'supercollider' already exists and is not an empty directory.
IIRC Prototype can only be built from source, because some variants for which language(s) is available can’t coexist, and in some case, dependencies must be installed separately.
what does that mean exactly? i dont speak code-speak… is there a way to get prototype running on mac? is there instructions some where online for me to try and follow to build it or somethin
It seems to me that the biggest advantage of Prototype is that it allows people to use a scripting language so that they don’t have to compile and build modules themselves. Requiring people to build it themselves defeats that purpose.
Since different languages can’t coexist, wouldn’t make sense to have different pre-built versions of Prototype for different languages, rather than requiring each user to build their own?
Sure, that would be great. Just needs someone to do the work.
I wasn’t saying it has to be this way – I’m just describing the current state of affairs. It doesn’t appear to be a high priority for the originator (Vortico), given its current state, and that the last commit on the v2 branch was 3 years ago.
By its very name, it seems to be meant for prototyping - that is, making low-effort proof-of-concept before building the real thing (real thing being a full-fledged module).
There are other “scripting” modules, for example BASIC-ally, Monome Teletype.
I’ve seen a variety of attempts to lower the bar to making modules (I think Cabbage at one time had a way to generate Rack modules).
Ultimately, scripting is still programming and writing code. In a lot of ways, Rack patches can be considered scripts - Rack is visual programming language like other low-code/no-code scripting things.
Prototype comes with many engines - 5 on Win atm, 6 on Mac/Linux.
If you want, as an example, to use PD, add a module and load a PD file. If you want to use JS use another copy of Prototype and load your JS script. No need for separate modules.
The project hasn’t been maintained fully for v2 to be added to the Rack library, so atm the only choice is to build it yourself - this is not a design choice. In fact Andrew will eventually re-write Prototype, so either wait for that or build the current repo.