Search the Community
Showing results for tags 'tonality-map'.
Found 7 results
LISP Defun Question
Avner Dorman posted a topic in Function ExamplesI have a basic lisp question - I'd like to create a function that takes a tonality as its argument and performs something like the following line: (setf test (tonality-map '((pcs '3-2) :root b3 :map shift) (make-scale 'c4 12))) So (defun pitches (tonality) .....) - and then (pitches (pcs '3-2)) would return the list (b3 c4 d4 b4 c5 d5 b5 c6 d6 b6 c7 d7) Thanks so much!
mapping <gen-sort> by <tonality-map>
AM posted a topic in Score and Notationlike this (?)... ;;; mapping to MAJOR (setf sort-seq (integer-to-pitch (flatten (gen-sort (rnd-order (gen-integer 24)) :type 'selection)))) (def-score example-score (:key-signature 'atonal :time-signature '(4 4) :tempo 90 :layout (treble-layout 'seq)) (seq :omn (make-omn :pitch (setf n (tonality-map '(major :map step :root 'c4) sort-seq)) :length (gen-repeat (length (flatten n)) '(t))))) ;;; mapping to MESSIAEN-mode (setf sort-seq (integer-to-pitch (flatten (gen-sort (rnd-order (gen-integer 24)) :type 'insertion)))) (def-score example-score (:key-signature 'atonal :time-signature '(4 4) :tempo 90 :layout (treble-layout 'seq)) (seq :omn (make-omn :pitch (setf n (tonality-map '(messiaen-mode5 :map step :root 'c4) sort-seq)) :length (gen-repeat (length (flatten n)) '(t))))) ;;; mapping to a XENAKIS-SIEVE -> how can i do that with TONALITY-MAP? (but not necessary) (setf sieve (gen-sieve '((c4 g7) (c1 g7)) '((2 1 12) (3 5)) :type :pitch)) (setf sort-seq (flatten (gen-sort (rnd-order (gen-integer (length sieve))) :type 'insertion :sort '?))) (def-score example-score (:key-signature 'atonal :time-signature '(4 4) :tempo 90 :layout (treble-layout 'seq)) (seq :omn (make-omn :pitch (setf n (loop for i in sort-seq collect (nth i sieve))) :length (gen-repeat (length (flatten n)) '(t)))))
I like how the function tonality-map allows specifying some input harmony (called tonality) and raw music, where the "raw" music is then quasi-quantised into the given harmony. However, I would like to control in which octaves specific tones are allowed to occur. tonality-map allows specifying an underlying harmony that ranges over multiple octaves, but it seems that internally only octave-less pitch classes are used, and any tone in the harmony can occur in any octave in the result. By contrast, in the spectral tradition of music thinking, you change the underlying spectrum if you scramble in which octaves pitches occur. For example, if you have a spectrum or chord that approximates the overtone series, then that spectrum sounds rather consonant, regardless how far up in the overtone series you allow tones to be included. However, if you then randomly octave-transpose the pitches of this spectrum/chord, then it can become much more dissonant, without changing any pitch classes. To be more specific here is a dummy example with simple traditional chords where tones are distributed across octaves in a certain way. (tonality-map ;; underlying harmony or spectra '((c4g4e5b5d6) (g3d4b5f5a4)) ;; input music '((h c4f5 cs4fs5) (d4g5 cs4gs5) (eb4as5 f4a5) (e4gs5 c4gs5)) ;; harmonic rhythm :time '(w w w_w)) => ((h c4e5 c4g5) (h a3d5 g3d5) (h e4b5 e4b5) (h e4g5 c4g5)) As you can see, the tone G in the first tonality occurs only in octave 4, but in the result, in the second chord of the first bar (still following the first tonality) we have a g5 instead. Now, you might feel that the g5 does not musically do any harm, but in the second tonality, there is an A only in octave 6, while in the function output in the related third chord the A occurs three octaves lower in octave 3, where it greatly increases the dissonance degree of this chord/scale. So, is there a way to restrict the octaves of tones in the result to be restricted to the octaves of these tones in the respective tonalities? Alternatively, is there another function that complements tonality-map, where I can force some "raw" music to follow some underlying harmony with a given harmonic rhythm, and where the octaves of the resulting pitches can be restricted? Thank you! Best, Torsten
terekita posted a topic in Support & TroubleshootingHello, I'm a little confused about how to include the :map step tonality form in this example. I start with my tonality-series: (setf g-tonality (tonality-series '( (0 3 5 7 10)) :root '(8 11 4 7 0 4 11 4 7 0 3 8 0 7 0 4 11 4 8 3 8 0 7 0 8 3))) Next, I grab an omn list: (setf bomn1 '(#|1|# (q^e.. b4 q^e.. -e e^s. b4) #|2|# (q^e.. a4 q^e.. -e e^s. d5) #|3|# (q^e.. d5 q^e.. cs5 -e e^s. g4) #|4|# (e.^et g4 s^t e4 q^e.. fs4 -e e^s. a4) #|5|# (e.^et d4 s^t e4 q^e.. f4 -e e^s. g4) #|6|# (e.^et g4 s e4 d4 e. c4 -e e4) #|7|# (e. a3 s b3 q c4 -e d4) #|8|# (e. d4 s b3 q g3 -) #|9|# (e. g5 3e^t fs5 t e5 q d5 -e s b5 tie 3e tie 3t tie) #|10|# (3t b5 q a5 a5 -e s a5 tie 3e tie 3t tie) #|11|# (3t a5 q q g5 -e s g5 tie 3e tie 3t tie) #|12|# (3t g5 e. s e5 b4 e. a4 -e s g5 tie 3e tie 3t tie) #|13|# (3t g5 e. s e5 e5 e. fs5 -e s a5 tie 3e tie 3t tie) #|14|# (3t a5 e. b5 s fs5 fs5 e. g5 -e s g5 tie 3e tie 3t tie) #|15|# (3t g5 q q cs5 -e s a4 tie 3e tie 3t tie) #|16|# (3t a4 e. s e4 e4 e. fs4 -e -s -3e -3t) #|17|# (-3t e fs4 tie t - e4 - q fs4 -e s. d4 -3s) #|18|# (-3t e g4 tie t - a4 - a4 - e. b4 -e s. g5 -3s) #|19|# (-3t e. e5 s b5 q a5 -e s a5 tie 3e tie 3t tie) #|20|# (3t a5 e tie t - fs5 - q ds5 -e s. fs5 -3s) #|21|# (-3t e g5 tie t - fs5 - q e5 tie s. -t s g5 tie 3e tie 3t tie) #|22|# (3t g5 q q f5 -e s a5 tie 3e tie 3t tie) #|23|# (3t a5 e. s fs5 q ds5 -e s fs5 tie 3e tie 3t tie) #|24|# (3t fs5 e. s ds5 t e5 ds5 e. e5 -3e e3 fs3 g3 a3 t b3 tie) #|25|# (3t b3 e e4 -s gs4 e. a4 s b4 e c5 tie s tie 3e tie 3t tie) #|26|# (e c5 tie 3t -s fs4 e. g4 s a4 e b4 tie s tie 3e tie 3t tie) #|27|# (e b4 tie 3t -s e4 e. fs4 s g4 e. a4 3e g4 tie 3t tie) #|28|# (3t g4 3s fs4 tie fs4 3t g4 tie t 3e fs4 cs4 d4 e4 fs4 e4 fs4 g4 fs4 g4 3e^t a4 g4 a4 b4 g4 t a4 tie) #|29|# (3t a4 3s b4 tie b4 3t c5 tie t 3e b4 fs4 g4 a4 3e^t b4 a4 b4 c5 b4 c5 d5 c5 d5 e5 c5 t d5 tie) #|30|# (3t d5 3s e5 tie e5 3t f5 tie t 3e e5 b4 c5 d5 3e^t e5 d5 e5 fs5 e5 fs5 g5 fs5 g5 a5 fs5 t g5 tie) #|31|# (3t g5 3s a5 tie a5 3t b5 tie t 3e a5 fs5 g5 a5 b5 a5 b5 d6 c6 b5 a5 g5 fs5 e5 d5 t c5 tie) #|32|# (3t c5 3s b4 tie b4 3t a4 tie t 3e g4 fs4 g4 d4 s. b3))) And finally, do the tonality map: (setf mapped-g (omn-to-time-signature (tonality-map g-tonality bomn1 :time '(4/8 2/8 4/8 2/8 3/4 4/8 2/8 4/8 2/8 4/8 2/8 3/4 4/8 2/8 3/4 4/8 2/8 3/4 4/8 2/8 3/4 4/8 2/8 3/4 4/8 2/8) :loop t ) '(3 4))) Ok, all of that works, but I'd like to use :map step when I create the tonality-map, and I can't figure out where to put that. It seems like it wants to be part of a list with, in my example, g-tonality, but I'm not seeing quite how to do it. Any tips would be greatly appreciated. Thanks!, Michael
AM posted a topic in User Extensions Source Codei'm sure that it would also work with tonality-map, but i was interested to code a simple version for my own to understand all the things :-) ;;; i wanted to map every interval-sequence to every possible pitchfield... ;;; all the sequences are "centered" (i needed that for my project) ;;; with :base you could move up and down the center ;;; :pitchfield has to be a OMN-pitch-sequence ;;; FUNCTION (defun interval-projection-on-pitchfield (&key pitchfield intervals (base 0)) (let ((integers (pitch-to-integer (interval-to-pitch intervals))) (base-0-integers) (centering) (pos)) (setq base-0-integers (loop for i in integers collect (+ (abs (find-min integers)) i))) (setq centering (if (evenp (find-max base-0-integers)) ;; finds the center of the seq (/ (find-max base-0-integers) 2) (/ (1+ (find-max base-0-integers)) 2))) (loop for i in base-0-integers do (setq pos (+ i (* -1 centering) base)) ;; compensating center & base when (< pos 0) do (setq pos 0) ;; corr if intervals to big (+/-) when (> pos (1- (length pitchfield))) do (setq pos (1- (length pitchfield))) collect (nth pos pitchfield)))) ;;; EXAMPLE (interval-projection-on-pitchfield :pitchfield (append (expand-tonality '(c4 messiaen-mode5)) (expand-tonality '(c5 messiaen-mode5)) (expand-tonality '(c6 messiaen-mode5))) :intervals '(1 2 3 1 2 -4 -3 -2 3 5 7 -2) :base 12) short question: is there a possibilty to build this (append (expand-tonality '(c4 messiaen-mode5)) (expand-tonality '(c5 messiaen-mode5)) (expand-tonality '(c6 messiaen-mode5))) with ONE function (i need more ambitus then 1 octave)... thanx, andré
Pitch Mapping Project Idea
RST posted a topic in Support & TroubleshootingHere is a small project to explore pitch-mapping. There are some results but not the best ones yet. If anyone has an idea on how to improve this I would really appreciate the advice. What would be ideal as the result would be the same musical list (and notation) but with the transformed pitches. As you can see from the result, there are many changes and the result is not clean but rather seriously garbled instead! The goal is to remap the pitch content of the original with a new tonality-map. Here is the beginning attempt. A confusing element is the return of NIL when parsing :articulation from the original material. ;;; Pitch mapping project idea ;;; Original musical sequence: (setf alto-flute-orig '( (-q e b4 -e (-app e eb4 f4) h. eb4 (-acc e f4 eb4 f4)) (-3q 3q b4 -3q (-app e eb4 f4) q eb4 (-acc e f4) h eb4 (-acc e f4 a4 b4)) (-q e f5 -e (-app e b4 ds5) a4 (-app e. g4) a4 t b4 a4 b4 -e (-app e eb5) e f5) ((acc e b4 d5 ds5) q. c5 (acc s f5) e. b4 (acc e c5 d5 ds5) e. a4 (acc e b4 a4) e b4) (-q e b4 (app e f4 a4 f4) e b4 t g4 a4 eb4 a4 q. b4 (-acc e f4 a4) h bb4 t bb4 c5) (-e. b4 -e (acc a4 b4) h bb4 (app e c5) q b4 (acc e d5 ds5 e5) q. b4 (app e f4 bb4) s c5) (-e gs5 3s a4 d4 gs4 -e. bb4 tie q bb4 (3e b4 a4 b4 -e -e)) ((acc e a4 b4 fs4) h c5 (acc e b4) q c5 (acc e ds5 e5 fs5) 3e b4 c5 fs4 q a4 tie q a4 tie e. a4 s bb4 a4 e b4) (-e (acc e eb4) h f4 tie e. f4 s gb5 -e (acc eb5 f5) e e5 tie q e5 tie 3q e5 3q e5 3q f5 3q b4 -3q -3q) ((acc e bb4 b4) a4 (acc e bb4) h a4 (acc e bb4) e a4 s gs5 -s) ) ) ;;; ;;; Disassemble OMN: There are some errors here - in particular for :articulation which seems to return NIL (disassemble-omn alto-flute-orig) (setf pit (omn :pitch alto-flute-orig)) (setf len (omn :length alto-flute-orig)) ;;; next line result is confusing - returns nil (setf art (omn :articluation alto-flute-orig)) ;;; next line returns a result (setf artr (omn :rest-articulation alto-flute-orig)) ;;; Create 12-tone mapping and pitch transformation of original (setf map '(0 1 3 4 7 8 10 11 17 18 21)) (setf mapping (integer-to-pitch map)) (create-tonality 12T2 '(0 1 3 4 7 8 10 11 17 18 21)) (setf output (tonality-map '(12T2 :root c3 :fixed t) pit)) ;;; Assemble the parameters into a new OMN with transformed pitches (make-omn :length len :pitch output :articulation art :rest-articulation artr ) ;;; The result is unsuable so far. There are some things to iron-out here! :-)
Tonality Mapping Question
RST posted a topic in Support & TroubleshootingGreetings friends, I have a little project I am working on - to map a two-octave scale 12-tone scale. I want to be able to re-write pitches into this scale and to use the results in both harmonic and melodic contexts. However, I am finding some puzzlement! Here is a code fragment of what I am working on: (create-tonality 12-tone-2 '(0 1 3 4 7 8 10 11 14 17 18 21)) (tonality-map '(12-tone-2 :root c4 :shift t) '(c3 d3 e3 f3)) My thought is that it SHOULD result in: 0 1 3 4 - c cs ds e - as the result. Specifically: c4 cs4 ds4 e4 (or the enharmonic equivalent). But, the result is: c eb (ds) g gs !! Specifically: c3 ebb g3 gs3. Perhaps someone can help by pointing out my mistake? With thanks, Robert