Return to index
Clone: git clone https://git.spwbk.site:3000/swatson/modmark.git/


Table of Contents


1. [Modmark](#org18831d8)
1. [Current Status and Goals](#org926a523)
2. [Purpose](#org0463441)
3. [Syntax](#org004fef7)
1. [A Module File](#orgb5658bc)
2. [A Patch](#orgf298aea)




Modmark


This repo encapsulates an attempt to develop a markup language for describing modular synth patches.

In future, this scope may be expanded to make available a language for describing arbitrary audio and
data routing across a wide array of devices.




Current Status and Goals


This software is currently a prototype. Right now the "compiler" is a Perl script that translates a
`.modmark` file into a flowchart via Graphviz.

A rough road map looks something like:

- [X] Prototype compiler in Perl
- [ ] Test and stabilize syntax/grammar/prototype compiler
- [ ] Bug with connections where similar connection names are not resolved properly,
resulting in duplicate or merged connections
- [ ] Clean up module naming, should support `-` chars, possibly other chars
- [ ] Implement modmark as a source-to-source compiler in Racket ( "Real" implementation )
- [ ] Implement `import as` semantics for brevity
- [ ] Implement `import Module::MakeNoise::*` semantics for brevity
- [ ] Implement importing specific module revisions, ie: `import Module::MakeNoise::Wogglebug::Rev1`
- [ ] Standardize input/knob labeling semantics:

- Input: Foo
-- Position: [1,12]

- Knob: Foo
-- Position: [1,12]

# Currently both of above "compile", and work as expected, in the case where a
# module parameter has both a knob and an input. It may be better to only have one way?
- [ ] Develop libraries for as many modules as possible




Purpose


In the past I've found it difficult to discuss discrete details of modular patches on the internet. This
arises, I believe, from the large amount of effort and time it takes to describe the intricacies of a modular
patch in long form plain English. This prototype language is an attempt to address that problem.

By specifying a concise syntax that favors brevity over absolute human-readability, the hope is to get more
modular synth users to document their patches and enable more knowledge sharing across the community.

I know of one other attempt to solve this problem: https://github.com/SpektroAudio/Patchbook

My problem with Patchbook is that it still requires a lot of "boilerplate", in that you have to specify
modules yourself. Modmark aims to offload this task by having the community describe modules in a Library format
(`.module` files) that can then be imported. In this way, we can specify a module *once* and then not have
to do that work again the next time we'd like to use it in a patch.




Syntax





A Module File


[Make Noise Maths](./module_lib/maths.module)




A Patch


[Example Patch](./patches/example.modmark)

Files for modmark.git/

FileCommitRaw
.gitignore756b22fa2df7dd42740cf29cfc6444ea3e1bc1c4raw
README.md317fb08025ae44f704d41117bf942db544d89c12raw
README.orgb6ab5a3b978b043744890b31e4ffbf4290e5eea9raw
module_lib/a-110-4.module0f9fe74095640b9b8c3b0d21a0610b582f5ee9e2raw
module_lib/a-156.modulecc0deaeb678cc2703c88c811fa4e59ee7161634eraw
module_lib/a-185-2.moduled873261c7f65bdbec110b0eaf022bd8e5534a9c0raw
module_lib/asteroid_op.module04808c29213aa53715dc42d57dec65bebeec4d91raw
module_lib/foo.modulea6332db6a15540f5b412ad2f9e2bad385587840fraw
module_lib/make_noise_function.module47e3105963e15f09fe94be437e48ba01c8517ffaraw
module_lib/maths.module66ac059bd81364977713d633fd0d58138e64a08braw
module_lib/tangle_quartet.module0735eeb97947f80b55ef951703043fa6ee9a7111raw
module_lib/tempi.module99ecac092bbe8a623e536177f407dfc4bc1d7888raw
module_lib/wmd_modbox.module996dd88cc35db4ebaef0070ccd5add54af23db63raw
module_lib/wmd_quad_atten.module669d866f2a52d6d292d6227dea13db7c6e8f2165raw
module_lib/wmd_ultrafold.module6eb8221140b26594723383d50e2743781d076812raw
module_lib/woggle_bug.module328eaa1c9e4683c14467fdfb93655fe586f39169raw
patches/example.modmarkec4a5db7b42c2b0cd8b59f125bc99ed794827a1draw
patches/kick_drum.modmark99c595c8fd4659b9d714763d38f5a9464eba06a3raw
patches/self_ref.modmark8d4a98f3df458fbe87949a70a7357d5507a14fd9raw
pl_proto.pl8de3643a5d674c31cd1a66e9794e8885628003a0raw

Logs for modmark.git/

bd4f2084d716d2008a817f21753cee351c09c931.html
9762547d774da7a19fe50a077095923ec3d55928.html
04171a835dc1207cee1d6f361169363a8c2c541c.html
af10ac01d21c5ca0ee6ba165be99f6b907bd5775.html
4f9507e1fb888b47415a20bb35e6ae2143e43bd0.html
10c8ef08472dfdb4f6a7d93a6cab38f1b698cdf4.html
524ee82cbbc2ee47072ab0d332627c2442aed33c.html
c193ede95fcaa216768bdcf89aee2a71645eeacb.html
11fca779588ed45f0b1d499d4fc759c8610f669f.html
07e40441d5340aaf19e66b02b1c06e18f1037811.html