• Stars
    star
    199
  • Rank 196,105 (Top 4 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created over 8 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

monome eurorack module

teletype

monome eurorack module

http://monome.org/docs/teletype

Directories

  • src: source code for the teletype algorithm
  • module: main.c and additional code for the Eurorack module (e.g. IO and UI)
  • tests: algorithm tests
  • simulator: a (very) simple teletype command parser and simulator
  • docs: files used to generate the teletype manual

Building

See the libavr32 repo for more detailed instructions. You will also need ragel installed and on the path, see below.

Alternatively, if you have Docker installed, you can quickly get building with a Docker image that has all the dependencies set up:

git clone --recursive --config core.autocrlf=input https://github.com/monome/teletype
docker run --rm -it -v"$(pwd)/teletype":/target dewb/monome-build bash
make

The reasoning behind these options:

git
  --recursive                   # clone libavr32 and unity submodules
  --config core.autocrlf=input  # if on Windows, avoid adding CRLF line endings that can break compile scripts

docker
  --rm                          # delete the container after exiting it
  -it                           # keep stdin attached, allocate tty
  -v"$(pwd)/teletype":/target  # mount the ./teletype directory at /target inside the container

Make sure that the libavr32 submodule is correctly checked out

cd module
make clean
make
./flash.sh

Tests

To run the tests:

cd tests
make clean  # only needed if you've built the module code
make test

In the case of line ending issues make test may fail, in this case make tests && ./tests might work better.

Ragel

The Ragel state machine compiler is required to build the firmware. It needs to be installed and on the path:

brew install ragel  # Homebrew (OSX)
apt install ragel   # Debian / Ubuntu / WSL (Windows 10)
pacman -Sy ragel    # Arch Linux / MSYS2 (Windows)

Version 6.9 is known to work.

See section 6.3 in the Ragel manual for information on the => scanner constructor used.

Adding a new OP or MOD (a.k.a. PRE)

If you want to add a new OP or MOD, please create the relevant tele_op_t or tele_mod_t in the src/ops directory. You will then need to reference it in the following places:

  • src/ops/op.c: add a reference to your struct to the relevant table, tele_ops or tele_mods. Ideally grouped with other ops from the same file.
  • src/ops/op_enum.h: please run python3 utils/op_enums.py to generate this file.
  • src/match_token.rl: add an entry to the Ragel list to match the token to the struct. Again, please try to keep the order in the list sensible.
  • module/config.mk: add a reference to any added .c files in the CSRCS list.
  • tests/Makefile: add a reference to any added .c files in /src, replacing ".c" with ".o", in the tests: recipe.
  • simulator/Makefile: add a reference to any added .c files in /src, replacing ".c" with ".o", in the OBJS list.

There is a test that checks to see if the above have all been entered correctly. (See above to run tests.)

Code Formatting

To format the code using clang-format, run make format in the project's root directory. This will only format code that has not been commited, it will format both staged and unstaged code.

To format all the code in this repo, run make format-all.

Documentation

In order to build the documentation you will need Python 3.6 or greater, Pandoc, as well as the Python libraries specified in the requirements.pip file. In addition, to generate the PDF output you will also require TexLive, TinyTeX, or MacTex.

On macOS the dependencies aside from TinyTeX can be installed with brew.

brew install python3
brew install pandoc
cd utils
pip3 install -r requirements.pip

To install TinyTeX on macOS, as well as the titlesec package that pandoc needs, do the following.

curl -sL "https://yihui.org/tinytex/install-bin-unix.sh" | sh
tlmgr install titlesec
fmtutil-sys -all

As opposed to TeXLive or MacTeX, TinyTeX is "only" a 105MB install. (Note: fmtutil-sys will produce copious output.)

On Linux I would suggest using virtualenv to install all the Python dependencies (including those in the requirements.pip file), and to ensure that the python3 binary is version 3.6 or greater instead of the default of your distro.

To generate the documentation:

cd docs
make               # build both teletype.pdf and teletype.html
make teletype.pdf  # build just teletype.pdf (requires TexLive or MacTex)
make teletype.html # build just teletype.html

Making a Release

To create a teletype.zip file containing:

  • teletype.hex
  • flash.sh
  • update_firmware.command
  • teletype.pdf

Run make release in the project's root directory

More Repositories

1

norns

norns is many sound instruments.
Lua
630
star
2

norns-shield

minimal/tiny open-source/DIY shield for Raspberry Pi boards, providing hardware compatibility with the norns ecosystem.
489
star
3

libmonome

makes writing applications for Monomes easy.
C
304
star
4

crow

Crow speaks and listens and remembers bits of text. A scriptable USB-CV-II machine
C
166
star
5

serialosc

multi-device, bonjour-capable monome OSC server
C
146
star
6

docs

monome.org/docs
HTML
127
star
7

norns-image

Shell
81
star
8

aleph

open source sound computer
C
79
star
9

bowery

druid script collection
Lua
75
star
10

dust

norns incantations
Lua
72
star
11

ansible

C
67
star
12

teletype-hardware

63
star
13

norns-community

norns project information, collected
52
star
14

maiden

web based editor and repl for norns
JavaScript
47
star
15

crow-m4l

Max + M4L for crow (monome/whimsical raps)
38
star
16

Terms

max4live bundle
Max
36
star
17

softcut-lib

sample cutting library
C++
35
star
18

druid

terminal interface for crow
Python
35
star
19

monome_sum

max for live & max 6.1 routing & patch management system for grids (+arcs?)
Max
33
star
20

mk

monome kit
C
33
star
21

we

norns/dust: collected and collaborative projects
Lua
20
star
22

40h

C
18
star
23

aleph-hardware

monome aleph hardware sources
17
star
24

softcut-studies

Lua
17
star
25

dsp-kit

dsp utilities
POV-Ray SDL
16
star
26

crow-studies

crow examples
Lua
15
star
27

libavr32

C
15
star
28

monomeserial

serial-to-osc/midi converter for monome devices
C++
14
star
29

linux

monome (norns) branch of rpi linux
C
14
star
30

MonomeHost

Aruduino library for hosting Monome devices
C++
13
star
31

norns-example-mod

example mod for matron
Lua
13
star
32

monomeSC

SuperCollider library for monome grids
SuperCollider
13
star
33

tt-busboard

teletype busboard
13
star
34

ii

ii protocol (i2c for synth modules)
12
star
35

kria

monome eurorack module - alt firmware for white whale
C
11
star
36

earthsea

monome eurorack module
C
10
star
37

monome-max-package

Max
10
star
38

grid-studies-python

Python
10
star
39

serialosc.maxpat

serialosc server for maxmsp enabling connection to monome grids and arcs
Max
9
star
40

monome-processing

monome serialosc processing library
Java
9
star
41

offworld-1

usb power splitter
Eagle
9
star
42

whitewhale

monome eurorack module
C
9
star
43

meadowphysics

monome eurorack module
C
8
star
44

install

installer for grids including monome_sum
8
star
45

grid-studies-pd

7
star
46

monome.github.io

HTML
6
star
47

grid-studies-max

Max
5
star
48

firstlight

norns study zero
Lua
5
star
49

teletype-maxpat

(max) event script typing magic
Max
5
star
50

grid-studies-arduino

HTML
5
star
51

grid-studies-processing

HTML
4
star
52

l.llllllll.co

a url simplifier for the lines library
HTML
4
star
53

mesh

mesh
Max
3
star
54

grid-studies-nodejs

HTML
3
star
55

fledge

crow updater for norns
Python
3
star
56

meadowphysics-maxpat

tangled cascade counter with rapid tactile rule changing
Max
3
star
57

cc-canvas

Lua
3
star
58

serialosc-installers

installers for serialosc
NSIS
2
star
59

norns-studies

Lua
2
star
60

grid-studies-sc

HTML
2
star
61

walk

monome eurorack module
C
2
star
62

grid-settings

norns mod for setting grid intensity and rotation
Lua
1
star
63

norns-event-demo

demonstrate matron custom events from an external module
C++
1
star