Listen to this stunning composition using Just Type: https://youtu.be/GTuIdIta8Bg

10 Likes

super cool track!
JF is doing the 4 voice chord and mangrove the upper sound?

1 Like

I think so. I wish I was the author of the track. I am only an admirer.
I just put in my order for a TeleType myself (already have a Just Friends), see if I can make equally beautiful pieces of music!

1 Like

Actually, if you look into the comments, the author has written a bit of a patch note about the piece. The chords are Just Friends reading through 4 Teletype patterns.

paging @ellips_s. beautiful stuff.

2 Likes

hi hi hi everyone. thanks for all the kind words on the piece, thanks to @dan_derks for bringing my attention to the discussion happening here, and thanks to @nschutten again for the kind words and sharing it in this thread. feeling very humbled and blessed to be a part of this great community :purple_heart:

some background: my musicianship was developed on the guitar, which remains to be my go-to instrument for composition. i love open, drop, and spread voicings, which are so easy to do on the guitar, but without the combo of just friends and teletype, incredibly tricky on modular (assuming you even have the number of oscillators, vcas, envelopes to acheive basic polyphony anyways). simply put, the power of these two modules is just so incredible and inspiring.

as i said in my comment on the video, and what others have figured out, they are four voice chords, with each note being called from it’s respective tt pattern. the other trick here is using one trigger to advance the four patterns, but using delay prefixes to call the other voice scripts. this is how i get the guitar inspired “strumming.” the idea and implementation of this is so simple, but the effect is so profound that this is probably my favorite modular-only composition to date. i’m glad you all are enjoying it too.

although this is a thread for just type, for reference of what else is happening: one mangrove + my trusty delay pedal is the high melodic line, another is the kick. a self patched cold mac is the crackly noises. white whale is clocking the chord changes and sequencing the mangroves.

i’m happily sharing my teletype scene below to hopefully inspire others. I probably did some commands in live mode to shorten the trigger pulse length, and my memory fails me on what exactly i was doing with TXo in this patch, but it’s essentially using the param knob to set both attack and decay of the envelope. i typed this here quickly so apologies for any glaring errors, and also any tips and ideas on making this code more efficient in less space are always welcome and appreciated for future work :slightly_smiling_face:

I:
L 0 3: PN.END I 3
JF.MODE 1; JF.GOD 1
JF.SHIFT N -3; M 25
L 1 4: TO.ENV.ACT I 1
L 1 4: TO.CV.SET I V 8
L 1 4: TO.TR.P.DIV I I

M:
A PARAM; B ABS - 16320 PARAM
A + 10 >> A 4;  B + 10 >> B 4
L 1 4: TO.ENV.ATT I A
L 1 4: TO.ENV.DEC I B

1:
TO.ENV.TRIG 1

2:
JF.VOX 1 N PN.NEXT 0 V 4
DEL 30: SCRIPT 3
DEL 60: SCRIPT 4
DEL 90: SCRIPT 5

3:
JF.VOX 2 N PN.NEXT 1 V 4

4:
JF.VOX 3 N PN.NEXT 2 V 4

5:
JF.VOX 4 N PN.NEXT 3 V 4

6:

7:
TR.P 4

8:
L 1 4: TO.TR.P I

patterns:

 0 5 9 16
-5 0 2 7
-5 0 4 11
-1 2 4 7
26 Likes

Great ideas here - I didn’t even think of using guitar chords with Just Type, but it makes complete sense with 6 voices. Couple that with individual outs for each voice, there’s so much to explore. Thanks for sharing your scene notes!

1 Like

it does work out pretty well doesn’t it? figuring out the large intervals is a little strange at times (especially when building from a negative note value), but it will be pretty obvious when you enter in a wrong note haha

i’ve actually only used 5 voices max up to this point, as there are only 4 patterns on the teletype, and sometimes I’ll double one voice an octave below as a bass line.

but… i’ve been thinking for awhile now about how to get all 6 going using clever transposition of the pattern values and/or some tricks with variables to get some extra pseudo-patterns going. it’s definitely possible, just a matter of finding the time to sit down and bash it out

5 Likes

Warning: going off a tangent.

I’ve had an idea for harmonies and melodies— you could use a first pattern to define notes in a scale, then a second one to define relations from one note to the other by encoding it in bits (ie bit 5 is true means going from the current note to the one located at index 5 is a valid transition). You’d then have some way of choosing from all possible outcomes via a rhythmic or random process. The fun thing about this is that it would work for non-12-tone scales defined with the JI op.

A maybe more interesting (but maybe not so microtonal-friendly) variation on that would be to compute these relations on the fly using intervals (ie current note plus or minus a certain number of fifths or thirds equals a second note means the transition is valid) then dump all matches to a temporary pattern where one or several are picked according to the param knob, randomness or some other process. That would allow changing key in real time. Going even further, maybe you could use the in jack to harmonize to a melody you’d play on a keyboard or a pitch-tracked instrument.

4 Likes

that is a stunning piece. Do you have any other recordings with this setup? I could listen to this all day :heart_eyes:

1 Like

