Teletype Studies for Max (including "homework")

In the “New to Max?” thread, I mentioned that I’m challenging myself to port some of the Teletype Studies over to Max. I’ve typically used Max as a DSP prototyping environment along with occasional visual experimentation. I’ve neglected using it for compositions. In the same vein, I’d like to train myself to write smaller Grid/Arc programs and merge my Eurorack system more with my computer instead of letting it fill up with underused hardware.

So here’s my thought… I’ve already written the basic code for Jumpy Edges (Teletype Studies #1). Instead of doing this in a vacuum, let’s turn this into a fun community learning experience and squeeze as much as we can out of minimal starting points. The LCRP and Disquiet Juntos are great community projects, especially because they enforce basic restrictions while providing inspirational foundations. My thought is that we can take this code and grow it individually with similar goals.

I consider myself to be a Max expert, so I’m going to provide simple ideas for homework assignments. We’re going to start with a silent patch, add a control interface to it, add sound, and then maybe make compositions and put together a community playlist. Maybe we’ll get to TT Studies #2 quickly, or maybe this will turn into a more rambling journey.

Here’s the foundation code:

----------begin_max5_patcher----------
1643.3oc6b00aqhCD84jeEHdtak+fux91Js+KptJhDbScWBf.mdS2qt+2WiM
jBjPpSwAR55WnpiAy4LLyXOGA4WymYuJcOov15OsdxZ1reMe1LgoRCyp9+Y1
aC2uNNrPbZ1aIEEgaH1OHGiQ1yD1wHPssB16wDgwZKI61RShILwTfpLlExV+
BMYyxbxZlDBdX+GAOXA88J+CFVdDgdDX8ipqgFIl2zUu9Gd9Ml8zcr5oGVYU
Zh8dFQN211V+nbjeOed4gGFJeCzAeANpyW2IkuNNZfut9P04KdR4qKPG7EGn
NegSJeQ5H+0I.nLecWLo7Epi3YGn54utSa8JnNpW43nd8Y2osdETG4u3.0qW
4NN0qVmtcKIgcDeyRyYjHqmyS2ZwH76D+FYUv1EQIEVPEcEvyTJaQI4cwB+g
m3ePfd7D8TICnQ595tsYuaQh1v28hl3l7wKzEbNt4rPebKg7S9Td7SRKV5l+
lDG9d+LKKmTvcKgLZZRy7Srq.7PwxNfpCG3gxo4XQ7NxUTcyK3bg8NegxZMu
yj7JOTkKZl8yzXxaj7BN0ZLQyrCyxZXdViKozu9ZpXh7e3fIZhzD9fobxaz5
qGcvZXNm+LN42kKcx6C7r+XZRiH4I6nBnHMxeBOudBaGBAAh7COGgqWrZXMa
4ACahSW+ODgqCTaLMijPSZ93r0vQjmC2EyV9bZBqf9uB7A4OIN03OGtlz6Em
DtURt+JmFFWSO6M4znzjRPzxUWZt918DOkPlXzjLhyHIL6DWLOpf6V5YvBNI
2UrJLu7IwJYTc8iBaVZZb6gNbcwjmYUCmQSR53EYoY8OXNcyKm4ZWkxGb64l
awHEK2kHGcIOAlsrH7s1daVXbbUFc6oeeXBcaHivnxGAHvgAIIgbh9Rw57z3
3V7UNxamXjHdP7ZxOoQrWD2nlAC7SmlUGDYe3obDkWlj01FKbSQaKGUkgaZ2
ppjzkLx1rXNKZeBsZerYFYyZesr2oFnr7vgzsSBi9Jk2W4KXfntERtYELn93
gn2NkvVz4F0rrdiQpWJpKznIQj8MJOTsNPUkhuneo81ZZu.A3BcWny6tpVs.
5KW6Xwitsq120cEzu6p4Cl91uyH3ff50AUEOorCx6lvAIn2E5H.JEo3ATKux
4q6GtjzNzssSqJ5QUmF9K5zVElr4Bcb5rdUq8x1NaLpbqrVN.cW1BH2xkbup
d3taR8nnwA5YOgy5isCESS5acPAzKG+zdwhzc4qquUUA.VsIAeccFM4vlCe5
PUlNm2KznHRR2PxHZQ4VIh5ZOMORt2a0BCtTZ3nJOB9J735.YEQrfZvaBHiu
DHqknkqCO7TjGKtYBVBFYDWU.pt2S6x9OhVJ60ZYHikSWsiIqA0rY5Kpm.dC
pqBiq1w+gNFOWCBezEw7Ov6jKCB1SpeAzePxfTOMJIChmQFDiLHFYPLxfXjA
wHChQFDiLHFYPLxfXjA4to+p+O1C62E0CtCEt4NTdraBgIMxfntLHnERIKfK
FjLHnEWfLHtFYPLxfXjAwHChQFDiLHFYPLxfXjAwHChQFDyaCh4sAwnmi4sA
w71fbEkAQYAMP9pKngiQPCifFFAMLBZXDzvHngQPCifFFAMLBZXDzv7dcXdu
NLuWGl2qCy60wmInAG2LN5F9ORIAUKHH0qvo93IUs.cgpVzXQfIhdU+linF8
.2czq5knQI5gCt6nG7RnmynQOV5lMwDMPOGw9uvJQuOI2KKLmW5gQxWJEAoQ
YxioNsbCtSJykpioFyAemXdfuxDGE7ch3U+ZXoDw8tEHt1JhIyxUpHFx49qF
ckP2JQu6uMPHyWUic2e6evU8M+AG91GDSa6t9kjsauEUT93dl8a1rPess42r
ssi6l33deNx4qLdbUAOdiGdvpfG2wCOPUviyngmxFX9T7zIH6SvSczeKIKtx
.zcH.DNB.DOD.hFA.BGB.wCCf.E.n6hILFTI.NkwfJAP+ILFTI.hmtXvNgWS
95nt2Xqi55easNpK91ZcTbfpwOSTML0.n2zUCSM.5Ng0vTIE.itD.NL73oBd
.iGdTojEJX7viiJ3wazviZA3NS2ZfXGsGfq4ZXNZOhWy0vbzdJfdqgg0eNgd
iAQWe.Bu9.bJSRPnuE.bByhQfqN.AWe.NrxLCyCBCt5.DLB.TakYjx714COn
Dac9fC57wFb7GZP+ejAc+.C324eO++vzLe4M
-----------end_max5_patcher-----------

Here are some ideas for homework, some of which I will tackle tonight (no due date):

  • Add a basic control interface for Grid. I have a Grid 128, but this is a great patch even for a 64. Do I make use of the extra real estate? Which way do I orient the grid? My basic design idea is that 8 buttons on the top should trigger the “scripts”, while 8 buttons at the bottom show the toggle states. The bottom buttons can be used to manipulate the toggles directly.
  • Add a beating heart. How many metros do we need? In what way should the Grid interact with the metro objects? What is the metric relationship between metros?
  • Right now, the gate delay patchers (p togDelay) are four copies of the same patch. As this is reusable code that directly mimics the Teletype’s TR.PULSE, this patch should be saved separately, possibly as an abstraction.

In other words, your homework:

  • Add a control interface. Make it your own. It doesn’t need to be a Grid. You can make use of Max’s interface objects, MIDI, OSC, piezo mics with comparators, or whatever you want.
  • Add one or many clocks. Make it your own.

Post here when you need help or when you want to share your patch.

13 Likes

this is so cool

i’ll what I can do with this after looking it over

Thanks! Here’s my first draft of the control schema:

2 JumpyEdgesWithControl.maxpat (66.5 KB)

Nothing too complicated here. When the Grid is connected, it routes the /sys/prefix message to a message to light up the first 8 buttons in the top row. These buttons trigger the “scripts”. The toggle states are indicated on the bottom row. The toggles can be interacted with directly.

Let me know if you have questions regarding how I’m using Max to parse messages, why I’m using zl.rev, etc. If this is your first Grid patch, note that the drop-down menu used to connect to the Grid is part of BEAP. It can be found at BEAP->serialosc->bp.serialosc.maxpat.

1 Like

[select 0]?

20 chara

1 Like

There’s no “essential” TT functionality that needs to be maintained in your sketches. I’m just using each TTStudy as a jumping-off point for exploring composition ideas. In this case, the focus is on small, predictable toggle behavior having complicated, unpredictable interaction.

The main reason to use toggles at this point is as a cheap version of gate width. In the original video (http://monome.org/docs/modular/teletype/studies-1/), take a look at the row of yellow lights visible on the Teletype. These are the outputs from this sketch, and you can see that they’re gates of variable width. If you don’t have use for variable width gates, then by all means change the sketch to suit you!

If you do go the route of triggers, there are a few things to keep in mind:

  • The seventh and eighth “scripts” (input bangs) deal with changing the width of a pulsed toggle (pulsed by script 6). You could safely remove/change these scripts in your own sketch if you are only dealing with triggers. Maybe turn them into burst generators?
  • Analog and digital modules behave differently with input triggers. Analog modules respond to just about anything, but digital modules need a trigger wide enough to be caught within their input’s sampling rate. If you’re running into trouble triggering modules off of bang, post here.

@trickyflemming awesome idea for studies!

A tiny detail I’ve been a little hung up on in a few other patches I’m working on. Regarding the “—” in the send / receive objects, I had assumed this limited the scope of the send/receive to a window and its subpatches, but I can’t really seem to get that functionality to work. I’m getting the same behavior in your patch where if I make another window w/ a corresponding send/receive messages are sent there as well

that’s not to say it impacts the functionality of the patch in any way,
just curious what i’m missing here


they are mentioned at the bottom of this page, but it kind of sounds like they may only work in M4L? am i misreading or is it perhaps just best practice?

thanks!

Good question! Yes, I believe it’s M4L only. I’m in the practice of always using the “—” just so I can port something over to M4L quickly if I want. It’s definitely not required for a patch to work.

1 Like

Sweet! That makes a lot of sense re: porting to M4L quickly

Nice! This already looks like a great start. I’m not near my synth at the moment, but visually the trigger outputs already look pretty fun. Do you have any audio from it?

Here’s a little sketch. This seemed like a good excuse to tinker with the Lowkey.NW granular stuff (in the package manager).

A bunch of metronomes trigger the bangs in the foundation patch. The toggles become on/off switches for four grainstreams.

Grain start position and grain rate are chosen randomly by some weighted probability switches. The grain position is further modified by an audio rate LFO.

It should start when you load it up. Loading in your own sound should work too.

Let me know if anything seems broken…

TTOne.zip (20.8 KB)

2 Likes

All, thank you for starting this category. It and the Lines site in general are intriguing.

I’m new to Max, modular, and very rusty at music. I have Max and am enjoying it as well as currently saving up for an ES-8.

2 Likes

@sellanraa and @_mark, love the patches so far! I’m going to be more active on this thread over the weekend.

I had a fun idea for a “universal” controller for these Teletype inspired scripts. The top left 8 buttons trigger the scripts as they currently do. The bottom left 4 buttons show the state of four toggle outputs and can also be used to manually toggle those outputs. I think the next 4 buttons should show the state of four CV outputs and should be used to mute those outputs.

My main design thought right now is how to do clocks. My thought is that the row below the script triggers should reset eight individual clocks. The five empty rows below the clocks should change the speed of each clock using a slider interface. My fear is that this is not enough resolution.

This leaves an 8x8 area on the right half of a 128. I’m thinking of calling this the Metro Matrix, or Metrix for short. Here, you can decide which clocks are attached to which script. For instance, if I activate the top left toggle, it will route clock 1 to script 1. If I activate the toggle below that, it will also route clock 2 to script 1. That way, it could be triggered using the OR of those two clocks. That being said, perhaps it needs a “rule” page (OR, AND, XOR) for the clocks.

Blah, blah, blah. I think I may be getting ahead of myself by overdesigning the control interface before the instrument itself :wink:

1 Like

Here’s Teletype Studies #2: Copycat Flips

1 Copycat Flips.maxpat (24.7 KB)

If the interval calculations are incorrect, let me know! I converted from 0-10V to 0-1.0. I haven’t had a chance to test this with the ES-8, but this should work fine.

My Jumpy Edges patch ended up falling apart as I tried to make it too complicated. I’m going to focus on creating more of these jumping-off points for everyone to use.

Two more:
2 Copycat Flips Fixed.maxpat (24.8 KB)
3 Viking.maxpat (33.9 KB)

A) I changed my numbering scheme for the files.
B) I changed the way the notes for Copycat Flips are calculated based on reading more into V/Oct calculation schemes. Again, it may be incorrect.

Viking is Teletype Studies #3. Lots of variations on randomness!

EDIT: And here’s Slow Reader (TT #4):
4 Slow Reader.maxpat (26.8 KB)

EDIT #2: And here’s Dolphin and Seagull (TT #5):
5 Dolphin & Seagull.maxpat (31.5 KB)

1 Like