To be honest I’m still a bit intimidated of ops that use binary but I’m sure it’s simpler than i expect! And if you can use user defined scales with it then I’m definitely into it
1 Like
It’s super simple actually, the N.B is a simple representation of the notes as found in an octave. You turn them on/off by 1/0 on the binary. No actual binary understanding needed other than that!
@a773 please remind me are these documented somewhere? They’re not on the official manual, as they were in the beta version, right?
1 Like
a773
449
It quite simple, most difficult is to Remember R (instead of more obvious B):
Major scale vs bits:
Scale C Db D Eb E F Gb G Ab A Bb B
Binary R 1 0 1 0 1 1 0 1 0 1 0 1
Major-scale: R101011010101
Minor-scale: R101101011010
Major-pentatonic: R101010010100
Set scale (C-major, first arg is transpose, 2nd is scale):
N.B 0 R101011010101
Set scale (D-major, first arg is transpose, 2nd is scale):
N.B 2 R101011010101
Set scale (D-major from preset (0=major)
N.B 2 0
Pull 1st degree from set scale:
N.B 1
Pull octave from set scale:
N.B 8
The real power when you want modal interchange, say C major to Db (neapolitan subdominant), you define everything from the same main root and degrees won’t jump:
N.B 0 R101011010101 // C major
N.B 0 R110101011010 // C-phrygean or Db-lydian
But in both cases
N.B 0 = N 0 = C
@ParanormalPatroler yes it’s documented along with the PR on GitHub, I’m not sure which official manual you’re referring to?
4 Likes
Oh that actually looks really exciting! What would N.B 9 do in that situation, return the first degree again or give the first degree + octave, or just do nothing?
Edit, 9 would actually be 2nd degree +octave, still get caught out from 0 counting
remaining things:
- run clang format on everything
- help mode for this PR
- my PR
unfortunately i’m swamped with day job / home chores / getting ready for FLASH CRASH teletype live coding event, so realistically won’t have my PR ready until mon/tue. we could just punt it from the release if it holds things back!
a773
452
I think I wrote it wrong (will correct after hitting return), sorry.
It returns the 9th degree, so in C a high D. Works with negative numbers as well:
N.B 0 0 // choose C-major scale
N.B -7 // = N -13 = B,,
N.B -6 // = N -12 = C,
N.B -5 // = N -10 = D,
N.B -4 // = N -8 = E,
N.B -3 // = N -7 = F,
N.B -2 // = N -5 = G,
N.B -1 // = N -3 = A,
N.B 0 // = N -1 = B,
N.B 1 // = N 0 = C
N.B 2 // = N 2 = D
N.B 3 // = N 4 = E
N.B 4 // = N 5 = F
N.B 5 // = N 7 = G
N.B 6 // = N 9 = A
N.B 7 // = N 11 = B
N.B 8 // = N 12 = c
N.B 9 // = N 14 = d
N.B 10 // = N 16 = e
Ok, that might seem strange at first with negative numbers (anyone into “negative harmony” might discover something interesting…), and obviously note it’s 1-indexed, to match music theory. I had it running with 0-indexed at first but I messed it up all the time. With negative numbers the important thing is math works, +7 transposes up an octave, -7 transposes down an octave.
5 Likes
Ahh that’s wayy easier than handling the degree and the octave separately like with N.S thank you!
2 Likes
a773
454
No need to rush it, it’s been a year, let’s make it smooth rather than soon!
2 Likes
tehn
455
next week sounds fine to me! psyched for the FLASH CRASH 
3 Likes
I have some plans to try N.Q and QT.Q implementations which could allow you to use the queue to hold an arbitrary quantity of notes. The OPs could interpret the highest value in the queue as the “octave”/scale modulo.
2 Likes
Does that mean you can set a modulo at a value higher than octave?
1 Like
eimhin
458
What is the issue with help mode? I could probably tackle it if you need.
apologies, got 2 PRs mixed up! edited my post.
1 Like
Yeah, or lower, however your microtonal needs go.
a773
461
Just did a PR for AND3, AND4, OR3 and OR4 (&&&, &&&&, ||| and ||||)
&&& 1 1 0 // = 0
||| 0 0 1 // = 1
&&&& 1 1 1 0 // = 0
|||| 0 0 0 1 // = 1
6 Likes
My brain is kinda reeling from how useful this stuff is gonna be and how it’s gonna turn whole scenes of mine into single lines!!
One question on the QT ops:
When the documentation says it will quantise v/Oct to the various N.S scales, what values is it expecting in and spitting out? Does it take raw 0-32788 values in and output the same?
As in if In was full value range unscaled, would this work:
A IN
CV 1 QT.S A 0 0
Or would the input and output need some N and V processing?
An example of a corrected working version of the above ‘quantise the input to a major scale and send it to CV 1’ script would be much appreciated to clear this up 
a773
463
If you can, I’d hold my horses, @desolationjones reworked them to use bitwise notation. Unless you rolled your own fw from GitHub??
Ohh ok, very much looking forward to seeing what form they take, they seem incredibly useful
a773
465
I think they are very useful!
The form (of the new bit wise ones) are fixed, it’s just not “out” yet. It should be just around the corner…
QT.S, .CS, .B, and .BX all accept CV input directly now. So your example will work! Watch for the release soon, or PM me if you’d like a beta.
Quoth the manual:
[“QT.S”]
prototype = “QT.S x r s”
short = “quantize 1V/OCT signal x to scale s (0-8, reference N.S scales) with root 1V/OCT pitch r”
[“QT.CS”]
prototype = “QT.CS x r s d c”
short = “quantize 1V/OCT signal x to chord c (1-7) from scale s (0-8, reference N.S scales) at degree d (1-7) with root 1V/OCT pitch r”
description = “”"
Quantize 1V/OCT signal x to chord c (1-7) from scale s (0-8, reference N.S scales) at degree d (1-7) with root 1V/OCT pitch r.
Chords (1-7)
1 = Tonic
2 = Third
3 = Triad
4 = Seventh
- etc.
“”"
[“QT.B”]
prototype = “QT.B x”
short = “quantize 1V/OCT signal x to scale defined by N.B”
[“QT.BX”]
prototype = “QT.BX x i”
short = “quantize 1V/OCT signal x to scale defined by N.BX in scale index i”
5 Likes