# ALL Interval 12-tone Rows and 12-tone control

## Recommended Posts

Dear Friends,

I need some help on functions related to more control over 12-tone rows,

specially the interval content.

For example, below there are Berg's Lyric Suite 12-tone Row.

This is an example of all interval series, a combination of every interval.

This All interval series are very interesting harmonically, since it

produces very consonant trichords.

1) I'd like to control the building of the 12-tone rows, in relation to

it's properties to get more control over the harmonic output.

What are the methods and fuctions related to it ?

```(setf berglyric '(f4 e4 c4 a4 g4 d4 ab4 db4 eb4 gb4 bb4 b4))

(pitch-to-interval berglyric)

(respell (gen-chord2 20 '(3 3 3) no012row))
(respell (gen-chord2 40 '(3 3 3 1) berglyric))```

2) How to retrieve the notes of the series for genarating chords in different

ways and matrices, like in sequence or every other note.

For example

Hypothetical ROW

(0 1 2 3 4 5 6 7 8 9 10 11)

How to retrieve:

0 2 4 6 8 10 (skipping every one note)

or

0 3 6 9

OR HARMONIC MATRICES, Like

Trichords

(0 1 2)

(3 4 5)

(6 7 eight)

(9 10 11)

OR

(0 4

(1 5 9)

(2 6 10)

(3 7 11)

Any help is welcome !

Best,

Julio

##### Share on other sites

Hi Julio,

for creating All interval row, you can use the Opusmodus function air and also the two other related functions air-group and rnd-air.

For extracting chords etc, my favorite way is to use the function harmonic-progression but several other way are possible.

Here's a short exemple of using the function harmonic-progression on All Interval Row:

```(setf row (air 24 :prime :type :pitch))

=> (c4 cs4 eb4 a4 gs4 e4 d4 f4 bb4 g4 b4 fs4)

;; extracting some chords /scales

(setf chords1 (harmonic-progression
(rnd-number 8 -6 6)
row
:step 2
:size 4
))

(setf chords2 (harmonic-progression
(rnd-number 8 -6 6)
row
:step '(2 1 2 3)
:size 4
:relative t
))

(setf chords3 (harmonic-progression
(rnd-number 8 -6 6 :seed 4738)
row
:step '(2 (1 2) 3)
:size 4
:relative t
:seed 384
))```

Have a nice day.

S.

##### Share on other sites

Dear Stephane,

Thanks a lot for this insigthful answer !

There are so many beautiful hidden secrets in Opusmodus.

I was searching for row, 12-tone, series, but never ocurred to

me searching "air".

There's a need for some historical music-oriented tutorials.

All the best !

Julio

##### Share on other sites

... a keyword/text search within the feature descriptions would be very useful.... so if i search "all-interval" i could find AIR etc....

##### Share on other sites
13 hours ago, AM said:

... a keyword/text search within the feature descriptions would be very useful.... so if i search "all-interval" i could find AIR etc....

Great idea Andre!

Best,

Julio

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

×   Pasted as rich text.   Paste as plain text instead

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×

• ### Similar Topics

• By AM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; rnd-walk in a pitchfield - with interval-control ;;; ;;; this is a little function which does an rnd-walk in a special way ;;; the function is checking all possible interval-pairs first inside the pitchfield ;;; so that is on one hand all the time "inside" the pitchfield/sieve, but also only ;;; uses the :POSSIBLE-INTERVALS, so you could control the "interval-color" of the walk ;;; in an non-chromatic-pitchfield/sieve ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun enlarge-intervals (possible-intervals &key (octaves 2)) (let ((possible-intervals (append possible-intervals (loop repeat octaves for i = 12 then (incf i 12) append (x+b possible-intervals i))))) (append possible-intervals (neg! possible-intervals)))) ;(enlarge-intervals '(2 3 4)) ;;;;;;;;;;; (defun special-rnd-walk (n &key pitchfield startpitch possible-intervals (interval-octaves 2)) (let ((int-list (loop for i in pitchfield collect (list (pitch-to-midi i) (loop for x in pitchfield with int do (setf int (car (pitch-to-interval (list i x)))) when (/= int 0) collect int)))) (possible-intervals (enlarge-intervals possible-intervals :octaves interval-octaves))) (append (list startpitch) (midi-to-pitch (loop repeat n with int with pitch = (pitch-to-midi startpitch) do (setf int (rnd-pick (filter-preserve possible-intervals (cadr (assoc pitch int-list))))) when (null int) do (setf int (rnd-pick (cadr (assoc pitch int-list)))) collect (setf pitch (pitch-to-midi (cadr (interval-to-pitch (list int) :start (midi-to-pitch pitch)))))))))) ;;;;;;;;;;; EXAMPLES ;;; rnd-walk in a "chromatic-field" - as the most easiest example/way ;;; => so all possible-intervals could be used -> THE ORDINARY WAY... (special-rnd-walk 20 :startpitch 'cs4 :pitchfield '(gs3 a3 bb3 b3 c4 cs4 d4 ds4 e4 f4 fs4 g4 gs4 a4) :possible-intervals '(1 2 3)) ;;; BUT have a look to the next examples!!! ;;; rnd-walk in a PITCHFIELD -> the function is checking all possible interval-pairs inside the pitchfield ;;; so that the rnd-walk INSIDE the PITCHFIELD could be done with specific intervals (if they are inside the field) ;;; COMPARE THE RESULT with the PITCHFIELD!!! ;;; (setf pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6)) ;;; "interval-color" of the walk is made with :possible-intervals (special-rnd-walk 5 :startpitch 'ds4 :pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6) :possible-intervals '(1 2 3)) ; + octaves of this intervals (special-rnd-walk 10 :startpitch 'ds4 :pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6) :possible-intervals '(1 3 4 5) :interval-octaves 0) ;;; reduced interval-span (special-rnd-walk 10 :startpitch 'ds4 :pitchfield '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6) :possible-intervals '(5 6 7)) ; + octaves of this intervals
more examples -> SOUND

