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

Great idea. Thank you for taking the time :slight_smile:

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

So, I’m having an issue and it’s probably easy to resolve, but I can’t quite wrap by head around how to.

I’m trying to get this ‘sequencer’ of sorts to output a trigger for my modular (via a bang) rather than a toggle, but it responds to both the initial bang and the delayed bang. Is there any way to sort that out? I get that it’s going to respond to both the 1 and the 0 message. How could I filter the 1 message out so it only is outputting the delayed bang without rewiring the little subpatch? I’m trying not to mess with that in case it’s core to the concept, but toggles aren’t as useful for my idea of interfacing with my modular via ES8.

Anyway, I’ve got some ideas flowing, just not sure how much I can mess with the initial patch before it becomes different from what makes it a Teletype patch (which I know very little about).

TT_Studies_1_doublebang.maxpat (33.3 KB)

[select 0]?

20 chara

1 Like

Ha, this is why I need help from others and appreciate it so much. Even when it’s obvious stuff, my brain just misses stuff as I build my familiarity. Thank you.

TF, I’d still be curious what you consider ‘essential’ to maintain the Teletype functionality. Does it have to include the toggles? Is that how you imagine a ‘gate’ being sent from the Teletype? Can it send trigs (bangs)?

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

OK, here is my first step, which I’ll share in case it sparks ideas for others. The main thing I wanted to fiddle with was integrating a multislider as a sequencer since I have so little experience with that object. So I put in 4 different 4 step sequencers to sequence the delay of each output.

I haven’t developed any sort of external control component yet, but I may do that later this afternoon if something interesting and meaningful appeals to me. My main idea was to learn more about the multislder by perhaps having 4 signals from my modular write the sequencer delay levels, but I’m just trying to make sure it’s actually more than an arbitrary signal.

Right now I just have been playing with the 4 trig outputs pinging 4 voices of Just Friends in the LPG mode :slight_smile:

TT_Studies_1_ES8_v1.maxpat (51.8 KB)

2 Likes

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?

I’ve only tinkered a bit, but am already working on a variation emphasizing math where the 1st seq is the master and the 2, 3, and 4 are just based on that one through basic division/multiplication.

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

The above patch of mine has an error as I should have a sel 0 object for each output rather than just one. But I figured I’d upload a variation with my ‘math’ oriented approach here - I’ve just been really fixated on systems that are more interrelated.
TT_Studies_1_ES8_v1MATH.maxpat (54.2 KB)

OK, final version for the day, I put in 4 inputs for the 4 ins of the ES-8 to control the 4 steps of the master seq. All ears for critiques, but it’s certainly been fun to think about :slight_smile:
TT_Studies_1_ES8_v1MATH ADCinput.maxpat (65.0 KB)

1 Like

I’m pretty clueless on the granular side of things in MAX - so I look forward to taking a look!

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

Welcome. Hopefully more will chime in and throw out ideas, but I’m already having a blast with the Max discussions here.

I was talking to Karl (analogue01) about how much I really kind of need people to keep me firing on the software stuff. If I don’t have people to spitball with and push me in different directions I think I feel more overwhelmed. I hope there are more Teletype studies to come or more discussions about this 1st one. The ES-8 is a revelation and I’m gradually honing in on how to use it. Mark has made me totally rethink how I approach my core ideas, which has given me a lot to chew on, but I’m also thankful I can just lift his beautiful design because it so skillfully does what i was trying to do. :slight_smile:

3 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