dewb / monome-rack Goto Github PK
View Code? Open in Web Editor NEWVCV Rack plugin for monome Eurorack modules
License: GNU General Public License v2.0
VCV Rack plugin for monome Eurorack modules
License: GNU General Public License v2.0
Add @scanner-darkly's polyphonic earthsea module
https://github.com/scanner-darkly/polyearthsea
This could be a separate module from regular Earthsea (with eight knobs and three eight-channel polyphonic outputs: pitch cv, gate, mod cv) or it could be an alt firmware option for all three trilogy modules, allowing you to pick what I/O you wanted.
macOS 10.14.5
Rack V1 built from source.
I cloned monome-rack to plugins directory.
make
fails building firmware files, as ${RACK_DIR}/arch.mk cannot be found.
I had to add
RACK_DIR ?= ../../..
to all firmware/*.mk files to fix this.
Create a VCV-rack specific documentation pages page on gh-pages and redirect Plugin > Manual
to it. Right now it links to monome.org/docs which is not as immediately helpful.
Leaning towards just supporting hardware arcs and not trying to make virtual ones.
"Param" goes from 0 to 16380 - The middle and default is 8188
"IN" 10V is 16380
It should be like the hardware.
0V is 0, 5V is 8192, 10 V is 16384
"the range is 0-16384, the same as how 0-10v is represented"
https://monome.org/docs/teletype/studies-4/
win7
rack 0.5
had a little time and tried to learn/play a bit with the earthsea module, but i'm having a hard time getting it to work with the virtual grids as well as grid64.
first of all:
it doesn't like the regular virtual grids! whenever i try to connect one my term gets spammed with 'e' letters.
with the monos it's a little bit better, but i had it crashing many times with certain key combinations.
still have to figure out the step-by-step clicks, but the last button i pressed was always the top left one.
trying some more and reporting back later.
I built Rack 0.6 and monome-rack on macOS 10.14.1 (Mojave) without problems.
Connecting one of the rack modules to the virtual grids made no problems.
As I built a Arduinome (Arduino based Monome clone) a long time ago, I gave it a try. The connection itself worked seamlessly, but some of the LEDs show heavy flickering, especially those who appear in the virtual grids either dimmed or moving.
It looks like the LEDs get switch on and immediately of again. I would expect the half bright LEDs to have full brightness.
The old grid models do not have the varibright feature. As other LEDs show up in full brightness, maybe the varibright settings are not correctly supported for the old grids.
Current panel SVGs are using Gill Sans, but the correct font is Core Humanist Sans Italic.
https://www.fontspring.com/fonts/fonts-by-alex/corehumanistsans/core-humanist-sans-italic
Linux
0.5.1
VCV Rack segfaults when a real grid is connected to White Whale (haven't tested the others) and you disconnect it.
VCV Rack shouldn't segfault ;)
If you want I can get a backtrace
MSYS2 - Windows 10 Pro
$ make
cd firmware && make -f whitewhale.mk
make[1] : on entre dans le répertoire « /home/caeco/rack/plugins/monome-rack/firmware »
whitewhale.mk:30: /arch.mk: No such file or directory
make[1]: *** Aucune règle pour fabriquer la cible « /arch.mk ». Arrêt.
make[1] : on quitte le répertoire « /home/caeco/rack/plugins/monome-rack/firmware »
right clicked on White Wale and connected it to virtual grid 64.
And a clock in on White Wale.
But when i click on the virtual grid, nothing happens.
What are I am doing wrong.
Do you have a vcv rack patch I could download to see the connections
git status
git submodule status
make clean
make
Windows 10
v0.5
Earthsea works fine on mac OS. On Windows, it doesn't do anything when you add it to a patch, and if you connect it to a grid, Rack hangs.
When you plug a grid into Earthsea for the first time, the knobs are at 12 o'clock, but the CV outs put out 0V and the grid CV indicators are on the far left side. They don't jump the correct center / 5V position until you nudge a knob. Likely something being simulated incorrectly in either the init code or the hysteresis code.
Potential features:
Bit of a silly one, but are the Windows line endings for the files in firmware/mock_hardware/stubs/avr32/
and lib/oscpack
deliberate?
https://monome.org/docs/modular/teletype/
TODO:
process_keypress
The plugin loads okay and the panels display properly (minus labels, of course), but looking at the command-line output I see this:
Binding to port 13000.
[warning] Creating new temporary firmware instance at module-firmware7kd6yQ
[warning] Failed to load library module-firmware7kd6yQ: module-firmware7kd6yQ: cannot open shared object file: No such file or directory
What's up with that ?
Cool project, btw. It has me thinking about purchasing a used monome.
If Rack crashes while WW is in a rack, the temp firmware file may be left in your temp directory.
Possible solutions:
mktemp
on some platforms?GitHub Actions have been set up to produce Linux builds and post on the releases page after every commit to master.
The right-click menu system to assign grids to modules needs work.
The minimalist look is nice, but jack labels will be necessary for new users, and remembering the correct jack numbering order on meadowphysics and teletype, etc.
Ubuntu 18.04 Linux
1.x dev
Hi Michael !
The problem:
make[1]: Entering directory '/home/dlphilp/src/Rack/plugins-extra/monome-rack/firmware'
cc -DNULL=0 -o0 -D__AVR32_UC3B0256__ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/src/usb/midi -Iwhitewhale/libavr32/src/usb/hid -Iwhitewhale/libavr32/src/usb/cdc -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/whitewhale/mock_hardware/mock_hardware.c.o mock_hardware/mock_hardware.c
mock_hardware/mock_hardware.c: In function ‘hardware_iiPushMessage’:
mock_hardware/mock_hardware.c:510:9: error: implicit declaration of function ‘memcpy_s’; did you mean ‘memcpy’? [-Werror=implicit-function-declaration]
memcpy_s(iiMessageBuffer[iiMessageBufferIndex].data, II_MAX_DATA, data, length);
^~~~~~~~
memcpy
cc1: some warnings being treated as errors
whitewhale.mk:60: recipe for target '../build/firmware/whitewhale/mock_hardware/mock_hardware.c.o' failed
make[1]: *** [../build/firmware/whitewhale/mock_hardware/mock_hardware.c.o] Error 1
make[1]: Leaving directory '/home/dlphilp/src/Rack/plugins-extra/monome-rack/firmware'
Makefile:42: recipe for target 'firmwares' failed
make: *** [firmwares] Error 2
Any suggestions ?
Fedora 23 Linux
VCV Rack 0.6.2c from source
The subject line says it. Whenever I select any of the four buttons for CV A it reliably crashes Rack. CV B shows no such problem. No errors are reported at the terminal prompt, but I'll try to generate a debug report with gdb.
Btw, I've been playing with the White Whale and Meadowphysics modules, having great fun learning and using them. I'll post a YouTube video asap. Thank you for the cool plugin !
I get 14 errors when I make the plugs on Mac
c++ -o0 -Werror=implicit-function-declaration -Isrc -Isrc/common -Isrc/grid -Isrc/whitewhale -Ilib/base64 -Ilib/oscpack -Ilib/serialosc -fPIC -I../../include -I../../dep/include -DVERSION=dev -O3 -march=nocona -ffast-math -g -Wall -DARCH_MAC -mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++ -c -o build/src/plugin.cpp.o src/plugin.cpp
In file included from src/plugin.cpp:1:
src/grid/grid.hpp:21:18: error: only virtual member functions can be
marked 'override'
void reset() override;
^~~~~~~~
src/grid/grid.hpp:35:22: error: only virtual member functions can be
marked 'override'
json_t* toJson() override;
^~~~~~~~
src/grid/grid.hpp:36:34: error: only virtual member functions can be
marked 'override'
void fromJson(json_t* rootJ) override;
^~~~~~~~
src/grid/grid.hpp:38:22: error: unknown type name 'EventDragEnter'
void onDragEnter(EventDragEnter& e) override;
^
src/grid/grid.hpp:39:22: error: unknown type name 'EventMouseDown'
void onMouseDown(EventMouseDown& e) override;
^
In file included from src/plugin.cpp:3:
src/whitewhale/whitewhale.hpp:9:22: error: only virtual member functions
can be marked 'override'
void randomize() override;
^~~~~~~~
src/plugin.cpp:12:8: error: no member named 'version' in 'rack::Plugin'
p->version = TOSTRING(VERSION);
~ ^
src/plugin.cpp:14:8: error: no member named 'website' in 'rack::Plugin'
p->website = "https://github.com/monome/whitewhale";
~ ^
src/plugin.cpp:16:8: error: no member named 'addModel' in 'rack::Plugin'
p->addModel(createModel<WhiteWhaleWidget>("monome", "whitewh...
~ ^
src/plugin.cpp:16:86: error: use of undeclared identifier
'SEQUENCER_TAG'
..."whitewhale", "white whale", SEQUENCER_TAG, CLOCK_TAG, EXTERNAL_...
^
src/plugin.cpp:16:101: error: use of undeclared identifier 'CLOCK_TAG'
..."whitewhale", "white whale", SEQUENCER_TAG, CLOCK_TAG, EXTERNAL_...
^
src/plugin.cpp:16:112: error: use of undeclared identifier
'EXTERNAL_TAG'
..."whitewhale", "white whale", SEQUENCER_TAG, CLOCK_TAG, EXTERNAL_...
^
src/plugin.cpp:19:8: error: no member named 'addModel' in 'rack::Plugin'
p->addModel(createModel<MonomeGridWidgetTemplate<16, 8>>("mo...
~ ^
src/plugin.cpp:19:103: error: use of undeclared identifier
'CONTROLLER_TAG'
...8>>("monome", "grid128", "virtual grid 128", CONTROLLER_TAG));
^
14 errors generated.
make: *** [build/src/plugin.cpp.o] Error 1
iMacdiAGrazioli:monome-rack antonio_grazioli$
I would like to be able to use OpenStageControl and/or TouchOSC to send/receive OSC messages to/from the monome-rack plugins via UDP/IP.
https://www.youtube.com/watch?v=Y1QRYYoeQQs&ab_channel=PrimordialWaves
https://github.com/okyeron/oscgrid
Various Opensource modules allready support OSC connections, but it would not be easy to make a virtual "grid" using those:
https://library.vcvrack.com/trowaSoft/cvOSCcv
https://library.vcvrack.com/OSCelot
Thank you, your effort is much appreciated!
Linux Fedora 23
Rack 0.5 (source build)
Latest code fails here:
g++ -o plugin.so build/lib/base64/base64.cpp.o build/lib/oscpack/ip/IpEndpointName.cpp.o build/lib/oscpack/osc/OscOutboundPacketStream.cpp.o build/lib/oscpack/osc/OscPrintReceivedElements.cpp.o build/lib/oscpack/osc/OscTypes.cpp.o build/lib/oscpack/osc/OscReceivedElements.cpp.o build/lib/serialosc/SerialOsc.cpp.o build/src/plugin.cpp.o build/src/common/MonomeWidgets.cpp.o build/src/common/FirmwareManager.cpp.o build/src/common/monomemodulebase.cpp.o build/src/common/MonomeModuleBase.cpp.o build/src/common/monomewidgets.cpp.o build/src/common/firmwaremanager.cpp.o build/src/common/MonomeModuleBaseWidget.cpp.o build/src/whitewhale/WhiteWhaleWidget.cpp.o build/src/whitewhale/WhiteWhaleModule.cpp.o build/src/virtualgrid/VirtualGridModule.cpp.o build/src/virtualgrid/VirtualGridWidget.cpp.o build/src/earthsea/EarthseaModule.cpp.o build/src/earthsea/EarthseaWidget.cpp.o build/src/meadowphysics/MeadowphysicsModule.cpp.o build/src/meadowphysics/MeadowphysicsWidget.cpp.o build/src/common/GridConnection/SerialOscGridConnection.cpp.o build/src/common/GridConnection/VirtualGridConnection.cpp.o build/src/common/GridConnection/GridConnection.cpp.o build/lib/oscpack/ip/posix/NetworkingUtils.cpp.o build/lib/oscpack/ip/posix/UdpSocket.cpp.o -shared
build/src/common/MonomeModuleBase.cpp.o: In function rack::Module::fromJson(json_t*)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:83: multiple definition of
MonomeModuleBase::buttonPressMessageReceived(MonomeDevice*, int, int, bool)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:83: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function rack::Module::~Module()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.hpp:31: multiple definition of
non-virtual thunk to MonomeModuleBase::buttonPressMessageReceived(MonomeDevice*, int, int, bool)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.hpp:31: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function rack::Module::~Module()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:92: multiple definition of
MonomeModuleBase::readSerialMessages()'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:92: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::deviceRemoved(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:75: multiple definition of
MonomeModuleBase::deviceRemoved(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:75: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function non-virtual thunk to MonomeModuleBase::deviceRemoved(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.hpp:30: multiple definition of
non-virtual thunk to MonomeModuleBase::deviceRemoved(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.hpp:30: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::~MonomeModuleBase()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:19: multiple definition of
MonomeModuleBase::~MonomeModuleBase()'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:19: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::~MonomeModuleBase()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:19: multiple definition of
MonomeModuleBase::~MonomeModuleBase()'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:19: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::~MonomeModuleBase()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:19: multiple definition of
MonomeModuleBase::~MonomeModuleBase()'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:19: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::toJson()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:183: multiple definition of
MonomeModuleBase::toJson()'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:183: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::fromJson(json_t*)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:212: multiple definition of
MonomeModuleBase::fromJson(json_t*)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:212: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::setGridConnection(GridConnection*)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:25: multiple definition of
MonomeModuleBase::setGridConnection(GridConnection*)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:25: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::deviceFound(MonomeDevice const*)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:67: multiple definition of
MonomeModuleBase::deviceFound(MonomeDevice const*)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:67: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function non-virtual thunk to MonomeModuleBase::deviceFound(MonomeDevice const*)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.hpp:29: multiple definition of
non-virtual thunk to MonomeModuleBase::deviceFound(MonomeDevice const*)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.hpp:29: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::step()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:145: multiple definition of
MonomeModuleBase::step()'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:145: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::MonomeModuleBase(int, int, int, int)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:10: multiple definition of
MonomeModuleBase::MonomeModuleBase(int, int, int, int)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:10: first defined here
build/src/common/MonomeModuleBase.cpp.o: In function MonomeModuleBase::MonomeModuleBase(int, int, int, int)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeModuleBase.cpp:10: multiple definition of
MonomeModuleBase::MonomeModuleBase(int, int, int, int)'
build/src/common/monomemodulebase.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomemodulebase.cpp:10: first defined here
build/src/common/monomewidgets.cpp.o: In function rack::TransparentWidget::onScroll(rack::EventScroll&)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomewidgets.cpp:11: multiple definition of
USBAJack::draw(NVGcontext*)'
build/src/common/MonomeWidgets.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeWidgets.cpp:11: first defined here
build/src/common/monomewidgets.cpp.o: In function MonomeKnob::~MonomeKnob()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeWidgets.hpp:12: multiple definition of
virtual thunk to USBAJack::draw(NVGcontext*)'
build/src/common/MonomeWidgets.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeWidgets.hpp:12: first defined here
build/src/common/monomewidgets.cpp.o: In function MonomeKnob::~MonomeKnob()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomewidgets.cpp:5: multiple definition of
WhiteLight::WhiteLight()'
build/src/common/MonomeWidgets.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeWidgets.cpp:5: first defined here
build/src/common/monomewidgets.cpp.o: In function WhiteLight::WhiteLight()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomewidgets.cpp:5: multiple definition of
WhiteLight::WhiteLight()'
build/src/common/MonomeWidgets.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeWidgets.cpp:5: first defined here
build/src/common/monomewidgets.cpp.o: In function MonomeKnob::MonomeKnob()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomewidgets.cpp:23: multiple definition of
MonomeKnob::MonomeKnob()'
build/src/common/MonomeWidgets.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeWidgets.cpp:23: first defined here
build/src/common/monomewidgets.cpp.o: In function MonomeKnob::MonomeKnob()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/monomewidgets.cpp:23: multiple definition of
MonomeKnob::MonomeKnob()'
build/src/common/MonomeWidgets.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/MonomeWidgets.cpp:23: first defined here
build/src/common/firmwaremanager.cpp.o: In function FirmwareManager::FirmwareManager()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/firmwaremanager.cpp:110: multiple definition of
FirmwareManager::FirmwareManager()'
build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:228: first defined here
build/src/common/firmwaremanager.cpp.o: In function FirmwareManager::FirmwareManager()': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/firmwaremanager.cpp:110: multiple definition of
FirmwareManager::FirmwareManager()'
build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:228: first defined here
build/src/common/firmwaremanager.cpp.o: In function std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data(char*)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/firmwaremanager.cpp:110: multiple definition of
FirmwareManager::~FirmwareManager()'
build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:232: first defined here
build/src/common/firmwaremanager.cpp.o: In function std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_data(char*)': /home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/firmwaremanager.cpp:110: multiple definition of
FirmwareManager::~FirmwareManager()'
build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:232: first defined here
build/src/common/firmwaremanager.cpp.o: In function FirmwareManager::init()': /usr/include/c++/5.3.1/bits/basic_string.h:131: multiple definition of
FirmwareManager::init()'
build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:250: first defined here
build/src/common/firmwaremanager.cpp.o: In function FirmwareManager::step()': /usr/include/c++/5.3.1/bits/basic_string.h:270: multiple definition of
FirmwareManager::step()'
build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:258: first defined here
build/src/common/firmwaremanager.cpp.o: In function FirmwareManager::getGPIO(unsigned int) const': build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:266: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::setGPIO(unsigned int, bool)':
/usr/include/c++/5.3.1/bits/basic_string.h:1029: multiple definition of FirmwareManager::setGPIO(unsigned int, bool)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:277: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::getDAC(int)':
/usr/include/c++/5.3.1/bits/basic_string.h:589: multiple definition of FirmwareManager::getDAC(int)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:286: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::setADC(int, unsigned short)':
/usr/include/c++/5.3.1/bits/basic_string.h:179: multiple definition of FirmwareManager::setADC(int, unsigned short)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:297: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::serialConnectionChange(serial_bus_t, unsigned char, char const*, char const*, char const*)':
/usr/include/c++/5.3.1/bits/basic_string.h:109: multiple definition of FirmwareManager::serialConnectionChange(serial_bus_t, unsigned char, char const*, char const*, char const*)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:305: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::readSerial(serial_bus_t, unsigned char**, unsigned int*)':
/usr/include/c++/5.3.1/bits/basic_string.tcc:221: multiple definition of FirmwareManager::readSerial(serial_bus_t, unsigned char**, unsigned int*)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:313: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::writeSerial(serial_bus_t, unsigned char*, unsigned int)':
/usr/include/c++/5.3.1/bits/char_traits.h:243: multiple definition of FirmwareManager::writeSerial(serial_bus_t, unsigned char*, unsigned int)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:326: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::triggerInterrupt(int)':
/usr/include/c++/5.3.1/bits/functional_hash.h:131: multiple definition of FirmwareManager::triggerInterrupt(int)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:335: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::setClockPeriod(float)':
/usr/include/c++/5.3.1/bits/hashtable_policy.h:446: multiple definition of FirmwareManager::setClockPeriod(float)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:343: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::advanceClock(float)':
/usr/include/c++/5.3.1/bits/hashtable.h:1427: multiple definition of FirmwareManager::advanceClock(float)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:351: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::readNVRAM(void**, unsigned int*)':
/usr/include/c++/5.3.1/bits/hashtable_policy.h:1322: multiple definition of FirmwareManager::readNVRAM(void**, unsigned int*)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:363: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::writeNVRAM(void const*, unsigned int)':
/usr/include/c++/5.3.1/bits/hashtable.h:1436: multiple definition of FirmwareManager::writeNVRAM(void const*, unsigned int)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:371: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::readVRAM(void**, unsigned int*)':
/usr/include/c++/5.3.1/bits/hashtable_policy.h:715: multiple definition of FirmwareManager::readVRAM(void**, unsigned int*)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:379: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::writeVRAM(void const*, unsigned int)':
/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/firmwaremanager.cpp:182: multiple definition of FirmwareManager::writeVRAM(void const*, unsigned int)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:387: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::FirmwareManager()':
/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/firmwaremanager.cpp:110: multiple definition of FirmwareManagerImpl::alreadyLoadedPaths[abi:cxx11]' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:228: first defined here build/src/common/firmwaremanager.cpp.o: In function
FirmwareManager::load(std::__cxx11::basic_string<char, std::char_traits, std::allocator >)':
/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/firmwaremanager.cpp:198: multiple definition of FirmwareManager::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)' build/src/common/FirmwareManager.cpp.o:/home/dlphilp/src/Rack-050/plugins/monome-rack/src/common/FirmwareManager.cpp:238: first defined here build/src/common/FirmwareManager.cpp.o: In function
std::_Hashtable<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::__detail::_Identity, std::equal_to<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::hash<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, true, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, true>*)':
/usr/include/c++/5.3.1/bits/hashtable.h:1594: warning: the use of tmpnam' is dangerous, better use
mkstemp'
collect2: error: ld returned 1 exit status
../../compile.mk:43: recipe for target 'plugin.so' failed
make: *** [plugin.so] Error 1
(After all other version 1 issues/features are complete)
Package manager details:
https://github.com/VCVRack/community
https://github.com/VCVRack/Rack/issues/444
Still need to determine if the package should have "monome" in the name or not.
https://llllllll.co/t/white-whale-in-vcvrack/10337/9
output from make
cd firmware && make -f whitewhale.mk
make[1]: Entering directory '/c/Projects/VCVRack/v1/Rack/plugins/monome-rack/firmware'
cc -DNULL=0 -o0 -D__AVR32_UC3B0256_ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/whitewhale/src/main.c.o whitewhale/src/main.c
whitewhale/src/main.c: In function 'handler_PollADC':
whitewhale/src/main.c:655:14: warning: passing argument 1 of 'adc_convert' from incompatible pointer type [-Wincompatible-pointer-types]
655 | adc_convert(&adc);
| ^~~~
| |
| u16 ()[4] {aka short unsigned int ()[4]}
In file included from whitewhale/src/main.c:29:
mock_hardware/stubs/adc.h:4:23: note: expected 'u16 ' {aka 'short unsigned int '} but argument is of type 'u16 ()[4]' {aka 'short unsigned int ()[4]'}
4 | void adc_convert(u16* dst);
| ~~~~~^~~
In file included from whitewhale/src/main.c:14:
whitewhale/src/main.c: At top level:
mock_hardware/stubs/print_funcs.h:13:46: warning: 'fprintf' is static but used in inline function 'print_dbg_hex' which is not static
13 | inline void print_dbg_hex(unsigned long n) { fprintf(stderr, "%lx", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:12:53: warning: 'fprintf' is static but used in inline function 'print_dbg_short_hex' which is not static
12 | inline void print_dbg_short_hex(unsigned short n) { fprintf(stderr, "%d", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:11:51: warning: 'fprintf' is static but used in inline function 'print_dbg_char_hex' which is not static
11 | inline void print_dbg_char_hex(unsigned char n) { fprintf(stderr, "%x", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:10:48: warning: 'fprintf' is static but used in inline function 'print_dbg_ulong' which is not static
10 | inline void print_dbg_ulong(unsigned long n) { fprintf(stderr, "%ld", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:9:37: warning: 'fprintf' is static but used in inline function 'print_dbg_char' which is not static
9 | inline void print_dbg_char(int c) { fprintf(stderr, "%d", c); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:8:42: warning: 'fprintf' is static but used in inline function 'print_dbg' which is not static
8 | inline void print_dbg(const char* str) { fprintf(stderr, "%s", str); }
| ^~~~~~~
cc -DNULL=0 -o0 -D__AVR32_UC3B0256__ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/whitewhale/libavr32/src/events.c.o whitewhale/libavr32/src/events.c
In file included from whitewhale/libavr32/src/events.c:10:
mock_hardware/stubs/print_funcs.h:13:46: warning: 'fprintf' is static but used in inline function 'print_dbg_hex' which is not static
13 | inline void print_dbg_hex(unsigned long n) { fprintf(stderr, "%lx", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:12:53: warning: 'fprintf' is static but used in inline function 'print_dbg_short_hex' which is not static
12 | inline void print_dbg_short_hex(unsigned short n) { fprintf(stderr, "%d", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:11:51: warning: 'fprintf' is static but used in inline function 'print_dbg_char_hex' which is not static
11 | inline void print_dbg_char_hex(unsigned char n) { fprintf(stderr, "%x", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:10:48: warning: 'fprintf' is static but used in inline function 'print_dbg_ulong' which is not static
10 | inline void print_dbg_ulong(unsigned long n) { fprintf(stderr, "%ld", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:9:37: warning: 'fprintf' is static but used in inline function 'print_dbg_char' which is not static
9 | inline void print_dbg_char(int c) { fprintf(stderr, "%d", c); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:8:42: warning: 'fprintf' is static but used in inline function 'print_dbg' which is not static
8 | inline void print_dbg(const char* str) { fprintf(stderr, "%s", str); }
| ^~~~~~~
cc -DNULL=0 -o0 -D__AVR32_UC3B0256__ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/whitewhale/libavr32/src/timers.c.o whitewhale/libavr32/src/timers.c
In file included from whitewhale/libavr32/src/timers.c:1:
mock_hardware/stubs/print_funcs.h:13:46: warning: 'fprintf' is static but used in inline function 'print_dbg_hex' which is not static
13 | inline void print_dbg_hex(unsigned long n) { fprintf(stderr, "%lx", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:12:53: warning: 'fprintf' is static but used in inline function 'print_dbg_short_hex' which is not static
12 | inline void print_dbg_short_hex(unsigned short n) { fprintf(stderr, "%d", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:11:51: warning: 'fprintf' is static but used in inline function 'print_dbg_char_hex' which is not static
11 | inline void print_dbg_char_hex(unsigned char n) { fprintf(stderr, "%x", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:10:48: warning: 'fprintf' is static but used in inline function 'print_dbg_ulong' which is not static
10 | inline void print_dbg_ulong(unsigned long n) { fprintf(stderr, "%ld", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:9:37: warning: 'fprintf' is static but used in inline function 'print_dbg_char' which is not static
9 | inline void print_dbg_char(int c) { fprintf(stderr, "%d", c); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:8:42: warning: 'fprintf' is static but used in inline function 'print_dbg' which is not static
8 | inline void print_dbg(const char* str) { fprintf(stderr, "%s", str); }
| ^~~~~~~
cc -DNULL=0 -o0 -D__AVR32_UC3B0256__ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/whitewhale/libavr32/src/util.c.o whitewhale/libavr32/src/util.c
cc -DNULL=0 -o0 -D__AVR32_UC3B0256__ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/mock_hardware/adapter.c.o mock_hardware/adapter.c
mock_hardware/adapter.c: In function 'ftdi_read':
mock_hardware/adapter.c:238:67: warning: passing argument 3 of 'hardware_readSerial_internal' from incompatible pointer type [-Wincompatible-pointer-types]
238 | hardware_readSerial_internal(FTDI_BUS, ¤t_ftdi_message, ¤t_ftdi_message_length);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| u8 * {aka unsigned char }
In file included from mock_hardware/adapter.c:2:
mock_hardware/mock_hardware.h:33:79: note: expected 'uint32_t ' {aka 'unsigned int '} but argument is of type 'u8 ' {aka 'unsigned char '}
33 | void hardware_readSerial_internal(serial_bus_t bus, uint8_t pbuf, uint32_t pcount);
| ~~~~~~~~~~^~~~~~
mock_hardware/adapter.c: In function 'screen_clear':
mock_hardware/adapter.c:352:39: warning: passing argument 2 of 'hardware_getScreenBuffer' makes pointer from integer without a cast [-Wint-conversion]
352 | hardware_getScreenBuffer(&screen, width, height);
| ^~~~~
| |
| uint16_t {aka short unsigned int}
In file included from mock_hardware/adapter.c:2:
mock_hardware/mock_hardware.h:38:56: note: expected 'uint16_t ' {aka 'short unsigned int '} but argument is of type 'uint16_t' {aka 'short unsigned int'}
38 | void hardware_getScreenBuffer(uint8_t ptr, uint16_t width, uint16_t height);
| ~~~~~~~~~~^~~~~
mock_hardware/adapter.c:352:46: warning: passing argument 3 of 'hardware_getScreenBuffer' makes pointer from integer without a cast [-Wint-conversion]
352 | hardware_getScreenBuffer(&screen, width, height);
| ^~~~~~
| |
| uint16_t {aka short unsigned int}
In file included from mock_hardware/adapter.c:2:
mock_hardware/mock_hardware.h:38:73: note: expected 'uint16_t ' {aka 'short unsigned int '} but argument is of type 'uint16_t' {aka 'short unsigned int'}
38 | void hardware_getScreenBuffer(uint8_t ptr, uint16_t* width, uint16_t* height);
| ~~~~~~~~~~^~~~~~
cc -DNULL=0 -o0 -D__AVR32_UC3B0256__ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/mock_hardware/mock_hardware.c.o mock_hardware/mock_hardware.c
mock_hardware/mock_hardware.c: In function 'hardware_declareNVRAM':
mock_hardware/mock_hardware.c:330:15: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
330 | nvram_ptr = ptr;
| ^
mock_hardware/mock_hardware.c: In function 'hardware_declareVRAM':
mock_hardware/mock_hardware.c:347:14: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
347 | vram_ptr = ptr;
| ^
cc -DNULL=0 -o0 -D__AVR32_UC3B0256__ -fPIC -g -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iwhitewhale/libavr32/src -Iwhitewhale/libavr32/asf/common/services/usb -Iwhitewhale/libavr32/asf/common/services/usb/uhc -Iwhitewhale/libavr32/conf -Iwhitewhale/libavr32/conf/trilogy -std=c99 -c -o ../build/firmware/mock_hardware/monome.c.o mock_hardware/monome.c
In file included from mock_hardware/monome.c:2:
mock_hardware/stubs/print_funcs.h:13:46: warning: 'fprintf' is static but used in inline function 'print_dbg_hex' which is not static
13 | inline void print_dbg_hex(unsigned long n) { fprintf(stderr, "%lx", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:12:53: warning: 'fprintf' is static but used in inline function 'print_dbg_short_hex' which is not static
12 | inline void print_dbg_short_hex(unsigned short n) { fprintf(stderr, "%d", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:11:51: warning: 'fprintf' is static but used in inline function 'print_dbg_char_hex' which is not static
11 | inline void print_dbg_char_hex(unsigned char n) { fprintf(stderr, "%x", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:10:48: warning: 'fprintf' is static but used in inline function 'print_dbg_ulong' which is not static
10 | inline void print_dbg_ulong(unsigned long n) { fprintf(stderr, "%ld", n); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:9:37: warning: 'fprintf' is static but used in inline function 'print_dbg_char' which is not static
9 | inline void print_dbg_char(int c) { fprintf(stderr, "%d", c); }
| ^~~~~~~
mock_hardware/stubs/print_funcs.h:8:42: warning: 'fprintf' is static but used in inline function 'print_dbg' which is not static
8 | inline void print_dbg(const char* str) { fprintf(stderr, "%s", str); }
| ^~~~~~~
g++ -o ../res/firmware/whitewhale.dll ../build/firmware/whitewhale/src/main.c.o ../build/firmware/whitewhale/libavr32/src/events.c.o ../build/firmware/whitewhale/libavr32/src/timers.c.o ../build/firmware/whitewhale/libavr32/src/util.c.o ../build/firmware/mock_hardware/adapter.c.o ../build/firmware/mock_hardware/mock_hardware.c.o ../build/firmware/mock_hardware/monome.c.o -shared
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ../build/firmware/mock_hardware/adapter.c.o:C:_Projects\VCVRack\v1\Rack\plugins\monome-rack\firmware/mock_hardware/adapter.c:28: multiple definition of tcTicks'; ../build/firmware/whitewhale/src/main.c.o:C:\_Projects\VCVRack\v1\Rack\plugins\monome-rack\firmware/whitewhale/libavr32/src/init_trilogy.h:7: first defined here C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: ../build/firmware/mock_hardware/adapter.c.o:C:\_Projects\VCVRack\v1\Rack\plugins\monome-rack\firmware/mock_hardware/adapter.c:29: multiple definition of
tcOverflow'; ../build/firmware/whitewhale/src/main.c.o:C:_Projects\VCVRack\v1\Rack\plugins\monome-rack\firmware/whitewhale/libavr32/src/init_trilogy.h:8: first defined here
collect2.exe: error: ld returned 1 exit status
make[1]: *** [whitewhale.mk:56: ../res/firmware/whitewhale.dll] Error 1
make[1]: Leaving directory '/c/_Projects/VCVRack/v1/Rack/plugins/monome-rack/firmware'
make: *** [Makefile:41: firmwares] Error 2
https://github.com/monome/kria
https://llllllll.co/t/kria-0-3-initial-release/2409/29
Tasks:
Changes to the Rack API between 0.5 and 0.6:
https://github.com/VCVRack/Rack/issues/258
After 0.6, there should be no additional API changes for 1.0. Not sure where I got that idea.
git status
git submodule status
make clean
make
process_timers()
get_ticks()
White Whale patterns are saved to flash memory using the front-button interface, but the glyphs are not.
Currently, only modern varibright grid 128 models are supported, for both virtual and real grids. (A real varibright 256 will work, but will only use the top half.)
Rough order of priorities:
Linux Fedora 23
Rack 0.5.0
monome-rack builds cleanly on Linux and instantiates in Rack without trouble. Rack crashed when I deleted the virtual monome but I think it's an unrelated issue (Rack crashes occasionally with deleted modules). Since the current graphics are incomplete I have no clue what to do, I'll look up the specs for the White Whale sequencer and see if I can figure it out. Anyway, very cool project, thank you for the neat new modules. :)
Goals:
VCV Rack 2.0 API changes to react to:
process()
methods will run in the audio thread. This could end up being somewhat disruptive.VCV Rack 2.0 features to take advantage of:
Migration guide:
https://vcvrack.com/manual/Migrate1.html
No performance analysis has been done. Changes were made with intent to be efficient, and initial testing sounds good, but no deep study of the timing or the CPU utilitization has been performed yet. There is likely room for improvement.
When Rack's thread count is increased past the default of 1, virtual grids will likely crash, because the module-module communication system used by the virtual grids was not designed to be thread-safe.
See here for discussion of potential options:
https://llllllll.co/t/ww-mp-es-in-vcvrack/10337/85
The 0.6 branch supported both modern grids (mext protocol varibright) and older non-varibright models, but support for older protocols was somewhat tenuous since I don't have easy access to physical devices. The new connection system for 1.0 necessitated changing the way grid detection works, so this support has been removed until it can be reverified.
Separately, for the virtual grids, the new Rack library preview makes having separate varibright and series models in the library less desirable. The new plan is to have a single module per size, but add a right-click menu option to pick the protocol to emulate (and also the LED color?)
Linux Fedora 23
Rack 0.5.0
latest git pull of monome-rack sources
added cstdarg and cstring includes to firmwaremanager.cpp for GCC 5.3.1 to avoid errors with va_* and strncpy calls
added -fPIC to whitewhale.mk FLAGS to avoid this error:
g++ -o ../build/firmware/whitewhale.so ../build/firmware/whitewhale/src/main.c.o ../build/firmware/whitewhale/libavr32/src/events.c.o ../build/firmware/whitewhale/libavr32/src/timers.c.o ../build/firmware/whitewhale/libavr32/src/monome.c.o ../build/firmware/whitewhale/libavr32/src/util.c.o ../build/firmware/mock_hardware/adapter.c.o ../build/firmware/mock_hardware/mock_hardware.c.o -shared
/usr/bin/ld: ../build/firmware/whitewhale/src/main.c.o: relocation R_X86_64_32 against `flashy' can not be used when making a shared object; recompile with -fPIC
../build/firmware/whitewhale/src/main.c.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
whitewhale.mk:49: recipe for target '../build/firmware/whitewhale.so' failed
make[1]: *** [../build/firmware/whitewhale.so] Error 1
make[1]: Leaving directory '/home/dlphilp/src/Rack-050/plugins/monome-rack/firmware'
Makefile:37: recipe for target 'firmwares' failed
make: *** [firmwares] Error 2
Virtual grid modules do a lot of drawing. Would probably be more efficient to draw the grid to a framebuffer and then only re-render changed lights every frame.
Windows 10 x64
Rack 1.1.6
I begin by initializing some things, like O maximum and pattern length on live mode:
PN.END 0 7
O.MAX 7
So, I type in a script on teletype that addresses pattern 0 and returns a pulse on 1, for instance:
PN.I 0 O
CV 1 N PN.HERE 0
TR.PULSE 1
The thing that happens is that when this script is called, it's called twice per pulse cycle. With a square wave you can see it advancing at double the tempo when you go to the pattern table screen. When varying the incoming pulse width you can also see that it offsets every other script call off the initial cycle tempo.
I am out of the loop when it comes to whether the real Teletype did this, but it sure doesn't sound like it does.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.