;;; rnd-versions so you will here the different interval-colors inside the pitchfield (setf seq (gen-sieve '(f3 fs6) '(4 2 1 1 1 2 4 7) :type :pitch)) ;(setf seq (gen-sieve '(f3 fs6) '(7 4 2 1 1 1 2 4) :type :pitch)) ;(setf seq '(gs3 cs4 ds4 g4 a4 b4 d5 e5 fs5 bb5 c6 f6)) (setf pitchlist (special-rnd-walk (rnd-pick '(3 5 7 11)) :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals (rnd-pick '((1 2) (3 4) (5 6 7))) :interval-octaves 3)) (def-score intervals (:title "walk" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch pitchlist :length '(t) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano))

;;; rnd-walk in SIEVE only with intervals '(5 6 8) (setf seq (gen-sieve '((c4 g7) (c2 g7)) '((2 1 10) (3 5)) :type :pitch)) (setf pitchlist (special-rnd-walk 30 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(5 6 8))) (def-score intervals (:title "intervals" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch pitchlist :length '(t) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano))

(setf seq (gen-sieve '((c2 g7) (c2 g7)) '((2 1 10) (3 5)) :type :pitch)) ;;; EXAMPLE with changes -> all inside the same SIEVE (setf pitchlist (append (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(1)) ; minor second (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(2)) ; major second (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(3 4)) ;thirds (special-rnd-walk 50 :startpitch (rnd-pick seq) :pitchfield seq :possible-intervals '(5 7)))) ; fourth-fifth (def-score intervals (:title "intervals" :key-signature 'atonal :time-signature '(4 4) :tempo 90) (instrument :omn (make-omn :pitch pitchlist :length '(t) :span :pitch) :channel 1 :sound 'gm :program 'acoustic-grand-piano))
• By born
Hi,
how can I convert binaries to intervals?

(gen-binary-euclidean 1 14 8 8) => (1 0 1 1 0 1 0 1 0 1 1 0 1 0)

Each set of (1 0) shoud be replaced by 2 resulting in  '(2 1 2 2 2 1 2 2).

Thanks for help.
Achim
• By terekita
Hello,

I'm aware of pcs-analysis (which prints data), but I'm looking for a way to collect lists of Forte-style interval vectors into a data structure in order to query them for similarity and difference. Something like:

(get-interval-vector '3-1)
-> (2 1 0 0 0 0)

Is there an easy way to do this?

thanks, Michael
×

• Lessons