Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Emulate the Teletype module #11

Open
Dewb opened this issue Dec 6, 2017 · 8 comments
Open

Emulate the Teletype module #11

Dewb opened this issue Dec 6, 2017 · 8 comments
Labels

Comments

@Dewb
Copy link
Owner

@Dewb Dewb commented Dec 6, 2017

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

Work is in progress in the tt2020 branch. Builds here:
https://github.com/Dewb/monome-rack/releases/tag/experimental

TODO:

  • Create module and widget definitions
  • Emulate OLED screen
  • Handle keyboard input when the screen is clicked in rack
  • Pass keyboard events to firmware as HID frames directly to process_keypress
  • Alphanumerics, function keys, arrow keys, tab, function keys, minus/equals/period, backspace
  • Shift/Ctrl/Alt/Meta modifiers
  • Remaining special keys
  • TR outs
  • CV outs
  • Trigger ins
  • IN CV input
  • PARAM knob
  • M Metro
  • Script execution and editing
  • Pattern editing
  • Save NVRAM to patch -- may depend on potential upcoming Rack patch extended data storage proposal
  • Save VRAM to patch
  • Test all 2.1.0 ops
  • Make sure i2c ops fail gracefully
  • Finalize panel graphics
  • Update Teletype firmware to 3.2.0
  • Test grid ops and grid interaction
  • Test other new 3.x ops
  • Run through all Teletype Studies
  • Fix bugs, address unknown unknowns

teletype-rack-1

@Dewb Dewb changed the title Teletype module Emulate the Teletype module Dec 6, 2017
@phdsg
Copy link

@phdsg phdsg commented Dec 6, 2017

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

@phdsg
Copy link

@phdsg phdsg commented Dec 7, 2017

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
Copy link
Owner Author

@Dewb Dewb commented Dec 7, 2017

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.

@Dewb Dewb added the New feature label Dec 7, 2017
@davephillips
Copy link

@davephillips davephillips commented Dec 8, 2017

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
Copy link

@davephillips davephillips commented Dec 9, 2017

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 Dewb added this to Version 2 in Release plan Dec 9, 2017
@Dewb
Copy link
Owner Author

@Dewb Dewb commented Dec 9, 2017

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
Copy link

@davephillips davephillips commented Dec 9, 2017

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 Dewb moved this from Version 2 to Version 3 in Release plan May 31, 2019
@Dewb Dewb moved this from Version 3 to Version 2 in Release plan May 31, 2019
@Dewb Dewb moved this from Version 2 to Version 1.1 in Release plan May 22, 2020
@Dewb
Copy link
Owner Author

@Dewb Dewb commented Jul 13, 2020

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 Dewb moved this from Version 2 to Version 1 in Release plan Jul 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Release plan
Version 1
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants