Dewb / monome-rack

VCV Rack plugin for monome Eurorack modules
GNU General Public License v2.0
225 stars 13 forks source link

Emulate the Teletype module (phase 1) #11

Closed Dewb closed 3 years ago

Dewb commented 6 years ago

https://monome.org/docs/modular/teletype/

TODO:

teletype-rack-1

phdsg commented 6 years ago

OS: win (mingw64) Rack: dev Plugin: dev (teletype branch) tried to check this out, i get this build error:

phdsg commented 6 years ago

module builds fine. the firmware doesn't.

cd firmware && make -f teletype.mk make[1]: Entering directory '/h/devel/vcv/rack-master/plugins/monome-rack/firmware' make[1]: No rule to make target '../build/firmware/teletype/src/match_token.c.o', needed by '../build/firmware/teletype.dll'. Stop. make[1]: Leaving directory '/h/devel/vcv/rack-master/plugins/monome-rack/firmware' make: [Makefile:38: firmwares] Error 2

when i load the module in rack, console shows this:

[info] Creating new temporary firmware instance at H:\devel\msys64\tmp\s5io.1\monome_vcvrack_firmware.dll [warning] Failed to load library H:\devel\msys64\tmp\s5io.1\monome_vcvrack_firmware.dll: 193

also causes crashes, when rack is autosaving.

[info] Saving patch ./autosave.vcv make: *** [Makefile:57: run] Segmentation fault

leaving a corrupted autosave.vcv that pops up a json error on next rack start.

Dewb commented 6 years ago

The Teletype branch is probably not going to build consistently on all 3 platforms until it gets further along. I’m primarily developing on OS X.

davephillips commented 6 years ago

Linux Fedora 23 Rack master

Just a note to let you know where the Teletype build stands on Linux. Getting closer now. Very exciting stuff you're doing here ! :)

cc -DNULL=0 -o0 -D__AVR32_UC3B0512__ -Werror=implicit-function-declaration -Imock_hardware -Imock_hardware/stubs -Iteletype/libavr32/src -Iteletype/libavr32/src/usb/hid -Iteletype/libavr32/conf -Iteletype/libavr32/conf/teletype -Iteletype/libavr32/asf/common/services/usb -Iteletype/libavr32/asf/common/services/usb/uhc -Iteletype/libavr32/asf/common/services/usb/class/hid -Iteletype/src -Iteletype/src/ops  -c -o ../build/firmware/teletype/module/pattern_mode.c.o teletype/module/pattern_mode.c
In file included from mock_hardware/stubs/conf_usb_host.h:1:0,
                 from teletype/module/keyboard_helper.h:8,
                 from teletype/module/pattern_mode.c:5:
mock_hardware/stubs/compiler.h:1064:0: warning: "__always_inline" redefined
 #define __always_inline     inline __attribute__((__always_inline__))
 ^
In file included from /usr/include/features.h:365:0,
                 from /usr/include/stdint.h:25,
                 from /usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stdint.h:9,
                 from teletype/module/pattern_mode.h:5,
                 from teletype/module/pattern_mode.c:1:
/usr/include/sys/cdefs.h:307:0: note: this is the location of the previous definition
 # define __always_inline __inline __attribute__ ((__always_inline__))
 ^
make[1]: *** No rule to make target '../build/firmware/teletype/src/match_token.c.o', needed by '../build/firmware/teletype.so'.  Stop.
make[1]: Leaving directory '/home/dlphilp/src/Rack-master/plugins-extra/monome-rack/firmware'
Makefile:37: recipe for target 'firmwares' failed
make: *** [firmwares] Error 2
davephillips commented 6 years ago

A little more information for you. The match_token object isn't building because the build apparently wants avr32-gcc as the compiler. Fedora 23 does include avr-gcc, avr-binutils, avr-gcc-c++, avr-libc, and avr-gdb. Alas, as far as I can tell, there's no support for i386, only x86_64. Is the 32-bit compiler required for a Linux build ?

Dewb commented 6 years ago

That's odd. It shouldn't be building with avr32-gcc, it should be using x86_64 like the rest of the plugin (and Rack itself.)

I appreciate the feedback on the teletype branch, but just to warn you, building it isn't going to get you much right now—just the picture you see above. [EDITED: here is the 2017 version of the picture for reference]

screen shot 2017-12-06 at 12 56 59 am

The screen is being drawn by the module code, but without keyboard input and more GPIO work it isn't going to do anything. I'm probably going to put the teletype work aside for a bit to focus on getting the trilogy modules and the grid connections robust and releasable in binary form for everyone.

Here's the release plan: https://github.com/Dewb/monome-rack/projects/1

davephillips commented 6 years ago

Thanks for the response, and no problem, I'll just be checking in now & then to see where you're at with things. I read the release plan, you've got a lot on your plate there. :) Meanwhile I have the monome/whitewhale to learn, so I'm happy to keep busy with that combo.

Dewb commented 4 years ago

The teletype branch has been updated for Rack 1.1.6, and is now functional enough to do basic operations. Experimental teletype builds are available for Windows and macOS on the releases page. Still a lot of nonworking features (see checklist.)

Dewb commented 3 years ago

Metros, most keystrokes, load/save work now. I was able to run through studies 1 & 2 without issues.

davephillips commented 3 years ago

Hi Michael ! I'm pleased to hear about the tt update and I've successfully built the tt2020 branch. Alas, I have a library load problem when invoking the module in Rack 1.x :

[19.791 info src/common/FirmwareManager.cpp:195] Loading module firmware from ./plugins/monome-rack/res/firmware/teletype.so
[19.792 warn src/common/FirmwareManager.cpp:214] Failed to load library ./plugins/monome-rack/res/firmware/teletype.so: ./plugins/monome-rack/res/firmware/teletype.so: undefined symbol: process_keypress
[19.792 warn src/common/FirmwareManager.cpp:262] Could not load firmware teletype

Any suggestions ? I'm now building on Ubuntu 18.04, GCC 7.5.0.

davephillips commented 3 years ago

Problem solved, I updated the firmware submodules, all seems good now. Sorry for the noise.

davephillips commented 3 years ago

I'm running through various tutorials, so far things seem to work like the hardware (which I don't own and have never used). I'm trying to figure how to run scripts, I'll let you know how I fare with it over the next couple of days.

Dewb commented 3 years ago

To run script 1, you can hit F1, send a trigger to trigger input 1, or execute SCRIPT 1 In Live view. This development tracking issue is not the best place to discuss the module behavior in general, your questions and feedback would be welcome in the monome thread on the VCV Rack forum

davephillips commented 3 years ago

Thanks for the info, Michael, and I will join that discussion.