AM Posted November 28, 2018 Share Posted November 28, 2018 (edited) ;;; THIS FUNCTION DOING SYMM TRANSPOSITIONS TO CONRACT (OR EXPAND, depends on INTERVAL) A CHORD or PITCH-SEQ ;;; default setting: it changes in every generation the highest and lowest pitch by an OCTAVE ;;; by changing :position (see examples) you could change which position should be changed/transposed ;;; default interval is 12 ;;; FUNCTION (defun chord-contraction/expansion (n pitchlist &key (position nil) (interval 12) (chord nil)) (let* ((pitchlist (if (chordp (car pitchlist)) (melodize pitchlist) pitchlist)) (position (if (null position) (list 0 (1- (length pitchlist))) (if (listp position) position (list position (- (1- (length pitchlist)) position))))) (pitchlist (cons pitchlist (loop repeat n collect (setf pitchlist (sort-asc (flatten (position-replace position (list (pitch-transpose interval (list (nth (car position) pitchlist))) (pitch-transpose (neg! interval) (list (nth (cadr position) pitchlist)))) pitchlist)))))))) (if (null chord) pitchlist (chordize pitchlist)))) ;;; EXAMPLES: evaluate by cmd3 (setf 12-tone-field '(f3 fs3 gs3 c4 d4 e4 b4 cs5 eb5 g5 a5 bb5)) (chord-contraction/expansion 4 12-tone-field :chord t) => ((f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (fs3gs3c4d4e4f4bb4b4cs5eb5g5a5) (gs3c4d4e4f4fs4a4bb4b4cs5eb5g5) (c4d4e4f4fs4g4gs4a4bb4b4cs5eb5) (d4eb4e4f4fs4g4gs4a4bb4b4c5cs5)) (chord-contraction/expansion 4 12-tone-field :chord t :interval 48) => ((f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (bb1fs3gs3c4d4e4b4cs5eb5g5a5f7) (f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (bb1fs3gs3c4d4e4b4cs5eb5g5a5f7) (f3fs3gs3c4d4e4b4cs5eb5g5a5bb5)) ;;; with spezific positions (inner change) (chord-contraction/expansion 4 12-tone-field :chord t :position 3) => ((f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (f3fs3gs3d4eb4e4b4c5cs5g5a5bb5) (f3fs3gs3cs4eb4e4b4c5d5g5a5bb5) (f3fs3gs3d4eb4e4b4c5cs5g5a5bb5) (f3fs3gs3cs4eb4e4b4c5d5g5a5bb5)) (chord-contraction/expansion 4 12-tone-field :chord t :position '(0 5)) => ((f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (e3fs3gs3c4d4f4b4cs5eb5g5a5bb5) (f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (e3fs3gs3c4d4f4b4cs5eb5g5a5bb5) (f3fs3gs3c4d4e4b4cs5eb5g5a5bb5)) ;;;; with different intervals (chord-contraction/expansion 4 12-tone-field :chord t :interval 11) => ((f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (fs3gs3c4d4e4e4b4b4cs5eb5g5a5) (gs3c4d4e4e4f4bb4b4b4cs5eb5g5) (c4d4e4e4f4g4gs4bb4b4b4cs5eb5) (d4e4e4e4f4g4gs4bb4b4b4b4cs5)) (chord-contraction/expansion 4 12-tone-field :chord t :interval 7) => ((f3fs3gs3c4d4e4b4cs5eb5g5a5bb5) (fs3gs3c4c4d4e4b4cs5eb5eb5g5a5) (gs3c4c4cs4d4e4b4cs5d5eb5eb5g5) (c4c4cs4d4eb4e4b4c5cs5d5eb5eb5) (c4cs4d4eb4e4g4gs4b4c5cs5d5eb5)) Edited November 28, 2018 by AM BUG FIXED loopyc and lviklund 2 Quote Link to comment Share on other sites More sharing options...
AM Posted November 28, 2018 Author Share Posted November 28, 2018 BUG is fixed now. should work correct! Quote Link to comment Share on other sites More sharing options...
JulioHerrlein Posted November 29, 2018 Share Posted November 29, 2018 Looks interesting. The function seems to work. I tryed some ideas with 3 or 4-note chords. It's easier to figure out what it does. What is the musical idea behind it ? What's the musical purpose? Any example in the context of a composition? Best, Julio Quote Link to comment Share on other sites More sharing options...
AM Posted November 30, 2018 Author Share Posted November 30, 2018 hi julio it's too complicated to share the code...the FUNCTION is made for a specific idea of the work (not common), so it's made for MY need... here is a short sketch of the work... (part of it) a) generating a pitch-sequence => by using a 12-tone-seq + its expansion by a sorting-algorithm (with GEN-SORT) => an INTERVAL-order mutates to a SCALE (see the list-plot) b) pitches are projected on a sequence of symmetrical expanding/compressing FIELDS (with CHORD-CONTR...) => you see how the pitch-seq is contracted/exapnded in "space" - result is a kind of interference of this processes => at the end you see (in list-plot) that the interference is going more and more to ONE LEVEL - to a SCALE - so its a kind of inside/out. the inherent structure, the inherent process/order is more and more recognizable during the process (start with compr/exp. 12-tone-row to the simple SCALE) the project is a bit larger. this sequence (which rhythm is based on a binary-event-filter (data of a jpeg of an artist)) is only the structural background (some ideas developed by LACHENMANN) - on this NET (the score you see) there will be other GESTALTS/MOTIFS etc... because my needs are such specific to my and my idea - most of the functions i had to code for myself, or modify/enlarge the OPMO functions, great that this is possible on this platform. sorry a bit complicated and i can't not describe it properly with a few words loopyc, opmo, lviklund and 1 other 4 Quote Link to comment Share on other sites More sharing options...
JulioHerrlein Posted November 30, 2018 Share Posted November 30, 2018 Dear André, Thank you for the detailed explanation. In the mind of the composers there is a lot of not so evident processes. This is deep. All the best, Julio Quote Link to comment Share on other sites More sharing options...
lviklund Posted November 30, 2018 Share Posted November 30, 2018 André, Thank you for the explanation. I agree with JH. Interesting. /Lasse JulioHerrlein 1 Quote Link to comment Share on other sites More sharing options...
AM Posted November 30, 2018 Author Share Posted November 30, 2018 you should also share your ideas/thoughts/concepts!!?? JulioHerrlein 1 Quote Link to comment Share on other sites More sharing options...
lviklund Posted December 1, 2018 Share Posted December 1, 2018 I will share whatever I can as soon as I can. I'm writing (notating) everything by hand when composing and arranging. I have used OM since day 1 and before that SCOM for many years. Still I have not learned much Lisp mainly caused by lack of time. I use these tools mainly for chaotic experimenting I would say. I have just quit working and is now a happy retired and hope to be able to spend more time wit OM and Lisp. /Lasse Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.