(->hc-update x)
Turn x
into an harmonic context update
x
can be either:
Turn `x` into an harmonic context update `x` can be either: - nil which represent the identity update. - a function from context to context. - another context that will replace the received one preserving its current pitch. - a vector is interpreted as a sequence of successive updates.
Change the :origin of received context to A#-1.
Change the :origin of received context to A#-1.
Change the :origin of received context to A#-2.
Change the :origin of received context to A#-2.
Change the :origin of received context to A#-3.
Change the :origin of received context to A#-3.
Change the :origin of received context to A#-4.
Change the :origin of received context to A#-4.
Change the :origin of received context to A#-5.
Change the :origin of received context to A#-5.
Change the :origin of received context to A#0.
Change the :origin of received context to A#0.
Change the :origin of received context to A#1.
Change the :origin of received context to A#1.
Change the :origin of received context to A#2.
Change the :origin of received context to A#2.
Change the :origin of received context to A#3.
Change the :origin of received context to A#3.
Change the :origin of received context to A#4.
Change the :origin of received context to A#4.
Change the :origin of received context to A-1.
Change the :origin of received context to A-1.
Change the :origin of received context to A-2.
Change the :origin of received context to A-2.
Change the :origin of received context to A-3.
Change the :origin of received context to A-3.
Change the :origin of received context to A-4.
Change the :origin of received context to A-4.
Change the :origin of received context to A-5.
Change the :origin of received context to A-5.
Change the :origin of received context to A0.
Change the :origin of received context to A0.
Change the :origin of received context to A1.
Change the :origin of received context to A1.
Change the :origin of received context to A2.
Change the :origin of received context to A2.
Change the :origin of received context to A3.
Change the :origin of received context to A3.
Change the :origin of received context to A4.
Change the :origin of received context to A4.
Change the :origin of received context to Ab-1.
Change the :origin of received context to Ab-1.
Change the :origin of received context to Ab-2.
Change the :origin of received context to Ab-2.
Change the :origin of received context to Ab-3.
Change the :origin of received context to Ab-3.
Change the :origin of received context to Ab-4.
Change the :origin of received context to Ab-4.
Change the :origin of received context to Ab-5.
Change the :origin of received context to Ab-5.
Change the :origin of received context to Ab0.
Change the :origin of received context to Ab0.
Change the :origin of received context to Ab1.
Change the :origin of received context to Ab1.
Change the :origin of received context to Ab2.
Change the :origin of received context to Ab2.
Change the :origin of received context to Ab3.
Change the :origin of received context to Ab3.
Change the :origin of received context to Ab4.
Change the :origin of received context to Ab4.
Change the :origin of received context to Abb-1.
Change the :origin of received context to Abb-1.
Change the :origin of received context to Abb-2.
Change the :origin of received context to Abb-2.
Change the :origin of received context to Abb-3.
Change the :origin of received context to Abb-3.
Change the :origin of received context to Abb-4.
Change the :origin of received context to Abb-4.
Change the :origin of received context to Abb-5.
Change the :origin of received context to Abb-5.
Change the :origin of received context to Abb0.
Change the :origin of received context to Abb0.
Change the :origin of received context to Abb1.
Change the :origin of received context to Abb1.
Change the :origin of received context to Abb2.
Change the :origin of received context to Abb2.
Change the :origin of received context to Abb3.
Change the :origin of received context to Abb3.
Change the :origin of received context to Abb4.
Change the :origin of received context to Abb4.
Change the :origin of received context to Abb5.
Change the :origin of received context to Abb5.
Change the :structure of received context to :add2.
Change the :structure of received context to :add2.
Change the :structure of received context to :add4.
Change the :structure of received context to :add4.
Change the :scale of received context to :aeolian.
Change the :scale of received context to :aeolian.
(align layer a b)
Align position of context b
on context a
's position, rounding on the given layer
.
Useful when writing harmonic or melodic sequences that traverse several contexts.
Align position of context `b` on context `a`'s position, rounding on the given `layer`. Useful when writing harmonic or melodic sequences that traverse several contexts.
Change the :origin of received context to Ax-1.
Change the :origin of received context to Ax-1.
Change the :origin of received context to Ax-2.
Change the :origin of received context to Ax-2.
Change the :origin of received context to Ax-3.
Change the :origin of received context to Ax-3.
Change the :origin of received context to Ax-4.
Change the :origin of received context to Ax-4.
Change the :origin of received context to Ax-5.
Change the :origin of received context to Ax-5.
Change the :origin of received context to Ax0.
Change the :origin of received context to Ax0.
Change the :origin of received context to Ax1.
Change the :origin of received context to Ax1.
Change the :origin of received context to Ax2.
Change the :origin of received context to Ax2.
Change the :origin of received context to Ax3.
Change the :origin of received context to Ax3.
Change the :origin of received context to Ax4.
Change the :origin of received context to Ax4.
Change the :origin of received context to B#-1.
Change the :origin of received context to B#-1.
Change the :origin of received context to B#-2.
Change the :origin of received context to B#-2.
Change the :origin of received context to B#-3.
Change the :origin of received context to B#-3.
Change the :origin of received context to B#-4.
Change the :origin of received context to B#-4.
Change the :origin of received context to B#-5.
Change the :origin of received context to B#-5.
Change the :origin of received context to B#0.
Change the :origin of received context to B#0.
Change the :origin of received context to B#1.
Change the :origin of received context to B#1.
Change the :origin of received context to B#2.
Change the :origin of received context to B#2.
Change the :origin of received context to B#3.
Change the :origin of received context to B#3.
Change the :origin of received context to B#4.
Change the :origin of received context to B#4.
Change the :origin of received context to B-1.
Change the :origin of received context to B-1.
Change the :origin of received context to B-2.
Change the :origin of received context to B-2.
Change the :origin of received context to B-3.
Change the :origin of received context to B-3.
Change the :origin of received context to B-4.
Change the :origin of received context to B-4.
Change the :origin of received context to B-5.
Change the :origin of received context to B-5.
Change the :origin of received context to B0.
Change the :origin of received context to B0.
Change the :origin of received context to B1.
Change the :origin of received context to B1.
Change the :origin of received context to B2.
Change the :origin of received context to B2.
Change the :origin of received context to B3.
Change the :origin of received context to B3.
Change the :origin of received context to B4.
Change the :origin of received context to B4.
Change the :origin of received context to Bb-1.
Change the :origin of received context to Bb-1.
Change the :origin of received context to Bb-2.
Change the :origin of received context to Bb-2.
Change the :origin of received context to Bb-3.
Change the :origin of received context to Bb-3.
Change the :origin of received context to Bb-4.
Change the :origin of received context to Bb-4.
Change the :origin of received context to Bb-5.
Change the :origin of received context to Bb-5.
Change the :origin of received context to Bb0.
Change the :origin of received context to Bb0.
Change the :origin of received context to Bb1.
Change the :origin of received context to Bb1.
Change the :origin of received context to Bb2.
Change the :origin of received context to Bb2.
Change the :origin of received context to Bb3.
Change the :origin of received context to Bb3.
Change the :origin of received context to Bb4.
Change the :origin of received context to Bb4.
Change the :origin of received context to Bbb-1.
Change the :origin of received context to Bbb-1.
Change the :origin of received context to Bbb-2.
Change the :origin of received context to Bbb-2.
Change the :origin of received context to Bbb-3.
Change the :origin of received context to Bbb-3.
Change the :origin of received context to Bbb-4.
Change the :origin of received context to Bbb-4.
Change the :origin of received context to Bbb-5.
Change the :origin of received context to Bbb-5.
Change the :origin of received context to Bbb0.
Change the :origin of received context to Bbb0.
Change the :origin of received context to Bbb1.
Change the :origin of received context to Bbb1.
Change the :origin of received context to Bbb2.
Change the :origin of received context to Bbb2.
Change the :origin of received context to Bbb3.
Change the :origin of received context to Bbb3.
Change the :origin of received context to Bbb4.
Change the :origin of received context to Bbb4.
(bds seq mod)
Bidirectional lazy sequence.
seq
is the base starting forward sequence.
mod
is the interval of repetition of seq
.
example:
(bds [0 2 4] 5)
{:fw (0 2 4 5 7 9 10 12 14 15 ...),
:bw (0 -1 -3 -5 -6 -8 -10 -11 -13 -15...)}
Bidirectional lazy sequence. `seq` is the base starting forward sequence. `mod` is the interval of repetition of `seq`. example: (bds [0 2 4] 5) {:fw (0 2 4 5 7 9 10 12 14 15 ...), :bw (0 -1 -3 -5 -6 -8 -10 -11 -13 -15...)}
(bds-get bds idx)
Access bds
value at index idx
, neg idxs go backward.
Access `bds` value at index `idx`, neg idxs go backward.
(bds-go bds val)
Shift the bds
to the given val
, ignoring reminder.
Shift the `bds` to the given `val`, ignoring reminder.
(bds-idx {:keys [fw bw] :as _bds} v)
Return the index of the given value v
and the reminder in a vector: [idx rem]
Return the index of the given value `v` and the reminder in a vector: `[idx rem]`
(bds-shift bds idx)
Shift a bidirectional seq bds
by the given idx
.
Shift a bidirectional seq `bds` by the given `idx`.
Change the :origin of received context to Bx-1.
Change the :origin of received context to Bx-1.
Change the :origin of received context to Bx-2.
Change the :origin of received context to Bx-2.
Change the :origin of received context to Bx-3.
Change the :origin of received context to Bx-3.
Change the :origin of received context to Bx-4.
Change the :origin of received context to Bx-4.
Change the :origin of received context to Bx-5.
Change the :origin of received context to Bx-5.
Change the :origin of received context to Bx0.
Change the :origin of received context to Bx0.
Change the :origin of received context to Bx1.
Change the :origin of received context to Bx1.
Change the :origin of received context to Bx2.
Change the :origin of received context to Bx2.
Change the :origin of received context to Bx3.
Change the :origin of received context to Bx3.
Change the :origin of received context to Bx4.
Change the :origin of received context to Bx4.
Change the :origin of received context to C#-1.
Change the :origin of received context to C#-1.
Change the :origin of received context to C#-2.
Change the :origin of received context to C#-2.
Change the :origin of received context to C#-3.
Change the :origin of received context to C#-3.
Change the :origin of received context to C#-4.
Change the :origin of received context to C#-4.
Change the :origin of received context to C#-5.
Change the :origin of received context to C#-5.
Change the :origin of received context to C#0.
Change the :origin of received context to C#0.
Change the :origin of received context to C#1.
Change the :origin of received context to C#1.
Change the :origin of received context to C#2.
Change the :origin of received context to C#2.
Change the :origin of received context to C#3.
Change the :origin of received context to C#3.
Change the :origin of received context to C#4.
Change the :origin of received context to C#4.
Change the :origin of received context to C#5.
Change the :origin of received context to C#5.
Change the :origin of received context to C-1.
Change the :origin of received context to C-1.
Change the :origin of received context to C-2.
Change the :origin of received context to C-2.
Change the :origin of received context to C-3.
Change the :origin of received context to C-3.
Change the :origin of received context to C-4.
Change the :origin of received context to C-4.
Change the :origin of received context to C-5.
Change the :origin of received context to C-5.
(c->d {{:keys [s d c]} :position :as ctx})
Feed as much as possible of the c value into the d value.
Feed as much as possible of the c value into the d value.
(c->s ctx)
Feed as much as possible of the c value into the d value and s value.
Feed as much as possible of the c value into the d value and s value.
(c->t ctx)
Feed as much as possible of the c value to the upward layers.
Feed as much as possible of the c value to the upward layers.
Build a chromatic position update. takes 0 or 1 arguments: c: chromatic layer offset.
Build a chromatic position update. takes 0 or 1 arguments: c: chromatic layer offset.
Builds a chromatic shift update. see noon.harmony/layer-shift
documentation.
Builds a chromatic shift update. see `noon.harmony/layer-shift` documentation.
(c-step n)
Build a chromatic step update, which adds n
to the given context's position's chromatic layer offset.
Build a chromatic step update, which adds `n` to the given context's position's chromatic layer offset.
Change the :origin of received context to C0.
Change the :origin of received context to C0.
Change the :origin of received context to C1.
Change the :origin of received context to C1.
Change the :origin of received context to C2.
Change the :origin of received context to C2.
Change the :origin of received context to C3.
Change the :origin of received context to C3.
Change the :origin of received context to C4.
Change the :origin of received context to C4.
Change the :origin of received context to C5.
Change the :origin of received context to C5.
Change the :origin of received context to Cb-1.
Change the :origin of received context to Cb-1.
Change the :origin of received context to Cb-2.
Change the :origin of received context to Cb-2.
Change the :origin of received context to Cb-3.
Change the :origin of received context to Cb-3.
Change the :origin of received context to Cb-4.
Change the :origin of received context to Cb-4.
Change the :origin of received context to Cb0.
Change the :origin of received context to Cb0.
Change the :origin of received context to Cb1.
Change the :origin of received context to Cb1.
Change the :origin of received context to Cb2.
Change the :origin of received context to Cb2.
Change the :origin of received context to Cb3.
Change the :origin of received context to Cb3.
Change the :origin of received context to Cb4.
Change the :origin of received context to Cb4.
Change the :origin of received context to Cb5.
Change the :origin of received context to Cb5.
Change the :origin of received context to Cbb-1.
Change the :origin of received context to Cbb-1.
Change the :origin of received context to Cbb-2.
Change the :origin of received context to Cbb-2.
Change the :origin of received context to Cbb-3.
Change the :origin of received context to Cbb-3.
Change the :origin of received context to Cbb-4.
Change the :origin of received context to Cbb-4.
Change the :origin of received context to Cbb0.
Change the :origin of received context to Cbb0.
Change the :origin of received context to Cbb1.
Change the :origin of received context to Cbb1.
Change the :origin of received context to Cbb2.
Change the :origin of received context to Cbb2.
Change the :origin of received context to Cbb3.
Change the :origin of received context to Cbb3.
Change the :origin of received context to Cbb4.
Change the :origin of received context to Cbb4.
Change the :origin of received context to Cbb5.
Change the :origin of received context to Cbb5.
(chromatic-distance ctx1 ctx2)
Return the chromatic distance between two contexts.
Return the chromatic distance between two contexts.
(connections hc1 hc2)
For each layer, computes the ctxs between hc1 and hc2 returns a map of kind {layer intermediate-ctxs} layer: :t | :s | :d | :c intermediate-ctxs: sorted ctxs that are between hc1 and hc2 on the corresponding layer.
For each layer, computes the ctxs between hc1 and hc2 returns a map of kind {layer intermediate-ctxs} layer: :t | :s | :d | :c intermediate-ctxs: sorted ctxs that are between hc1 and hc2 on the corresponding layer.
Change the :origin of received context to Cx-1.
Change the :origin of received context to Cx-1.
Change the :origin of received context to Cx-2.
Change the :origin of received context to Cx-2.
Change the :origin of received context to Cx-3.
Change the :origin of received context to Cx-3.
Change the :origin of received context to Cx-4.
Change the :origin of received context to Cx-4.
Change the :origin of received context to Cx-5.
Change the :origin of received context to Cx-5.
Change the :origin of received context to Cx0.
Change the :origin of received context to Cx0.
Change the :origin of received context to Cx1.
Change the :origin of received context to Cx1.
Change the :origin of received context to Cx2.
Change the :origin of received context to Cx2.
Change the :origin of received context to Cx3.
Change the :origin of received context to Cx3.
Change the :origin of received context to Cx4.
Change the :origin of received context to Cx4.
Change the :origin of received context to Cx5.
Change the :origin of received context to Cx5.
Change the :origin of received context to D#-1.
Change the :origin of received context to D#-1.
Change the :origin of received context to D#-2.
Change the :origin of received context to D#-2.
Change the :origin of received context to D#-3.
Change the :origin of received context to D#-3.
Change the :origin of received context to D#-4.
Change the :origin of received context to D#-4.
Change the :origin of received context to D#-5.
Change the :origin of received context to D#-5.
Change the :origin of received context to D#0.
Change the :origin of received context to D#0.
Change the :origin of received context to D#1.
Change the :origin of received context to D#1.
Change the :origin of received context to D#2.
Change the :origin of received context to D#2.
Change the :origin of received context to D#3.
Change the :origin of received context to D#3.
Change the :origin of received context to D#4.
Change the :origin of received context to D#4.
Change the :origin of received context to D#5.
Change the :origin of received context to D#5.
Change the :origin of received context to D-1.
Change the :origin of received context to D-1.
Change the :origin of received context to D-2.
Change the :origin of received context to D-2.
Change the :origin of received context to D-3.
Change the :origin of received context to D-3.
Change the :origin of received context to D-4.
Change the :origin of received context to D-4.
Change the :origin of received context to D-5.
Change the :origin of received context to D-5.
(d->c {:as ctx {:keys [d]} :position})
Push diatonic offset into chromatic layer.
Push diatonic offset into chromatic layer.
(d->s {{:keys [s d]} :position :as ctx})
Feed as much as possible of the d value into the s value.
Feed as much as possible of the d value into the s value.
(d->t ctx)
Feed as much as possible of the d value into the upward layers.
Feed as much as possible of the d value into the upward layers.
Build an update that bring received context to the closest diatonic position above.
Build an update that bring received context to the closest diatonic position above.
Build an update that bring received context to the closest diatonic position below.
Build an update that bring received context to the closest diatonic position below.
Build a diatonic position update. takes 0 to 2 arguments: d: diatonic layer offset. c: chromatic layer offset.
Build a diatonic position update. takes 0 to 2 arguments: d: diatonic layer offset. c: chromatic layer offset.
Build an update that bring received context to the closest diatonic position.
Build an update that bring received context to the closest diatonic position.
Builds a diatonic shift update. see noon.harmony/layer-shift
documentation.
Builds a diatonic shift update. see `noon.harmony/layer-shift` documentation.
(d-step n)
Build a diatonic step update which operates as follow:
n
to diatonic offset.Build a diatonic step update which operates as follow: - Trim chromatic layer offset after feeding as much as possible to the diatonic layer offset - Adds `n` to diatonic offset.
(d-trim {:as ctx})
Push as much chromatic offset into the diatonic offset, Remove the remainder from the chromatic layer, Return a context with a position containing only tonic, structural and diatonic offsets.
Push as much chromatic offset into the diatonic offset, Remove the remainder from the chromatic layer, Return a context with a position containing only tonic, structural and diatonic offsets.
Change the :origin of received context to D0.
Change the :origin of received context to D0.
Change the :origin of received context to D1.
Change the :origin of received context to D1.
Change the :origin of received context to D2.
Change the :origin of received context to D2.
Change the :origin of received context to D3.
Change the :origin of received context to D3.
Change the :origin of received context to D4.
Change the :origin of received context to D4.
Change the :origin of received context to D5.
Change the :origin of received context to D5.
Change the :origin of received context to Db-1.
Change the :origin of received context to Db-1.
Change the :origin of received context to Db-2.
Change the :origin of received context to Db-2.
Change the :origin of received context to Db-3.
Change the :origin of received context to Db-3.
Change the :origin of received context to Db-4.
Change the :origin of received context to Db-4.
Change the :origin of received context to Db-5.
Change the :origin of received context to Db-5.
Change the :origin of received context to Db0.
Change the :origin of received context to Db0.
Change the :origin of received context to Db1.
Change the :origin of received context to Db1.
Change the :origin of received context to Db2.
Change the :origin of received context to Db2.
Change the :origin of received context to Db3.
Change the :origin of received context to Db3.
Change the :origin of received context to Db4.
Change the :origin of received context to Db4.
Change the :origin of received context to Db5.
Change the :origin of received context to Db5.
Change the :origin of received context to Dbb-1.
Change the :origin of received context to Dbb-1.
Change the :origin of received context to Dbb-2.
Change the :origin of received context to Dbb-2.
Change the :origin of received context to Dbb-3.
Change the :origin of received context to Dbb-3.
Change the :origin of received context to Dbb-4.
Change the :origin of received context to Dbb-4.
Change the :origin of received context to Dbb-5.
Change the :origin of received context to Dbb-5.
Change the :origin of received context to Dbb0.
Change the :origin of received context to Dbb0.
Change the :origin of received context to Dbb1.
Change the :origin of received context to Dbb1.
Change the :origin of received context to Dbb2.
Change the :origin of received context to Dbb2.
Change the :origin of received context to Dbb3.
Change the :origin of received context to Dbb3.
Change the :origin of received context to Dbb4.
Change the :origin of received context to Dbb4.
Change the :origin of received context to Dbb5.
Change the :origin of received context to Dbb5.
(degree n)
Build an update that go to degree n
(potentially negative) of the received context preserving its position.
Build an update that go to degree `n` (potentially negative) of the received context preserving its position.
(degree-alteration scale-idx c-val)
Build an update that alter the degree at scale-idx
according to c-val
.
Throws if not possible due to neighbours degrees.
Build an update that alter the degree at `scale-idx` according to `c-val`. Throws if not possible due to neighbours degrees.
(diatonic-distance ctx1 ctx2)
Return the diatonic distance between two contexts.
Return the diatonic distance between two contexts.
(diatonic-equivalent? ctx)
the current position is equivalent to a diatonic one.
the current position is equivalent to a diatonic one.
(diatonic-suroundings ctx)
return the chromatic distances of the surroundings diatonic degrees [c-dist-downward c-dist-upward]
return the chromatic distances of the surroundings diatonic degrees [c-dist-downward c-dist-upward]
(diatonic? ctx)
Does the given context is positioned exactly on the diatonic layer (or above) ?
Does the given context is positioned exactly on the diatonic layer (or above) ?
(distance a b)
Return a tuple [chromatic-distance diatonic-distance] between the two given contexts a
and b
.
Return a tuple [chromatic-distance diatonic-distance] between the two given contexts `a` and `b`.
Change the :scale of received context to :dorian.
Change the :scale of received context to :dorian.
Change the :scale of received context to :dorian+4.
Change the :scale of received context to :dorian+4.
Change the :scale of received context to :dorianb5.
Change the :scale of received context to :dorianb5.
Change the :scale of received context to :double-harmonic.
Change the :scale of received context to :double-harmonic.
(down-to-layer layer ctx)
Constrain ctx
's position down to layer
by transferring upper offsets into lower layers.
Constrain `ctx`'s position down to `layer` by transferring upper offsets into lower layers.
Change the :origin of received context to Dx-1.
Change the :origin of received context to Dx-1.
Change the :origin of received context to Dx-2.
Change the :origin of received context to Dx-2.
Change the :origin of received context to Dx-3.
Change the :origin of received context to Dx-3.
Change the :origin of received context to Dx-4.
Change the :origin of received context to Dx-4.
Change the :origin of received context to Dx-5.
Change the :origin of received context to Dx-5.
Change the :origin of received context to Dx0.
Change the :origin of received context to Dx0.
Change the :origin of received context to Dx1.
Change the :origin of received context to Dx1.
Change the :origin of received context to Dx2.
Change the :origin of received context to Dx2.
Change the :origin of received context to Dx3.
Change the :origin of received context to Dx3.
Change the :origin of received context to Dx4.
Change the :origin of received context to Dx4.
Change the :origin of received context to Dx5.
Change the :origin of received context to Dx5.
Change the :origin of received context to E#-1.
Change the :origin of received context to E#-1.
Change the :origin of received context to E#-2.
Change the :origin of received context to E#-2.
Change the :origin of received context to E#-3.
Change the :origin of received context to E#-3.
Change the :origin of received context to E#-4.
Change the :origin of received context to E#-4.
Change the :origin of received context to E#-5.
Change the :origin of received context to E#-5.
Change the :origin of received context to E#0.
Change the :origin of received context to E#0.
Change the :origin of received context to E#1.
Change the :origin of received context to E#1.
Change the :origin of received context to E#2.
Change the :origin of received context to E#2.
Change the :origin of received context to E#3.
Change the :origin of received context to E#3.
Change the :origin of received context to E#4.
Change the :origin of received context to E#4.
Change the :origin of received context to E#5.
Change the :origin of received context to E#5.
Change the :origin of received context to E-1.
Change the :origin of received context to E-1.
Change the :origin of received context to E-2.
Change the :origin of received context to E-2.
Change the :origin of received context to E-3.
Change the :origin of received context to E-3.
Change the :origin of received context to E-4.
Change the :origin of received context to E-4.
Change the :origin of received context to E-5.
Change the :origin of received context to E-5.
Change the :origin of received context to E0.
Change the :origin of received context to E0.
Change the :origin of received context to E1.
Change the :origin of received context to E1.
Change the :origin of received context to E2.
Change the :origin of received context to E2.
Change the :origin of received context to E3.
Change the :origin of received context to E3.
Change the :origin of received context to E4.
Change the :origin of received context to E4.
Change the :origin of received context to E5.
Change the :origin of received context to E5.
Change the :origin of received context to Eb-1.
Change the :origin of received context to Eb-1.
Change the :origin of received context to Eb-2.
Change the :origin of received context to Eb-2.
Change the :origin of received context to Eb-3.
Change the :origin of received context to Eb-3.
Change the :origin of received context to Eb-4.
Change the :origin of received context to Eb-4.
Change the :origin of received context to Eb-5.
Change the :origin of received context to Eb-5.
Change the :origin of received context to Eb0.
Change the :origin of received context to Eb0.
Change the :origin of received context to Eb1.
Change the :origin of received context to Eb1.
Change the :origin of received context to Eb2.
Change the :origin of received context to Eb2.
Change the :origin of received context to Eb3.
Change the :origin of received context to Eb3.
Change the :origin of received context to Eb4.
Change the :origin of received context to Eb4.
Change the :origin of received context to Eb5.
Change the :origin of received context to Eb5.
Change the :origin of received context to Ebb-1.
Change the :origin of received context to Ebb-1.
Change the :origin of received context to Ebb-2.
Change the :origin of received context to Ebb-2.
Change the :origin of received context to Ebb-3.
Change the :origin of received context to Ebb-3.
Change the :origin of received context to Ebb-4.
Change the :origin of received context to Ebb-4.
Change the :origin of received context to Ebb-5.
Change the :origin of received context to Ebb-5.
Change the :origin of received context to Ebb0.
Change the :origin of received context to Ebb0.
Change the :origin of received context to Ebb1.
Change the :origin of received context to Ebb1.
Change the :origin of received context to Ebb2.
Change the :origin of received context to Ebb2.
Change the :origin of received context to Ebb3.
Change the :origin of received context to Ebb3.
Change the :origin of received context to Ebb4.
Change the :origin of received context to Ebb4.
Change the :origin of received context to Ebb5.
Change the :origin of received context to Ebb5.
Change the :origin of received context to Ex-1.
Change the :origin of received context to Ex-1.
Change the :origin of received context to Ex-2.
Change the :origin of received context to Ex-2.
Change the :origin of received context to Ex-3.
Change the :origin of received context to Ex-3.
Change the :origin of received context to Ex-4.
Change the :origin of received context to Ex-4.
Change the :origin of received context to Ex-5.
Change the :origin of received context to Ex-5.
Change the :origin of received context to Ex0.
Change the :origin of received context to Ex0.
Change the :origin of received context to Ex1.
Change the :origin of received context to Ex1.
Change the :origin of received context to Ex2.
Change the :origin of received context to Ex2.
Change the :origin of received context to Ex3.
Change the :origin of received context to Ex3.
Change the :origin of received context to Ex4.
Change the :origin of received context to Ex4.
Change the :origin of received context to Ex5.
Change the :origin of received context to Ex5.
Change the :origin of received context to F#-1.
Change the :origin of received context to F#-1.
Change the :origin of received context to F#-2.
Change the :origin of received context to F#-2.
Change the :origin of received context to F#-3.
Change the :origin of received context to F#-3.
Change the :origin of received context to F#-4.
Change the :origin of received context to F#-4.
Change the :origin of received context to F#-5.
Change the :origin of received context to F#-5.
Change the :origin of received context to F#0.
Change the :origin of received context to F#0.
Change the :origin of received context to F#1.
Change the :origin of received context to F#1.
Change the :origin of received context to F#2.
Change the :origin of received context to F#2.
Change the :origin of received context to F#3.
Change the :origin of received context to F#3.
Change the :origin of received context to F#4.
Change the :origin of received context to F#4.
Change the :origin of received context to F#5.
Change the :origin of received context to F#5.
Change the :origin of received context to F-1.
Change the :origin of received context to F-1.
Change the :origin of received context to F-2.
Change the :origin of received context to F-2.
Change the :origin of received context to F-3.
Change the :origin of received context to F-3.
Change the :origin of received context to F-4.
Change the :origin of received context to F-4.
Change the :origin of received context to F-5.
Change the :origin of received context to F-5.
Change the :origin of received context to F0.
Change the :origin of received context to F0.
Change the :origin of received context to F1.
Change the :origin of received context to F1.
Change the :origin of received context to F2.
Change the :origin of received context to F2.
Change the :origin of received context to F3.
Change the :origin of received context to F3.
Change the :origin of received context to F4.
Change the :origin of received context to F4.
Change the :origin of received context to F5.
Change the :origin of received context to F5.
Change the :origin of received context to Fb-1.
Change the :origin of received context to Fb-1.
Change the :origin of received context to Fb-2.
Change the :origin of received context to Fb-2.
Change the :origin of received context to Fb-3.
Change the :origin of received context to Fb-3.
Change the :origin of received context to Fb-4.
Change the :origin of received context to Fb-4.
Change the :origin of received context to Fb-5.
Change the :origin of received context to Fb-5.
Change the :origin of received context to Fb0.
Change the :origin of received context to Fb0.
Change the :origin of received context to Fb1.
Change the :origin of received context to Fb1.
Change the :origin of received context to Fb2.
Change the :origin of received context to Fb2.
Change the :origin of received context to Fb3.
Change the :origin of received context to Fb3.
Change the :origin of received context to Fb4.
Change the :origin of received context to Fb4.
Change the :origin of received context to Fb5.
Change the :origin of received context to Fb5.
Change the :origin of received context to Fbb-1.
Change the :origin of received context to Fbb-1.
Change the :origin of received context to Fbb-2.
Change the :origin of received context to Fbb-2.
Change the :origin of received context to Fbb-3.
Change the :origin of received context to Fbb-3.
Change the :origin of received context to Fbb-4.
Change the :origin of received context to Fbb-4.
Change the :origin of received context to Fbb-5.
Change the :origin of received context to Fbb-5.
Change the :origin of received context to Fbb0.
Change the :origin of received context to Fbb0.
Change the :origin of received context to Fbb1.
Change the :origin of received context to Fbb1.
Change the :origin of received context to Fbb2.
Change the :origin of received context to Fbb2.
Change the :origin of received context to Fbb3.
Change the :origin of received context to Fbb3.
Change the :origin of received context to Fbb4.
Change the :origin of received context to Fbb4.
Change the :origin of received context to Fbb5.
Change the :origin of received context to Fbb5.
Change the :origin of received context to Fx-1.
Change the :origin of received context to Fx-1.
Change the :origin of received context to Fx-2.
Change the :origin of received context to Fx-2.
Change the :origin of received context to Fx-3.
Change the :origin of received context to Fx-3.
Change the :origin of received context to Fx-4.
Change the :origin of received context to Fx-4.
Change the :origin of received context to Fx-5.
Change the :origin of received context to Fx-5.
Change the :origin of received context to Fx0.
Change the :origin of received context to Fx0.
Change the :origin of received context to Fx1.
Change the :origin of received context to Fx1.
Change the :origin of received context to Fx2.
Change the :origin of received context to Fx2.
Change the :origin of received context to Fx3.
Change the :origin of received context to Fx3.
Change the :origin of received context to Fx4.
Change the :origin of received context to Fx4.
Change the :origin of received context to Fx5.
Change the :origin of received context to Fx5.
Change the :origin of received context to G#-1.
Change the :origin of received context to G#-1.
Change the :origin of received context to G#-2.
Change the :origin of received context to G#-2.
Change the :origin of received context to G#-3.
Change the :origin of received context to G#-3.
Change the :origin of received context to G#-4.
Change the :origin of received context to G#-4.
Change the :origin of received context to G#-5.
Change the :origin of received context to G#-5.
Change the :origin of received context to G#0.
Change the :origin of received context to G#0.
Change the :origin of received context to G#1.
Change the :origin of received context to G#1.
Change the :origin of received context to G#2.
Change the :origin of received context to G#2.
Change the :origin of received context to G#3.
Change the :origin of received context to G#3.
Change the :origin of received context to G#4.
Change the :origin of received context to G#4.
Change the :origin of received context to G-1.
Change the :origin of received context to G-1.
Change the :origin of received context to G-2.
Change the :origin of received context to G-2.
Change the :origin of received context to G-3.
Change the :origin of received context to G-3.
Change the :origin of received context to G-4.
Change the :origin of received context to G-4.
Change the :origin of received context to G-5.
Change the :origin of received context to G-5.
Change the :origin of received context to G0.
Change the :origin of received context to G0.
Change the :origin of received context to G1.
Change the :origin of received context to G1.
Change the :origin of received context to G2.
Change the :origin of received context to G2.
Change the :origin of received context to G3.
Change the :origin of received context to G3.
Change the :origin of received context to G4.
Change the :origin of received context to G4.
Change the :origin of received context to G5.
Change the :origin of received context to G5.
Change the :origin of received context to Gb-1.
Change the :origin of received context to Gb-1.
Change the :origin of received context to Gb-2.
Change the :origin of received context to Gb-2.
Change the :origin of received context to Gb-3.
Change the :origin of received context to Gb-3.
Change the :origin of received context to Gb-4.
Change the :origin of received context to Gb-4.
Change the :origin of received context to Gb-5.
Change the :origin of received context to Gb-5.
Change the :origin of received context to Gb0.
Change the :origin of received context to Gb0.
Change the :origin of received context to Gb1.
Change the :origin of received context to Gb1.
Change the :origin of received context to Gb2.
Change the :origin of received context to Gb2.
Change the :origin of received context to Gb3.
Change the :origin of received context to Gb3.
Change the :origin of received context to Gb4.
Change the :origin of received context to Gb4.
Change the :origin of received context to Gb5.
Change the :origin of received context to Gb5.
Change the :origin of received context to Gbb-1.
Change the :origin of received context to Gbb-1.
Change the :origin of received context to Gbb-2.
Change the :origin of received context to Gbb-2.
Change the :origin of received context to Gbb-3.
Change the :origin of received context to Gbb-3.
Change the :origin of received context to Gbb-4.
Change the :origin of received context to Gbb-4.
Change the :origin of received context to Gbb-5.
Change the :origin of received context to Gbb-5.
Change the :origin of received context to Gbb0.
Change the :origin of received context to Gbb0.
Change the :origin of received context to Gbb1.
Change the :origin of received context to Gbb1.
Change the :origin of received context to Gbb2.
Change the :origin of received context to Gbb2.
Change the :origin of received context to Gbb3.
Change the :origin of received context to Gbb3.
Change the :origin of received context to Gbb4.
Change the :origin of received context to Gbb4.
Change the :origin of received context to Gbb5.
Change the :origin of received context to Gbb5.
Change the :origin of received context to Gx-1.
Change the :origin of received context to Gx-1.
Change the :origin of received context to Gx-2.
Change the :origin of received context to Gx-2.
Change the :origin of received context to Gx-3.
Change the :origin of received context to Gx-3.
Change the :origin of received context to Gx-4.
Change the :origin of received context to Gx-4.
Change the :origin of received context to Gx-5.
Change the :origin of received context to Gx-5.
Change the :origin of received context to Gx0.
Change the :origin of received context to Gx0.
Change the :origin of received context to Gx1.
Change the :origin of received context to Gx1.
Change the :origin of received context to Gx2.
Change the :origin of received context to Gx2.
Change the :origin of received context to Gx3.
Change the :origin of received context to Gx3.
Change the :origin of received context to Gx4.
Change the :origin of received context to Gx4.
Change the :scale of received context to :harmonic-major.
Change the :scale of received context to :harmonic-major.
Change the :scale of received context to :harmonic-minor.
Change the :scale of received context to :harmonic-minor.
(hc & [spec])
Harmonic context constructor.
Defaults to DEFAULT_HARMONIC_CONTEXT
, but accepts a spec
map that takes precedence over it.
Harmonic context constructor. Defaults to `DEFAULT_HARMONIC_CONTEXT`, but accepts a `spec` map that takes precedence over it.
(hc+ ctx1)
Build an update that merge ctx1
into received context.
:scale, :structure and :origin will be replaced, :position will be shifted by ctx1
's :position.
Build an update that merge `ctx1` into received context. :scale, :structure and :origin will be replaced, :position will be shifted by `ctx1`'s :position.
Get the chromatic value of the given harmonic context.
Get the chromatic value of the given harmonic context.
Get the diatonic value of the given harmonic context.
Get the diatonic value of the given harmonic context.
given a context, compute the corresponding pitch
given a context, compute the corresponding pitch
(hc-seqs {:keys [scale structure]})
Build bidirectional seqs based on the given given harmonic context,
based on its :scale
and :structure
values.
Build bidirectional seqs based on the given given harmonic context, based on its `:scale` and `:structure` values.
The default harmonic context. C Major, triad, middle C positioned
The default harmonic context. C Major, triad, middle C positioned
Test if something is an harmonic context.
Test if something is an harmonic context.
Change the :scale of received context to :hungarian.
Change the :scale of received context to :hungarian.
(inversion n)
Build an update that go to inversion n
(potentially negative) of the received context preserving its position.
Build an update that go to inversion `n` (potentially negative) of the received context preserving its position.
Change the :scale of received context to :ionian.
Change the :scale of received context to :ionian.
Change the :scale of received context to :ionian+.
Change the :scale of received context to :ionian+.
Change the :scale of received context to :ionian++2.
Change the :scale of received context to :ionian++2.
(layer-idx layer ctx)
Get the layer
offset of ctx
transfering upper offsets into given layer
.
Get the `layer` offset of `ctx` transfering upper offsets into given `layer`.
(layer-shift l)
Build a shift update constructor for layer l
.
Unlike step updates, shift updates are not trimming context's position before updating it.
If the layer offset we are trying to shift is not present in the context's position, the shift has no effect.
Unless the forced
optional argument is given.
Build a shift update constructor for layer `l`. Unlike step updates, shift updates are not trimming context's position before updating it. If the layer offset we are trying to shift is not present in the context's position, the shift has no effect. Unless the `forced` optional argument is given.
(layer-step layer n)
Build a step update according to layer
and offset n
.
Please refer to t-step
, s-step
, d-step
and c-step
documentation.
Build a step update according to `layer` and offset `n`. Please refer to `t-step`, `s-step`, `d-step` and `c-step` documentation.
Change the :scale of received context to :locrian.
Change the :scale of received context to :locrian.
Change the :scale of received context to :locrian2.
Change the :scale of received context to :locrian2.
Change the :scale of received context to :locrian6.
Change the :scale of received context to :locrian6.
Change the :scale of received context to :locriano7.
Change the :scale of received context to :locriano7.
Change the :scale of received context to :lydian.
Change the :scale of received context to :lydian.
Change the :scale of received context to :lydian+.
Change the :scale of received context to :lydian+.
Change the :scale of received context to :lydian++2.
Change the :scale of received context to :lydian++2.
Change the :scale of received context to :lydian+2.
Change the :scale of received context to :lydian+2.
Change the :scale of received context to :lydian+2+6.
Change the :scale of received context to :lydian+2+6.
Change the :scale of received context to :lydianb3.
Change the :scale of received context to :lydianb3.
Change the :scale of received context to :lydianb7.
Change the :scale of received context to :lydianb7.
Change the :scale of received context to :melodic-minor.
Change the :scale of received context to :melodic-minor.
(mirror pitch)
Build an update that mirror received context against pitch
.
Build an update that mirror received context against `pitch`.
Change the :scale of received context to :mixolydian.
Change the :scale of received context to :mixolydian.
Change the :scale of received context to :mixolydianb2.
Change the :scale of received context to :mixolydianb2.
Change the :scale of received context to :mixolydianb6.
Change the :scale of received context to :mixolydianb6.
(normalise ctx)
Normalise ctx
's position to its simplest form.
Normalise `ctx`'s position to its simplest form.
Change the :scale of received context to :oriental.
Change the :scale of received context to :oriental.
(origin x)
Build an update that resets the :origin
of the received context to x
.
x
can be either:
Build an update that resets the `:origin` of the received context to `x`. `x` can be either: - a pitch object {:d _ :c _} - a pitch interpretable keyword, symbol or string (e.g C0, F#-2 , Gx2)
Change the :scale of received context to :phrygian.
Change the :scale of received context to :phrygian.
Change the :scale of received context to :phrygian3.
Change the :scale of received context to :phrygian3.
Change the :scale of received context to :phrygian6.
Change the :scale of received context to :phrygian6.
Change the :scale of received context to :phrygianb4.
Change the :scale of received context to :phrygianb4.
(pitch->position ctx p)
Turn a pitch p
into a position according to context ctx
.
Turn a pitch `p` into a position according to context `ctx`.
(position & [t s d c])
Build a position update. takes 0 to four arguments: t: tonic layer offset. s: structural layer offset. d: diatonic layer offset. c: chromatic layer offset.
Build a position update. takes 0 to four arguments: t: tonic layer offset. s: structural layer offset. d: diatonic layer offset. c: chromatic layer offset.
(position+ ctx p)
Shift ctx
's :position by given position p
.
Shift `ctx`'s :position by given position `p`.
(rebase & fs)
Build an update that applies the given updates fs
while preserving pitch.
Build an update that applies the given updates `fs` while preserving pitch.
Build an update that changes the degree of the received context, without changing its pitch. see noon.harmony/degree
.
Build an update that changes the degree of the received context, without changing its pitch. see `noon.harmony/degree`.
Build an update that change the origin of the received context without changing its pitch. see noon.harmony/scale
Build an update that change the origin of the received context without changing its pitch. see `noon.harmony/scale`
(repitch x)
Build an update that repositions the received context based on the given pitch x
Build an update that repositions the received context based on the given pitch `x`
Build an update that changes the root of the received context, without changing its pitch. see noon.harmony/root
.
Build an update that changes the root of the received context, without changing its pitch. see `noon.harmony/root`.
Build an update that change the scale of the received context without changing its pitch. see noon.harmony/scale
Build an update that change the scale of the received context without changing its pitch. see `noon.harmony/scale`
Build an update that change the structure of the received context without changing its pitch. see noon.harmony/scale
Build an update that change the structure of the received context without changing its pitch. see `noon.harmony/scale`
(root pitch-class)
Build an update that given a pitch class (name or map), resets the :origin of the received context to the closest (to current origin) corresponding pitch.
Build an update that given a pitch class (name or map), resets the :origin of the received context to the closest (to current origin) corresponding pitch.
(s+ ctx)
melodic superior diatonic passing note
melodic superior diatonic passing note
(s- ctx)
melodic inferior diatonic passing note
melodic inferior diatonic passing note
(s->c ctx)
Push structural and diatonic offsets into chromatic layer.
Push structural and diatonic offsets into chromatic layer.
(s->d {:as ctx {:keys [s]} :position})
Push structural offset into diatonic layer.
Push structural offset into diatonic layer.
(s->t {{:keys [t s]} :position :as ctx})
Feed as much as possible of the s value into the o value.
Feed as much as possible of the s value into the o value.
Build an update that bring received context to the closest structural position above.
Build an update that bring received context to the closest structural position above.
Build an update that bring received context to the closest structural position below.
Build an update that bring received context to the closest structural position below.
Build a structural position update. takes 0 to 3 arguments: s: structural layer offset. d: diatonic layer offset. c: chromatic layer offset.
Build a structural position update. takes 0 to 3 arguments: s: structural layer offset. d: diatonic layer offset. c: chromatic layer offset.
Build an update that bring received context to the closest structural position.
Build an update that bring received context to the closest structural position.
Builds a structural shift update. see noon.harmony/layer-shift
documentation.
Builds a structural shift update. see `noon.harmony/layer-shift` documentation.
(s-step n)
Build a structural step update which operates as follow:
n
to structural offset.Build a structural step update which operates as follow: - Trim diatonic and chromatic layer offsets after feeding as much as possible to the structural layer offset - Adds `n` to structural offset.
(s-trim {:as ctx})
Push as much as possible diatonic and chromatic offsets into the structural offset, Remove the remainders from those layers, Return a context with a position containing only tonic and structural offsets.
Push as much as possible diatonic and chromatic offsets into the structural offset, Remove the remainders from those layers, Return a context with a position containing only tonic and structural offsets.
(scale x)
Build an update that resets the :scale
of the received context to x
.
x
can be either:
noon.constants/modes
for complete list.Build an update that resets the `:scale` of the received context to `x`. `x` can be either: - a known scale keyword, symbol or string (e.g :dorian, 'melodic-minor, "hungarian" ...) refer to `noon.constants/modes` for complete list. - a mode vector like [0 2 3 5 7 9 10] (for :dorian)
Change the :structure of received context to :seventh.
Change the :structure of received context to :seventh.
(simplest-connection size hc1 hc2)
return a sequence of harmonic contexts representing a melodic line between hc1
and hc2
with size
intermediate contexts.
intermediate contexts are selected on lowset layer in priority.
return a sequence of harmonic contexts representing a melodic line between `hc1` and `hc2` with `size` intermediate contexts. intermediate contexts are selected on lowset layer in priority.
Change the :structure of received context to :sixth.
Change the :structure of received context to :sixth.
(structural-equivalent? ctx)
the current position is equivalent to a structural one.
the current position is equivalent to a structural one.
(structural? ctx)
Does the given context is positioned exactly on the structural layer (or above) ?
Does the given context is positioned exactly on the structural layer (or above) ?
(structure x)
Build an update that resets the :structure
of the received context to x
.
x
can be either:
noon.constants/structures
for complete list.Build an update that resets the `:structure` of the received context to `x`. `x` can be either: - a known structure keyword, symbol or string (e.g :triad, 'tetrad, "sus4" ...) refer to `noon.constants/structures` for complete list. - a structure vector like [0 2 4 6] (for :tetrad)
(structure-add scale-idx)
Build an update that add the given scale-idx
to the :structure of the received context.
Build an update that add the given `scale-idx` to the :structure of the received context.
(structure-remove scale-idx)
Build an update that removes the given scale-idx
to the :structure of the received context.
Build an update that removes the given `scale-idx` to the :structure of the received context.
Change the :scale of received context to :superlocrian.
Change the :scale of received context to :superlocrian.
Change the :scale of received context to :superlocriano7.
Change the :scale of received context to :superlocriano7.
Change the :structure of received context to :sus2.
Change the :structure of received context to :sus2.
Change the :structure of received context to :sus27.
Change the :structure of received context to :sus27.
Change the :structure of received context to :sus4.
Change the :structure of received context to :sus4.
Change the :structure of received context to :sus47.
Change the :structure of received context to :sus47.
Change the :structure of received context to :sus6.
Change the :structure of received context to :sus6.
Change the :structure of received context to :sus67.
Change the :structure of received context to :sus67.
Change the :structure of received context to :sus7.
Change the :structure of received context to :sus7.
(t->c ctx)
Push tonic, structural and diatonic offsets into chromatic layer.
Push tonic, structural and diatonic offsets into chromatic layer.
(t->d ctx)
Push tonic and structural offsets into diatonic layer.
Push tonic and structural offsets into diatonic layer.
(t->s {:as ctx {:keys [t]} :position})
Push tonic offset into structural layer.
Push tonic offset into structural layer.
Build an update that bring received context to the closest tonic position above.
Build an update that bring received context to the closest tonic position above.
Build an update that bring received context to the closest tonic position below.
Build an update that bring received context to the closest tonic position below.
Build an update that bring received context to the closest tonic position.
Build an update that bring received context to the closest tonic position.
Builds a tonic shift update. see noon.harmony/layer-shift
documentation.
Builds a tonic shift update. see `noon.harmony/layer-shift` documentation.
(t-step n)
Build a tonic step update which operates as follow:
n
to tonic offset.Build a tonic step update which operates as follow: - Trim structural, diatonic and chromatic layer offsets after feeding as much as possible to the tonic layer offset - Adds `n` to tonic offset.
(t-trim {:as ctx})
Push as much as possible structural, diatonic and chromatic offsets into the tonic offset, Then remove the remainders from those sublayers, returning a context with a pure tonic position.
Push as much as possible structural, diatonic and chromatic offsets into the tonic offset, Then remove the remainders from those sublayers, returning a context with a pure tonic position.
Change the :structure of received context to :tetrad.
Change the :structure of received context to :tetrad.
(tonic-equivalent? ctx)
the current position is equivalent to a tonic one.
the current position is equivalent to a tonic one.
(tonic? ctx)
Does the given context is positioned exactly on the tonic layer ?
Does the given context is positioned exactly on the tonic layer ?
(transpose x)
Build an update that transposes the current :origin using the given update x
.
It works as follow:
x
.Build an update that transposes the current :origin using the given update `x`. It works as follow: - Reposition received context to POSITION_ZERO. - Updates it using `x`. - Use the resulting pitch as the new :origin for the received context.
Change the :structure of received context to :triad.
Change the :structure of received context to :triad.
Change the :scale of received context to :ultralocrian.
Change the :scale of received context to :ultralocrian.
Change the :scale of received context to :ultraphrygian.
Change the :scale of received context to :ultraphrygian.
(upd ctx x)
(upd ctx x & xs)
thread context ctx
through given updates x & xs
.
thread context `ctx` through given updates `x & xs`.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close