README.org
1	
2 * Modmark
3
4 This repo encapsulates an attempt to develop a markup language for describing modular synth patches.
5
6 In future, this scope may be expanded to make available a language for describing arbitrary audio and
7 data routing across a wide array of devices.
8
9 ** Current Status and Goals
10
11 This software is currently a prototype. Right now the "compiler" is a Perl script that translates a
12 =.modmark= file into a flowchart via Graphviz.
13
14 A rough road map looks something like:
15 - [X] Prototype compiler in Perl
16 - [ ] Test and stabilize syntax/grammar/prototype compiler
17 - [ ] Bug with connections where similar connection names are not resolved properly,
18 resulting in duplicate or merged connections
19 - [ ] Clean up module naming, should support =-= chars, possibly other chars
20 - [ ] Implement modmark as a source-to-source compiler in Racket ( "Real" implementation )
21 - [ ] Implement =import as= semantics for brevity
22 - [ ] Implement =import Module::MakeNoise::*= semantics for brevity
23 - [ ] Implement importing specific module revisions, ie: =import Module::MakeNoise::Wogglebug::Rev1=
24 - [ ] Standardize input/knob labeling semantics:
25 #+BEGIN_SRC
26 - Input: Foo
27 -- Position: [1,12]
28
29 - Knob: Foo
30 -- Position: [1,12]
31
32 # Currently both of above "compile", and work as expected, in the case where a
33 # module parameter has both a knob and an input. It may be better to only have one way?
34 #+END_SRC
35 - [ ] Develop libraries for as many modules as possible
36
37 ** Purpose
38
39 In the past I've found it difficult to discuss discrete details of modular patches on the internet. This
40 arises, I believe, from the large amount of effort and time it takes to describe the intricacies of a modular
41 patch in long form plain English. This prototype language is an attempt to address that problem.
42
43 By specifying a concise syntax that favors brevity over absolute human-readability, the hope is to get more
44 modular synth users to document their patches and enable more knowledge sharing across the community.
45
46 I know of one other attempt to solve this problem: https://github.com/SpektroAudio/Patchbook
47
48 My problem with Patchbook is that it still requires a lot of "boilerplate", in that you have to specify
49 modules yourself. Modmark aims to offload this task by having the community describe modules in a Library format
50 (=.module= files) that can then be imported. In this way, we can specify a module /once/ and then not have
51 to do that work again the next time we'd like to use it in a patch.
52
53 ** Syntax
54 *** A Module File
55 [[file:./module_lib/maths.module][Make Noise Maths]]
56
57 *** A Patch
58 [[file:./patches/example.modmark][Example Patch]]