beyond the other video on my channel with the organelle alongside, not yet! but i hope to really ramp up making my own music and release an album(thats been in process for about a year) sometime in the later spring

4 Likes

I don’t have my TeleType yet, so I might be completely off here, but from what I’ve read so far it seems that the pattern list is just a collection of numbers with indices. This would imply (in my mind at least) that you could use two rows per ‘chord’, doubling the maximum number of notes per ‘chord’ to 8, and you would advance 2 steps instead of 1 after each chord change. Wouldn’t something like that work?

That would work! This would do it: (note that I’m actually using just 2 rows of 3 patterns as Just Friends only has 6 voice polyphony)

L 0 2: JF.NOTE N PN.NEXT I
L 0 2: JF.NOTE N PN.NEXT I

Detailed, beginner-friendly notes, if that's helpful?

What is going on here is that we are using the loop prefix L A B : OP. What it does is repeatedly execute a OP. What determines how many times it does so is given by A and B; the loop operator has a special I variable that is initially set to A's value, and incremented on each loop execution until it reaches B; at this point the loop ends.

Here each L 0 2: JF.NOTE N PN.NEXT I line will actually execute JF.NOTE N PN.NEXT 0, JF.NOTE N PN.NEXT 1, and JF.NOTE N PN.NEXT 2.

We are using that special variable I to select which pattern we are using through the PN.NEXT X op, which advances the current position in the specific pattern X and returns the value at that index.

This op then passes it’s value to the N op, which converts the number from the pattern to a voltage value that either Just Friends or Teletype’s outputs will interpret as 1v/oct.

Then, we send a note to Just Friends through it’s JF.NOTE op. Because the loop process is repeated twice each time the script is fired, two notes are sent at a time per pattern, hence 6 notes per script firing.

One thing you may (or may not) want to avoid though is having a pattern with an odd number of steps, as this will cause half of the chords’ note to lead the other ones one full cycle out of two (which actually makes the sequence twice as long).

7 Likes

Excellent :slight_smile:
What is not yet quite clear to me is how the second “L 0 2: …” statement would cause the next pattern to be used. Shouldn’t there be some kind of ‘advance to next pattern’ statement after each “L 0 2: …” statement?

Thanks for the Detailed but Beginner-friendly explanation. I’m only a few hours in to my TT explorations and that really helped!

@nschutten (Click the arrow to expand the notes!)

1 Like

I’m not sure that this will work actually, JF.Note requires 2 values, one for note number and another for velocity. So you would need to separate this into more lines, some to choose the note number as you have then apply that to a variable, then another line to send the note number (variable) to JF with a velocity value

Edit: after playing around a bit I realized it is possible to keep these down to one line each. Just enough room to put
L 0 2: JF.NOTE N PN.NEXT I V 10

Also found some strange behavior as I accidentally added an extra 0 to the end of that script, and while it didn’t show on the edit line, once I hit enter it did show up as
L 0 2: JF.NOTE N PN.NEXT I V 100
I know that V 100 isn’t even possible, but I had never though that there was room for another character that won’t show up on the edit line but will show up in the script. @tehn is this intended, or a bug of some sort?

You’re right! My mistake

Although I’m posting Just Type code here, mine is still not working. And it’s got a new behaviour I don’t like the sound of: plugging Teletype to Just Friends (double, triple, quadruple checked) prevents Teletype from booting. The screen buffer clears and nothing happens, it stays dark. If not connected it starts up just fine. Again, using Teletype 2.2.0 and the latest Just Type build. This seemed to have started after I plugged it backwards another time recently (idiotically, out of frustration). Hopefully I haven’t broken it.

Edit: even stranger stuff: Teletype will fail to boot when plugged into Just Friends, even when Just Friends is not connected to power.

Edit: updated to Teletype 2.3 beta 1, it now boots with Just Friends connected but still freezes on JF ops.

I will have access to a digital scope at my university, which would help figuring out what’s going on with i2c. If anyone has pointers to what to look out for (correct behaviour, voltages, etc) any help would be much appreciated.

Edit: I’ve taken a simple multimeter for continuity testing and found out that Just Friend’s SCL and SDA are shorted — no resistance at all. That doesn’t seem right. @Galapagoose does this make sense?

did you have any i2c ops in your init script? that would explain why teletype wouldn’t boot with just friends plugged in but worked after updating the firmware, as that would erase your presets.

sounds like you found the actual issue (from your description it did sound very much like when i have i2c plugged in backwards - did that on several occasions, doesn’t seem like that should cause any issues once you correct it), but in case you still need to debug further and have access to a digital oscilloscope it might have i2c decoding which simplifies troubleshooting greatly. this might help: Teletype Firmware i2c Debugging and Teletype Firmware i2c Debugging

basically, you add i2c decoding and specify which channel is SDA and which channel is SCL and then configure it to trigger on SDA fall.

do you have any other i2c enabled modules you could try?

2 Likes

Problem solved with the help of @Galapagoose! There was a microscopic solder bridge on the STM chip. Super excited to finally get to play around with Just Type!

9 Likes