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!
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
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.
that is a stunning piece. Do you have any other recordings with this setup? I could listen to this all day
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
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
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.
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).
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!)
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?
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!
I don’t know if the issue has been adressed here but in SYNTHESIS MODE inputting RUN values through JF.RUN V ? doesn’t seem to work. I’ve got 0 problem with a physical cable though.
Am i doing something wrong ?
You also need to turn run mode on:
Caught me out a few times too
Ok nice catch.
Other question about the GEODE MODE. Here with SUSTAIN:
JF.VOX 1 4 4
JF.VOX 2 8 4
Most of the time CHANNEL 2 doesn’t fire. I tried adding other ones but only the 1st line’s CHANNEL is constant in its execution.
Is this specific to GEODE? Do you experience missed II commands in Synthesis mode? If it’s specific to GEODE there might be a bug in the code, but otherwise it could be an issue with your II bus.
How many devices do you have connected to teletype? Are you using a powered II bus board?
Yes it seems to be. I tried the same type of command is SYNTHESIS and it never skiped a note. In any case, the first JF.VOX command is always rightly executed (even with JF.VOX 0). The same problem occurs with that code:
JF.VOX 1 4 2
JF.VOX 2 4 2
1 JUST FRIEND + 2 TXi + 1 Txo. I’m using the purple BACKPACK to connect everything together.
Just for general reference:
I had issues getting JF into update mode as well. I unplugged my bus board and plugged JF directly into the supply, and it worked right away.
Possibly just a digital noise issue with all the other modules powered up at the same time.