Jump to content

Search the Community

Showing results for tags 'lyrics'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Welcome to Opusmodus
    • Announcements
    • Pre-Sales Questions
  • Support Forum
    • Support & Troubleshooting
    • OMN Lingo
    • Function examples
    • Score & Methods
    • Notation & Layout
    • Live Coding Instrument
    • Library & Sound Sets
    • MIDI Setup
    • Programming (Common Lisp)
  • Sharing
    • Made in Opusmodus
    • Templates & Customisation
  • Feedback
    • Suggestions & Ideas

Blogs

  • Stephane Boussuge's Blog
  • Deb76's Blog
  • Janusz Podrazik

Calendars

  • Community Calendar

Categories

  • Howto
  • Getting Started
  • Live Coding
  • Music Theory and Analysis

Marker Groups

  • Members

Found 3 results

  1. Opusmodus 1.2.22097

    Some changes to the Text & Lyrics tools. If you used one of them please check the new functions. The text-to-pitch function is replaced with TEXT-MAP with more options and functionality. text-map map text &key flat rnd-order otherwise seed [Function] Arguments and Values: map a list of lists (<letter><symbol>) text a string, a string list list of a list of letters. flat T or NIL. The default is T. rnd-order T or NIL. The default is NIL. otherwise Nil, symbol or list of symbols. The default is NIL. seed an integer - ensure the same result each time the code is evaluated. The default is NIL. Description: This function converts a body of text into any symbol (parameter). It’s a further way to use words ("text") or a list of letters to create parametric material. Notice, that the function creates lists for each word and that punctuation is ignored. In the following examples we will map a text to integers. First we create a map: (defparameter *map-integer1* '(((a à á â ã ä å æ ą) 0) (b 1) ((c ç ć) 2) (d 3) ((e è é ê ë ę) 4) (f 5) (g 6) (h 7) ((i ì î ï) 8) (j 9) (k 10) ((l ł) 11) (m 12) ((n ñ ń) 13) ((o ò ó ô õ ö) 14) (p 15) (q 16) (r 17) ((s ś) 18) (t 19) ((u ù ú û ü) 20) (v 21) (w 22) (x 23) ((y ý ÿ) 24) ((z ż ź) 25))) (setf text '("To be, or not to be, that is the question")) (text-map *map-integer1* text) => ((19 14) (1 4) (14 17) (13 14 19) (19 14) (1 4) (19 7 0 19) (8 18) (19 7 4) (16 20 4 18 19 8 14 13)) In the following map each letter is mapped into a list of two integer values. The letter (a à á â ã ä å æ ą) is mapped to 0 and -12. Every time the letter (a à á â ã ä å æ ą) is processed, 0 or -12 integer is picked at random. (defparameter *map-integer2* '(((a à á â ã ä å æ ą) (0 -12)) (b (1 -1)) ((c ç ć) (2 -2)) (d (3 -3)) ((e è é ê ë ę) (4 -4)) (f (5 -5)) (g (6 -6)) (h (7 -7)) ((i ì î ï) (8 -8)) (j (9 -9)) (k (10 -10)) ((l ł) (11 -11)) (m (12 -12)) ((n ñ ń) (13 -13)) ((o ò ó ô õ ö) (14 -14)) (p (15 -15)) (q (16 -16)) (r (17 -14)) ((s ś) (18 -18)) (t (19 -19)) ((u ù ú û ü) (20 -20)) (v (21 -21)) (w (22 -22)) (x (23 -23)) ((y ý ÿ) (24 -24)) ((z ż ź) (25 -25)))) (text-map *map-integer2* text) => ((19 -14) (-1 -4) (14 17) (-13 -14 -19) (-19 -14) (1 4) (19 7 0 -19) (-8 18) (19 -7 -4) (-16 20 -4 -18 19 8 -14 -13)) (text-map *map-integer2* text) => ((-19 14) (1 -4) (-14 17) (13 14 19) (19 14) (1 4) (19 7 0 19) (8 18) (19 -7 -4) (16 20 4 18 -19 8 -14 -13)) A seed will ensure the same result each time the code is evaluated: (text-map *map-integer2* text :seed 48) => ((19 -14) (1 -4) (14 -14) (-13 -14 19) (19 -14) (-1 4) (19 7 -12 -19) (8 18) (-19 -7 4) (16 -20 -4 18 19 -8 -14 -13)) In the following examples we map a text to lengths. If a letter is mapped to a nested list ((e e. s)) then the entire list is selected. (defparameter *map-length* '(((a à á â ã ä å æ ą) ((s s s))) (b ((s e s))) ((c ç ć) ((e s s))) (d ((s s e))) ((e è é ê ë ę) ((e e. s))) (f ((q e. s))) (g ((e. e s))) (h ((q s s))) ((i ì î ï) ((s e. e))) (j ((s e. e))) (k ((s s q))) ((l ł) ((e s e.))) (m ((e e e))) ((n ñ ń) ((e q e))) ((o ò ó ô õ ö) ((q e e))) (p ((e e q))) (q ((q q. e))) (r ((h q. e))) ((s ś) ((q e q.))) (t ((h e e))) ((u ù ú û ü) ((e q. q))) (v ((q. e h))) (w ((e e h))) (x ((q e q.))) ((y ý ÿ) ((q q q))) ((z ż ź) ((q h q))))) (text-map *map-length* text) => ((h e e q e e) (s e s e e. s) (q e e h q. e) (e q e q e e h e e) (h e e q e e) (s e s e e. s) (h e e q s s s s s h e e) (s e. e q e q.) (h e e q s s e e. s) (q q. e e q. q e e. s q e q. h e e s e. e q e e e q e)) (text-map *map-length* text :flat nil) => ((h e e) (q e e) (s e s) (e e. s) (q e e) (h q. e) (e q e) (q e e) (h e e) (h e e) (q e e) (s e s) (e e. s) (h e e) (q s s) (s s s) (h e e) (s e. e) (q e q.) (h e e) (q s s) (e e. s) (q q. e) (e q. q) (e e. s) (q e q.) (h e e) (s e. e) (q e e) (e q e)) With the rnd-order option we can randomise the order of the elements in the list: (text-map *map-length* text :flat nil :rnd-order t) => ((h e e) (q e e) (s e s) (s e. e) (e e q) (h e q.) (e q e) (e q e) (h e e) (h e e) (e q e) (s e s) (s e e.) (e h e) (q s s) (s s s) (e e h) (e. e s) (q. q e) (e h e) (s q s) (s e e.) (q. e q) (q. e q) (s e e.) (q q. e) (e h e) (s e e.) (e q e) (e e q)) In the following examples we map text to pitches. First we create a simple map with a letter mapped to a single pitch: (defparameter *map-pitch1* '(((a à á â ã ä å æ ą) c3) (b cs3) ((c ç ć) d3) (d eb3) ((e è é ê ë ę) e3) (f f3) (g fs3) (h g3) ((i ì î ï) gs3) (j a4) (k bb3) ((l ł) b3) (m c4) ((n ñ ń) cs4) ((o ò ó ô õ ö) d4) (p eb4) (q e4) (r f4) ((s ś) fs4) (t g4) ((u ù ú û ü) gs4) (v a4) (w bb4) (x b4) ((y ý ÿ) c5) ((z ż ź) cs5))) (text-map *map-pitch1* text) => ((g4 d4) (cs3 e3) (d4 f4) (cs4 d4 g4) (g4 d4) (cs3 e3) (g4 g3 c3 g4) (gs3 fs4) (g4 g3 e3) (e4 gs4 e3 fs4 g4 gs3 d4 cs4)) Here we map a letter to a list of two pitches: (defparameter *map-pitch2* '(((a à á â ã ä å æ ą) (c4 c3)) (b (cs4 b3)) ((c ç ć) (d4 bb3)) (d (eb4 a3)) ((e è é ê ë ę) (e4 gs3)) (f (f4 g3)) (g (fs4 fs3)) (h (g4 f3)) ((i ì î ï) (gs4 e3)) (j (a4 eb3)) (k (bb4 d3)) ((l ł) (b4 cs3)) (m (c5 c3)) ((n ñ ń) (cs5 b2)) ((o ò ó ô õ ö) (d5 bb2)) (p (eb5 a2)) (q (e5 gs2)) (r (f5 g2)) ((s ś) (fs5 fs2)) (t (g5 f2)) ((u ù ú û ü) (gs5 e2)) (v (a5 eb2)) (w (bb5 d2)) (x (b5 cs2)) ((y ý ÿ) (c6 c2)) ((z ż ź) (cs6 b1)))) (text-map *map-pitch2* text) => ((g5 bb2) (b3 e4) (bb2 f5) (b2 d5 f2) (f2 d5) (b3 gs3) (f2 f3 c4 f2) (gs4 fs5) (g5 g4 gs3) (gs2 gs5 gs3 fs2 f2 gs4 bb2 cs5)) Example with a velocity map: (defparameter *map-velocity* '(((a à á â ã ä å æ ą) ppp) (b ppp) ((c ç ć) ppp) (d pp) ((e è é ê ë ę) pp) (f pp) (g p) (h p) ((i ì î ï) p) (j mp) (k mp) ((l ł) mp) (m mf) ((n ñ ń) mf) ((o ò ó ô õ ö) mf) (p f) (q f) (r f) ((s ś) ff) (t ff) ((u ù ú û ü) ff) (v fff) (w fff) (x fff) ((y ý ÿ) ffff) ((z ż ź) ffff))) (text-map *map-velocity* '(o p u s m o d u s)) => (mf f ff ff mf mf pp ff ff) Example with binary map: (defparameter *map-binary* '(((a à á â ã ä å æ ą) ((1))) (b ((1 0))) ((c ç ć) ((1 1))) (d ((1 0 0))) ((e è é ê ë ę) ((1 0 1))) (f ((1 1 0))) (g ((1 1 1))) (h ((1 0 0 0))) ((i ì î ï) ((1 0 0 1))) (j ((1 0 1 0))) (k ((1 0 1 1))) ((l ł) ((1 1 0 0))) (m ((1 1 0 1))) ((n ñ ń) ((1 1 1 0))) ((o ò ó ô õ ö) ((1 1 1 1))) (p ((1 0 0 0 0))) (q ((1 0 0 0 1))) (r ((1 0 0 1 0))) ((s ś) ((1 0 0 1 1))) (t ((1 0 1 0 0))) ((u ù ú û ü) ((1 0 1 0 1))) (v ((1 0 1 1 0))) (w ((1 0 1 1 1))) (x ((1 1 0 0 0))) ((y ý ÿ) ((1 1 0 0 1))) ((z ż ź) ((1 1 0 1 0))))) (text-map *map-binary* '(o p u s m o d u s)) => ((1 1 1 1) (1 0 0 0 0) (1 0 1 0 1) (1 0 0 1 1) (1 1 0 1) (1 1 1 1) (1 0 0) (1 0 1 0 1) (1 0 0 1 1)) Example with otherwise option. (setf map4 '((e e3) (f f3) (g fs3) (h g3) (i gs3) (j a4) (k bb3) (l b3) (m c4) (n cs4) (o d4))) (text-map map4 '(o p u s m o d u s)) => (d4 c4 d4) The result of the expression above is not equal to the length of the (o p u s m o d u s) list because the letters d, p, s and u are not in the map. Use the otherwise option to get the same count: (text-map map4 '(o p u s m o d u s) :otherwise '((eb4e5) (f3fs4))) => (d4 (eb4e5) (f3fs4) (eb4e5) c4 d4 (eb4e5) (f3fs4) (f3fs4)) In the following examples our maps are created algorithmically: (setf map (mapcar 'list (make-alphabet) (integer-to-pitch (gen-integer-step 0 26 '(1 -2 3 1))))) => ((a c4) (b cs4) (c b3) (d d4) (e eb4) (f e4) (g d4) (h f4) (i fs4) (j g4) (k f4) (l gs4) (m a4) (n bb4) (o gs4) (p b4) (q c5) (r cs5) (s b4) (t d5) (u eb5) (v e5) (w d5) (x f5) (y fs5) (z g5)) (text-map map text) => ((d5 gs4) (cs4 eb4) (gs4 cs5) (bb4 gs4 d5) (d5 gs4) (cs4 eb4) (d5 f4 c4 d5) (fs4 b4) (d5 f4 eb4) (c5 eb5 eb4 b4 d5 fs4 gs4 bb4)) (setf map2 (mapcar 'list (make-alphabet) (mapcar 'list (integer-to-pitch (gen-integer-step 0 26 '(1 -2 3 1))) (integer-to-pitch (gen-integer-step -6 26 '(1 -2 3 1)))))) => ((a (c4 fs3)) (b (cs4 g3)) (c (b3 f3)) (d (d4 gs3)) (e (eb4 a3)) (f (e4 bb3)) (g (d4 gs3)) (h (f4 b3)) (i (fs4 c4)) (j (g4 cs4)) (k (f4 b3)) (l (gs4 d4)) (m (a4 eb4)) (n (bb4 e4)) (o (gs4 d4)) (p (b4 f4)) (q (c5 fs4)) (r (cs5 g4)) (s (b4 f4)) (t (d5 gs4)) (u (eb5 a4)) (v (e5 bb4)) (w (d5 gs4)) (x (f5 b4)) (y (fs5 c5)) (z (g5 cs5))) (text-map map2 text :seed 63) => ((d5 d4) (g3 a3) (d4 cs5) (bb4 gs4 d5) (d5 d4) (g3 a3) (d5 b3 c4 d5) (c4 f4) (d5 f4 eb4) (c5 eb5 eb4 b4 d5 c4 gs4 bb4)) In the next example we map a group of letters to a group of pitches. Example: a = (c4 cs4 d4) b = (c4 cs4 d4) and c = (c4 cs4 d4) etc... (setf map3 (mapcar 'list (gen-divide 3 (make-alphabet)) (integer-to-pitch (gen-divide 3 (gen-integer 26))))) => (((a b c) (c4 cs4 d4)) ((d e f) (eb4 e4 f4)) ((g h i) (fs4 g4 gs4)) ((j k l) (a4 bb4 b4)) ((m n o) (c5 cs5 d5)) ((p q r) (eb5 e5 f5)) ((s t u) (fs5 g5 gs5)) ((v w x) (a5 bb5 b5)) ((y z) (c6 cs6 d6))) (text-map map3 text) => ((g5 c5) (cs4 f4) (c5 f5) (cs5 d5 g5) (gs5 d5) (c4 f4) (fs5 gs4 d4 g5) (g4 fs5) (gs5 g4 f4) (e5 gs5 f4 fs5 g5 gs4 c5 d5)) => ((gs5 c5) (c4 e4) (c5 eb5) (c5 c5 g5) (gs5 c5) (c4 e4) (g5 gs4 cs4 fs5) (gs4 fs5) (gs5 fs4 e4) (eb5 gs5 eb4 fs5 gs5 fs4 cs5 c5)) => . . . Best wishes to all, JP
  2. Hello! I am hoping to get some help applying text to a list of durations longer than a bar. The :text key in def-score applies each syllable of text onto each new bar, even when the duration is tied through. Instead, I want each new syllable to be applied to each new note. I know that I can use dashes in the lyrics to connect through ties, but as I am generating very large numbers of tied notes it is impractical to count out exactly the right number of dashes each time. Is there a way to do what I want? Thank you! Elliot (setf times-omn '(e c4 d4 d_d_d_d_w e4 d_d_d_d_d_d_d_d_d_d_d_d f4 d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_w c4 d4 d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_w e4 f4 d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d c4 d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_w d4 d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d e4 d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d_d f4)) (setf lyrics (make-text '("Intertidal_zone epipelagic_zone_begins scuba_limit 90%_of_light_absorbed end_of_epipelagic_zone mesopelagic_zone_begins photosynthesis_impossible deepest_free_dive only_blue_and_green_light deepest_scuba_dive uss_thresher_imploded seawolf_max_dive_depth"))) (def-score myscore ( :title "Deep Sea Dive" :composer "E" :key-signature 'atonal :time-signature '(4 4) :tempo 60 ) (instrument :omn times-omn :text lyrics ) )
  3. Kyrie from "Messe Brève En Forme de Haikus". Global Pitch definition. Basic row (with D minor notes every 2 notes) (setf row '(d4 fs4 f4 cs4 g4 gs4 a4 ds4 as4 e4 c5 b4)) Utility function (defun collect-every-n (steps list) (loop for n from 0 to (- (length list)1) by steps collect (nth n list))) Global ambitus definition (setf sopamb '(d4 g5)) (setf altamb '(a3 c5)) (setf tenamb '(c3 c4)) (setf bassamb '(g2 g3)) Kyrie part-1 (canon) Pitch definition (setf pl1a (collect-every-n 2 row)) Rotations for other voices (setf pl1b (gen-rotate 2 pl1a)) (setf pl1c (gen-rotate 4 pl1a)) (setf pl1d (gen-rotate 6 pl1a)) Lengths definition (setf basery1 '(q q q q q q -e e e e q -q)) (setf rl1d (append '(-w -h) (gen-rotate 6 basery1))) (setf rl1c (length-span (get-span rl1d) (append '(-w) (gen-rotate 4 basery1)))) (setf rl1b (length-span (get-span rl1d) (append '(-h) (gen-rotate 2 basery1)))) (setf rl1a (length-span (get-span rl1d) basery1)) OMN assembly (setf p1a (make-omn :pitch pl1a :length rl1a)) (setf p1b (make-omn :pitch pl1b :length rl1b)) (setf p1c (make-omn :pitch pl1c :length rl1c)) (setf p1d (make-omn :pitch pl1d :length rl1d)) Voices (setf lsop1 (ambitus '(d4 g5) (filter-tie p1a))) (setf lalt1 (ambitus '(a3 c5) (filter-tie p1b))) (setf lten1 (ambitus '(c3 c4) (filter-tie p1c))) (setf lbas1 (ambitus '(g2 g3) (filter-tie p1d))) Christe part-2 (tutti) Pitch definition (setf pl2a (subseq row 0 6)) Rotations for other voices (setf pl2b (pitch-transpose -7 pl2a)) (setf pl2c (pitch-transpose -11 (pitch-invert pl2a))) (setf pl2d (pitch-transpose -3 (pitch-invert pl2a))) Lengths definition (setf rl2a '((q q -q q q) (e e e q -e))) (setf rl2b rl2a) (setf rl2c rl2a) (setf rl2d rl2a) OMN (setf p2a (make-omn :pitch pl2a :length rl2a)) (setf p2b (make-omn :pitch pl2b :length rl2b)) (setf p2c (make-omn :pitch pl2c :length rl2c)) (setf p2d (make-omn :pitch pl2d :length rl2d)) Global transposition (setf tlist-2a '(0)) (setf tlist-2b tlist-2a) Voices (setf lsop2 (ambitus '(e4 g5) (filter-tie (pitch-transpose tlist-2a p2a)))) (setf lalt2 (ambitus '(c4 d5) (filter-tie (pitch-transpose tlist-2a p2b)))) (setf lten2 (ambitus '(c3 c4) (filter-tie (pitch-transpose tlist-2b p2c)))) (setf lbas2 (ambitus '(g2 g3) (filter-tie (pitch-transpose tlist-2b p2d)))) Kyrie2 (Spirale) Spirale p1 (setf bass1 '(q d3 e3 d3 e3 e3 fs3 e3 fs3)) (setf psop (gen-retrograde row)) (setf lsop (ql '(16 e))) (setf lalt lsop) (setf lten lsop) (setf palt (pitch-transpose -4 psop)) (setf pten (pitch-transpose -8 psop)) (setf sop1 (make-omn :pitch psop :length lsop)) (setf alt1 (make-omn :pitch palt :length lalt)) (setf ten1 (make-omn :pitch pten :length lten)) (setf bas1 bass1) Spirale p2 (setf trsp2 2) (setf sop2 (pitch-transpose trsp2 sop1)) (setf alt2 (pitch-transpose trsp2 alt1)) (setf ten2 (pitch-transpose trsp2 ten1)) (setf bas2 (pitch-transpose trsp2 bass1)) Spirale p3 (setf trsp3 5) (setf sop3 (pitch-transpose trsp3 '(q b4 ff = -))) (setf alt3 (pitch-transpose trsp3 '(q e4 ff = -))) (setf ten3 (pitch-transpose trsp3 '(q g3a3 ff = -))) (setf bas3 (pitch-transpose trsp3 '(q d3 ff = -))) Spirale p4 (setf trsp4 5) (setf sop4 (pitch-transpose trsp4 '(q b4 = - e b4 = q c5 b4 -))) (setf alt4 (pitch-transpose trsp4 '(q e4 = - e e4 = q f4 e4 -))) (setf ten4 (pitch-transpose trsp4 '(q g3a3 = - e g3a3 = q fs3gs3 g3a3 -))) (setf bas4 (pitch-transpose trsp4 '(q d3 = - e d3 = q cs3 d3 -))) Spirale assembly (setf lbas3 (append bas1 bas2 bas3 bas4)) (setf lsop3 (append sop1 sop2 sop3 sop4)) (setf lalt3 (append alt1 alt2 alt3 alt4)) (setf lten3 (append ten1 ten2 ten3 ten4)) Full Assembly (setf sopline (assemble-seq lsop1 lsop2 lsop3)) (setf altline (assemble-seq lalt1 lalt2 lalt3)) (setf tenline (assemble-seq lten1 lten2 lten3)) (setf basline (assemble-seq lbas1 lbas2 lbas3)) (setf path (tonality-series '(chromatic))) (setf sopline (ambitus sopamb (tonality-map path sopline))) (setf altline (ambitus altamb (tonality-map path altline))) (setf tenline (ambitus tenamb (tonality-map path tenline))) (setf basline (ambitus bassamb (tonality-map path basline))) Lyrics (setf soptext1 '("ky ri e ky ri e ky - rie - chri ste chri ste e le i son chri ste e le i son ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky rie chri ste e le i son")) (setf alttext1 '("ky ri e ky ri e e le i son ky ri e chri ste e le i son ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky rie chri ste e le i son")) (setf tentext1 '("ky ri e ky rie - ki ri e e le i son chri ste e le i son ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky - rie - chri - ste - ky rie chri ste e le i son")) (setf basstext1 '("ky ri - e chri ste chri ste e le i son chri ste e le i son ky rie chri ste ky rie chri ste ky rie chri ste ky rie chri ste ky rie chri ste e le i son")) Score definition (def-score Kyrie-1 (:key-signature atonal :time-signature (get-time-signature rl1a) :title "Kyrie" :composer "S.Boussuge" :copyright "Copyright © 2014 S.Boussuge" :tempo 72 :layout (choir-satb-layout 'sop 'alt 'tnr 'bas)) (sop :omn sopline :text soptext1 :sound 'gm :program 0) (alt :omn altline :text alttext1) (tnr :omn tenline :text tentext1) (bas :omn basline :text basstext1)) SB. Kyrie.opmo
×