Jump to content

Stephane Boussuge

Moderators
  • Posts

    1,062
  • Joined

  • Last visited

Everything posted by Stephane Boussuge

  1. Good, you found it. That's good because it is old files and I didn't want to search in my old hard drives backups
  2. If you are still in version 2, you can find the French doc inside the Opusmodus apps close to what I showed one post above.
  3. No, that is not possible at the moment, but soon you will have access to Opusmodus AI, which can communicate in any language.
  4. You can right click on Opusmodus program in Application folder and select "afficher le contenu du paquet" (if your system is in French...) and go to Ressources folder and English folder and finally you will find the system functions folder, see screen shot:
  5. Several possibilities depend what kind of variations you want. The simplest one is random order applied only to lengths. (setf mat '((e d4 e4 fs4 gs4 q a4)(s b4 c5 b4 gs4 q a4 e fs4 e4))) (rnd-order mat :type :length) Another way I appreciate particularly is length divide: (length-divide '((3 4)(1 2)) mat :set 'max) but this last one add some intervals so it may be not what you're searching for... S.
  6. Hi folks, Get this opportunity to improve you Opusmodus knowledge, until 2.4.24, you will get -30% on everything on Composer Workshop with the coupon code: easter24. Enjoy !
  7. The opmo file is a variant of one of the templates given with my video lesson pack: Designing generative orchestral templates with Opusmodus (level 2) - Composer Workshop WWW.COMPOSERWORKSHOP.COM Welcome to the course on "Designing Generative Orchestral Templates with Opusmodus"! In this course, we will explore the fascinating world of computer-assisted composition, specifically focusing on the powerful music composition environment known as Opusmodus. Opusmodus is a cutting-edge software tool that empowers composers, music theorists, and researchers to create... but I will share another one soon S.
  8. Here's two videos, a long one playing with live coding, generating some sections before assembly and another very short one showing evaluation and assembly for the construction of a short orchestral passage. S.
  9. I still can't start swank on OM 3 unfortunately.
  10. Hi folks, a short electronic track in honor of Hubble telescope discovery... I've used the template shared here as starting point: Attached the Audio file, Opmo score and VCVRack. Best S. PillarsOfCreation.wav PillarsOfCreation.vcv PillarsOfCreation.opmo
  11. Hi folks, Here's an example using a template for Opusmodus and vcvrack. Feel free to use it as a starting point for your own experimentations, VCVRack is free and driving it with OM is a great fun ! Attached to this post, the 2 files used in this short video example. That file will be probably available in the next OM update. Enjoy ! VCVRackTemplate1.opmo VCVRackTemplate1.vcv
  12. Hi Julio, you can use get-span function: (setf ritmos (gen-repeat 4 (gen-length '((1 2 1 2 1 1) (1 1 1 1 1 2 1) (1 -3 1 -3 2 -2 4) (-3 1 -1 1 1 1)) '(16)))) (get-span ritmos) => (1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2 1/2 1/2 1 1/2) S.
  13. I use the software Spear: https://www.klingbeil.com/spear/
  14. musicxml-to-ly but if you use the great Lilypond Editor Frescobaldi, it is included in the menu and works very very well.
  15. Lilypond works also very well with Opmo.
  16. Hi folks, a work in progress, a first short piece from a series of four called "Quatre miniatures en duo" for Violin and Piano. S. Score1V4B.mp3 Quatre miniatures en duo.pdf
  17. Hi, the output of your loop get too many nested parenthesis. Use assemble-seq function to arrange this material as correct OMN expression usable by dictum. ;=====BIRDCALLS===== (setf bird1 '(3q d5 leg gs4 d5 leg gs4 d5 leg gs4)) (setf bird2 '(q a3 e. b3 x c5 leg e.. bb4)) (setf bird3 '(e fs4 leg c5 q bb4 3q fs4 stacc c5 bb4)) (setf rest1 '(-e)) (setf rest2 '(-q.)) (setf rest3 '(-e.)) ;=====OMN MAKER===== (setf loop1 (assemble-seq (gen-loop 7 (list (rnd-pick (list bird1 bird2 bird3)) (rnd-pick (list rest1 rest2 rest3)) (rnd-pick (list rest1 rest2 rest3)))))) (dictum '(:if e :do q) loop1)
  18. Hi, you can try this: ;=====BIRDCALLS===== (setf bird1 '(3q d5 leg gs4 d5 leg gs4 d5 leg gs4)) (setf bird2 '(q a3 e. b3 x c5 leg e.. bb4)) (setf bird3 '(e fs4 leg c5 q bb4 3q fs4 stacc c5 bb4)) (setf rest1 '(-q.)) (setf rest2 '(-h)) (setf rest3 '(-w)) ;=====OMN MAKER===== (apply-eval (rnd-sample 4 '(bird1 bird2 bird3 rest1 rest2 rest3)))
  19. Hi, I've made a function long long time ago around this idea not following strictly Hindemith if I remember it correctly but it was based on the same idea/concept. Here's my function, you can probably tweak it to your needs. Please, if you improve it in anyway, share your improvement so it could be useful for me and community as well. Stephane ;;;=============================================================== ;;; sort chords by tension ;;;=============================================================== ;;Idée: classer des accords generés de maniere X par tension avec une courbe de tensions. ;;Analyser un accord ;;1. extraire un vecteur d'intervalles ;;2. Analyser le vecteur ;;3. retourner le resultat (defun ana-tens (ivect) "renvoie le taux de tension harmonique d'un vecteur d'intervalles. utilitaire pour h-tens" (let* ((v1 (*(nth 0 ivect) 6)) (v2 (*(nth 1 ivect) 4)) (v3 (*(nth 2 ivect) 3)) (v4 (*(nth 3 ivect) 2)) (v5 (*(nth 4 ivect) 1)) (v6 (*(nth 5 ivect) 5)) (r (+ v1 v2 v3 v4 v5 v6))) r)) (defun h-tens (chord) (do-verbose ("h-tens") "renvoie le taux de tension harmonique relatif d'un accord." (let* ( (r0 (if (equal chord '(nil)) '(c4) chord)) ; Si nil, remplace par une valeur simple (c4) (r1 (melodize r0)) ;extraction du vecteur d'intervalles (r2 (pitch-to-integer r1)) (r3 (find-unique (modus r2))) (r4 (if (> (length r3) 1) (pcs-prime-form r3 :vector) '(0 0 0 0 0 0))) (r5 (ana-tens r4)) ;analyse du vecteur d'intervalles ;il faut ensuite diviser le resultat obtenu par le nombre de pcs (cardinal-number) du set et on obtient le niveau relatif de tension harmonique. ; on s'assure d'abord de ne pas avoir un accord à 1 seul accord (r6 (float (/ r5 (length r1)) 1.0))) r6 ;retourne le resultat ))) ;;;creation d'une fonction qui prend en entrée une suite d'accords et qui renvoie cette suite triée ;;;par ordre de tension harmonique croissant ou decroissant. (defun extraitcar (lst) (loop for i in lst collect (car i))) (defun extraitcdr (lst) (loop for i in lst collect (cdr i))) (defun sort-chords-tens-up (chords) "ordonne une suite d'accords par ordre croissant de tension harmonique" (do-verbose ("sort-chords-tens-up") (let* ((tens (mapcar 'h-tens chords)) (a-list (pairlis chords tens)) (sorted (stable-sort a-list #'< :key #'cdr)) (chordprog (extraitcar sorted))) chordprog))) (defun sort-chords-tens-down (chords) "ordonne une suite d'accords par ordre decroissant de tension harmonique" (do-verbose ("sort-chords-tens-down") (let* ((tens (mapcar 'h-tens chords)) (a-list (pairlis chords tens)) (sorted (stable-sort a-list #'> :key #'cdr)) (chordprog (extraitcar sorted))) chordprog))) #| ;;;Usage ;;we generate some chords (setf chords (chordize (gen-loop 12 (rnd-unique 4 (integer-to-pitch (gen-integer 12)))))) ;;we sort chords by up tension (setf chords-up (flatten (sort-chords-tens-up chords))) ;;we sort chords by down tension (setf chords-down (flatten (sort-chords-tens-down chords))) |# ;;;====================================================================================
  20. Hi, you can have a look to the function: pcs-super-sets
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy