
GenExpr: The Codebox Operator - mv9
https://docs.cycling74.com/max8/vignettes/gen_genexpr
======
qmmmur
For context to anyone who is not familiar with Max, it is a visual programming
language that connects inlets and outlets of boxes that each have distinct
functions in order to program both simple and complex DSP routines. Gen~ is a
subset of Max that focuses on providing its own set of 'boxes' which can be
hooked together accompanied by its own nuances and quirks that overall aim to
smooth the process of coding complex DSP graphs, particularly with single
sample feedback (provided by the history operator). GenExpr is a text-based
representation of these DSP graphs that allows you to describe the connections
between objects using traditional programming patterns (for, if, while). The
strength is that is still a 'box' and is inter-operable with gen~ code that is
written outside the Codebox.

As a bonus, gen~ can compile to C++ code easily which can be useful for
porting prototypes to standalones, VST's or embedded.

------
skrebbel
I have no idea why this is on HN, but for context: this is tech docs of Max,
which is kind of a meta-music software. Just like Roblox lets you relatively
easily make 3D games, Max lets you relatively easily make VST instruments and
the likes.

At its core it's a visual programming language and it's been around very long,
pretty well known in music circles.

[https://cycling74.com/products/max](https://cycling74.com/products/max)

------
imglorp
> GenExpr is the internal language used by gen patchers.

Great, what's a gen patcher? Go up a level, looking for context.

> Max Online Documentation

Great, what's Max? Still no context, but something about music. Here's a clue
from midi.org

General MIDI's most recognized feature is the defined list of sounds (or
"patches").

~~~
skrebbel
This is a deeplink into technical documentation, what did you expect?

This is like complaining that the Java ClassLoader reference doesn't begin
with "Java is a high level programming language which lets you yadayadayada".

~~~
eythian
> This is a deeplink into technical documentation, what did you expect?

I think better question would be: why is a deeplink into technical
documentation without context being posted here?

> This is like complaining that the Java ClassLoader reference doesn't begin
> with "Java is a high level programming language which lets you
> yadayadayada".

It's more like complaining that a link the Java ClassLoader reference was
posted on HN with nothing explaining what it is or why it's
interesting/relevant.

------
twic
> These objects analyze the expressions written in them and automatically
> construct the the appropriate number of inlets and outlets

Like Python-style implicit variable declaration, but for parameters! In pure
text, this would be hairy, but in a graphical language, i suppose it's obvious
when you've accidentally created an extra input with a typo.

