Right, that distinction makes sense for sure. It’s basically quantizer vs generator. I guess what I’m not convinced of is the purpose of QT.S
etc when you have QT.B
and similarly N.S
etc if you have a hypothetical N.B
.
Ohhh yeah the *.B
variants are without a doubt more generically powerful. But then you also have a burden to know/store the bitmasks associated with those “common patterns”. I made a huge spreadsheet for that but I’d rather not have to use a reference to remember which mask value equals “the 7th chord of the second degree of the phyrigian mode”. Also, modulating scale degree in QT.CS
does not have an equivalent bitwise OP; for example you can’t just rotate your mask to get the next chord in the scale.
So to summarize, QT.S
simply reduces the need for scale references, but QT.CS
simplifies complex diatonic modulations. QT.B
gives you access to any subset of a 12-tet scheme you want, but “some assembly is required”.
If anyone’s curious, I’ve pushed branches to GitHub for both Teletype + Crow with Crow->TT i2c functionality. Together they add three commands to Crow:
-
ii.tt.script(script)
: run scriptscript
, 1-indexed (scripts 9 and 10 are theM
andI
scripts, respectively) -
ii.tt.script_i(script, i)
: run scriptscript
with itsI
variable set toi
-
ii.tt.script_v(script, i)
: run scriptscript
with itsI
variable set toi
“Teletype volts” (so if TT script 1 isCV 1 I
and you callii.tt.script_v(1, 1/12)
on Crow, Teletype’s CV 1 will be set to 1/12 of a volt).
Not sure there’s enough interest to merge these into the main codebases (and some way of switching TT between leader & follower modes would be needed), but I figured I’d share them here.
To add the Crow functionality to Norns, run the util/ii_norns_actions.lua
script in the Crow repo and copy the resulting file over to /home/we/norns/lua/core/crow/ii_actions.lua
, as described here.
This is great!
Maybe just an op like II.LEAD 0
that would set the leader state + save it to flash?
I think we’re probably getting to a degree of interconnectedness where it would be nice to tackle the (potentially thorny) problem of generating code for everything from a single source of truth.
Please add sync to midi clock if at all possible or maybe it’s already available and I’m unaware
Thanks
Thank you !!! I was unaware
i’ve updated the “official” beta version. it now includes:
- new generic i2c ops:
IIA
,IIS..
,IIQ..
,IIB..
: description | list of ops - fix for negative pattern values not properly read from USB
-
DEL.G
op - disting EX integration
- binary and hex format for numbers (
B...
for binary,X...
for hex)
3 features are still in active development and therefore are NOT included in the above:
@karol, @desolationjones - could you rebase your versions on the latest code in main
branch?
any help with testing is greatly appreciated.
we have a high number of features being developed - i think nobody will argue it’s a bad thing - but we have features going stale because of the lack of feedback. the best encouragement for teletype developers, especially the ones who are just starting to contriubute, is actual user feedback (gentle feedback, i might add - this is all volunteer work) and help with testing. and if we get more feedback, it will help us merge features quicker, which in turn will help keep the number of betas low.
Just wanted to say a big thank you to you and everyone else involved – for all the hard work and effort to develop Teletype further. It really is amazing.
Will try to install the beta and collect feedback.
or II.MODE
- 1 would set it to leader, 0 to follower.
and what if we had an i2c command for “take over”, so when you send it to teletype it switches to leader mode. then we could have a mechanism for multiple leaders to pass control to each other…
A request for a follower to take control is probably more reliable than one for a leader to cede it, but I see utility in both. A big problem is that a most of the modules in the ecosystem are totally asynchronous. I think crow would be well-suited for central processing, but everything on the bus is listening at all times… augh, if only crow had two buses!
I’m struggling to think of a script where I could reliably predict my needs for passing the lead around. Probably most leader/follower selection would be defined during init, but there should be room for reconfiguration without power cycling.
Which gets me back to an interesting crow question: what are the best ways for interrupting a script for the purposes of changing crow’s behavior? Right now I feel like the options are a “panic” signal input or an I2C message.
yeah it’s a pretty random thought at the moment, but feels like maybe there is some potential use case for it.
Here’s an attempt to demo QT.B and DEL.B. I think these OPs are really fun and can’t wait to see how you guys use them! once I finish the docs and figure out how GitHub works
EDIT: fixed audio hopefully
EDITEDIT: the scale “1709” is actually the durian scale, not the garlic aeolian scale as I claimed
Very low volume on the video
It was all done on the phone… Is there a video edit app for Android with volume normalize?
EDIT: found one, uploading now
another + for i2c to MIDI ( without needing to purchase a DistingMk4 + breakout )
Other suggestions from me - sorry if they have already been mentioned;
DurationBetweenTriggers
I did it this way, but a lower level encapsulation would be useful.
#1 Tempo Extracting Script
> EVERY 2: M ABS - Z T; T TIME
> OTHER: Z TIME
> EVERY 16: Y V -10
> M.ACT 1
Linear Interpolation
where i
is a normalised ( 0 to 1 ) interpolation index
(( 1 - i ) * srcA) + ( i * srcB)
and possibly more forms of interpolation.
Param Slew
Just like the CV slew, but for internal parameter changes.
hasChangedInLast
Another timer, the timer elapsed since a parameter or input changed value
I’ve a few more ideas, but I don’t know if suggestions are requited at the current time.
Suggestions are always good! I like your thought about interpolation.
Your first concept is pretty well covered by LAST
You can fake the param slew with a really fast DEL.R
.
Thanks for pointing LAST
out to me - well, I enjoyed making my own logic in Teletype anyhow. LAST
is more reliable though.
So maybe I am also missing these? Because I can’t seem to see in the docs how to mute individual outputs…
Tr.Mute x
Cv.Mute x
Yeah I think there’s only input mutes! Output mutes could be handy for sure. I’ll have to take a look in the code to see if it can be done.
suggestions are always welcome!
re: output mutes - makes sense to have these. this would require updating the live UI (and not sure it could be added to the grid control mode, there isn’t really space for another row of mutes).
welcome to lines! some of teletype code was done while listening to absolute time