Coder Social home page Coder Social logo

bpcmusic / teletype Goto Github PK

View Code? Open in Web Editor NEW

This project forked from monome/teletype

1.0 2.0 0.0 2.63 MB

monome eurorack module

License: GNU General Public License v2.0

Makefile 3.09% Shell 0.08% C 87.44% Awk 0.06% C++ 0.77% Ragel 5.44% Python 1.91% CSS 1.22%

teletype's Introduction

teletype

Build Status

monome eurorack module

http://monome.org/docs/modular/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.

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

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 utils/op_enums.py to generate this file using Python3.
  • 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.

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 shouldn't format any code in the libavr32 submodule.

Documentation

In order to build the documentation you will need Python 3.6, 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 (or MacTex).

On OSX the dependencies can be installed with brew.

brew install python3
brew install pandoc
brew cask install mactex  # warning, MacTex is a very large install!
cd utils
pip3 install -r requirements.pip

On Linux I would suggest using your package manager to install all the dependencies (including those in the requirements.pip file).

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

teletype's People

Contributors

samdoshi avatar tehn avatar bpcmusic avatar scanner-darkly avatar ngwese avatar tambouri avatar gonecaving avatar pq avatar bensteinberg avatar kisielk avatar catfact avatar

Stargazers

Eike avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.