-
Posts
1,059 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything posted by Stephane Boussuge
-
Another possible way: (setf seeds (vector-round 1 100 (gen-white-noise 8 :seed 13))) (setf rhythm (mapcar (lambda(x) (euclidean-rhythm 16 4 16 's :type 2 :seed x)) seeds)) SB.
-
Looking for Repeating Function
Stephane Boussuge replied to JulioHerrlein's topic in Function Examples
I've experimented different approach to this in past. One of the possible way is to use passing-interval function to populate between you anchor chords. SB. -
I use HARMONIC-PATH function to apply harmony when I want to keep the voice leading of my applied chords. HARMONIC-PATH change totally the harmonic content when applying. TONALITY-MAP just "map" pitches on closest other pitches. Try to use as path some chords with a very typical classical and well defined voice leading with both functions on a more complex material and you will see the difference . S.
-
Opusmodus as a library sound perfect for me. Opusmodus ltd may sell separately from Opusmodus the library but without asking any fee to developers. I think this will be the best solution, it will increase the sales for Opusmodus and motivate the developers to use Opusmodus as the best platform / library for development of musical applications. Also, it will allow people to use Opusmodus on Linux and Windows. s.
-
You can use a list of sizes: (harmonic-progression '(1 6 2 5 2) '(c major) :size '(3 3 3 4 3) :base 1) S.
-
Dear Rangarajan, You can use the :size parameter in the harmonic-progression function to create 4 pitch chords. S.
-
Yes, it is because the randomness in tonality-map process call randomly the parameter up or down in the :closest option. You can fix this by setting up or down explicitly: (setf path (tonality-series modes :map '(octave) :root roots :closest '(up))) S.
-
I've tried a bit Ircam instruments2 but still feel a lack of dynamics variety... S.
-
A possibility is to use plogue Bidule to create a kind of meta-instrument with keyswitch to switch from classical to extended techniques. I will have a look. S.
-
Hi, yes I have this lib but still not used it really and still not did any soundest for it. But I will investigate in future. Best S.
-
Hi, The values for density control has to be between something greater than 0, for example 0.01, and 1.00. Here's a better code: (setf size (car (rnd-number 1 12 32))) (setf psets '(c4 fs4 g4 e4 gs4 f4 a4 cs5 ds5 as4 d5 b4)) ;;; RHYTHM (setf dens-tend (vector-round 0.01 1.00 (pitch-to-integer psets))) (setf dens1 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens2 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens3 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens4 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens5 (vector-round 0 100 (gen-tendency size dens-tend))) (setf dens6 (vector-round 0 100 (gen-tendency size dens-tend))) SB.
-
Hi, here it is: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; ADD-INTERVAL-IF-LENGTH ;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (in-package :Opusmodus) ;;; USAGE #| (setf seq '((e c4 p stacc d4 stacc e4 stacc f4 stacc q g4 g3) (q c4 mf e c6 b5 a5 g5 f5 d5) (s e4 f4 e4 d4 q g4 b4 d5) (q g5 ff marc g4 marc h c5 ))) ; with default parameters (add-interval-if-length '(1/4 c4 d4 e4 1/8 e4 f4)) (add-interval-if-length seq) ; with specified condition (add-interval-if-length seq :condition '<) (add-interval-if-length seq :condition '=) ; with specifird conditions en length value specification (add-interval-if-length seq :condition '= :length-val '1/4) |# ;;; VERSION REVISEE PAR TORSTEN ;;; ============================================== ;;; UTILITY FUNCTIONS ;;; (defun add-interval-if-length-aux (omn &key (test #'>) (length-val 1/8) (interval-list '(4 3 4 7 4 3 5 4 7 3))) (let ((s-events (single-events omn))) (loop for e in s-events for i in (gen-trim (length s-events) interval-list) when (funcall test (omn-encode (first e)) length-val) append (omn-replace :pitch (chord-interval-add (list i) (list (second e))) e) else append e))) ;(add-interval-if-length-aux '(q c4 d4 e4 f4 e g4 a4) :interval-list '(10 11)) ;;; ============================= ;;; MAIN FUNCTION (defun add-interval-if-length (omn &key (test #'>) (length-val 1/8) (interval-list '(4 3 4 7 4 3 5 4 7 3))) (do-verbose ("add-interval-if-length") (let ((test-fn (case test (> #'>) (< #'<) (= #'=) (otherwise test)))) (if (listp (car omn)) (mapcar #'(lambda (x) (add-interval-if-length-aux x :test test-fn :length-val (omn-encode length-val) :interval-list interval-list)) omn) (add-interval-if-length-aux omn :test test-fn :length-val (omn-encode length-val) :interval-list interval-list))))) ;(add-interval-if-length '((q c4 d4 e4 f4 e g4 a4) (e f4 e4 q d4 c4 a4 g4 f4)) :interval-list '(10 11)) ;(add-interval-if-length '((q c4 d4 e4 f4 e g4 a4) (e f4 e4 q d4 c4 a4 g4 h f4)) :interval-list '(3 4) :test #'>= :length-val 'q)
-
(setf size 8) (setf ph1 (ambitus '(g3 g6) (filter-tie (make-omn :pitch (gen-loop size (interval-ambitus 6 (rnd-sample 12 (make-scale 'd4 12 :alt '(2 1 3))))) :length (gen-loop size (length-legato (rnd-sample 4 '(s -s)))) :velocity (rnd-pick '((pp)(p)(mp)(mf)(f))) )))) ;;; Controled repetitions of ph1 with vector-map (with index numbers) (setf reps1 (vector-map ph1 '(0 0 1 3 3 3 2 3 4 3 2 4 5 6 6 7 7 7))) ;;; Apply variations to this repetitions with unfold: (setf reps1.proc (unfold 'om '((ld23 (4 5 6 12 16))(ld24 (2 8 13 16))(t4 (1 3 5 7))) reps1))
-
Here's the video files from this session. The score files are already inside Opusmodus in score examples documentation section in Utility panel. This is the scores : Craft for alto and piano. and the score Duet for violin and piano. All the best to all of the Opusmodus community ! SB. ZoomIntoOM-Videos141120.zip
-
Unfortunately not. Sorry. S.
-
Hi, just a small example here about parts extraction with pitch-demix, from piano part to string quartet. Not a perfect solution but do the job in many cases and it is always possible to refine a bit the output manually. S. (setf base '(#|1|# (z^h. c4e4a4 h.^w fs3 q b4) #|2|# (z^h c4e4a4 h^h. fs3 q c5 b4) #|3|# (z^h. c4e4a4 h.^w fs3 e g4 a4) #|4|# (z^h. c4e4a4 h.^w fs3 q g4) #|5|# (z^h. d4f4 h.^w c3gs3 q e4) #|6|# (z^q f4 q^h. c3gs3 g4 f4 e4) #|7|# (z^h d4e4 h^w c3gs3 tie f4) #|8|# (h. c3gs3d4 q e4) #|9|# (z^h. cs4fs4 h.^w as2fs3 q gs4) #|10|# (z^h. cs4as4 h.^w as2fs3 q c5) #|11|# (z^e a2 e^h. e4d5 he^h.. f3 tie q e5) #|12|# (z^w f3 h c4e4d5 q c5 b4) #|13|# (w f3c4e4a4))) (setf base-merged (dissolve-voices base)) (setf v1 (pitch-demix 1 base-merged)) (setf v2 (pitch-demix 2 base-merged)) (setf v3 (pitch-demix 3 base-merged)) (setf v4 (pitch-demix 4 base-merged)) (ps 'gm :sq (list v1 v2 v3 v4))
-
Fab !!
-
Move-set is a function inspired by Mikael Kuhn's move-set function in PGen for Csound. https://mikelkuehn.com/index.php/ng It allows you to make random choices by moving progressively in a morphing from one set to another linearly or by following a convex or concave curve controlled by the parameter: curve. <1 = concave, 1 = linear,> 1 = convex. The norep option allows you to remove direct repeats in random choices. ;;;====================================== ;;; MOVE-SET ;;; SB. 01.11.2020 ;;;====================================== ;;; Move-set est une fonction inspirée de la fonction move-set de Mikael Kuhn dans PGen pour Csound. ;;; Elle permet de faire des choix aléatoire en passant progressivement d'un ensemble à un autre ;;; de manière linéaire ou alors en suivant une courbe convexe ou concave controlée par le ;;; parametre :curve. <1 = concave, 1 = lineaire, >1 = convexe. ;;; l'option norep permet d'éviter les répétitions directes dans les choix aléatoires. ;;; Parametres: ;;; set1 liste ;;; set2 liste ;;; nbsteps entier ;;; nbval entier ou liste d'entiers ;;; curve <1 = concave, 1 = lineaire, >1 = convexe. Par défaut 1 ;;; norep nil ou t. par défaut nil. ;;; seed un entier. Par défaut nil. ;;; Definition de la fonction MOVE-SET (defun move-set (set1 set2 nbsteps nbval &key (curve 1) (norep nil) seed) "Move-set est une fonction inspirée de la fonction move-set de Mikael Kuhn dans PGen pour Csound. Elle permet de faire des choix aléatoires en passant progressivement dans un morphing d'un ensemble à un autre de manière linéaire ou alors en suivant une courbe convexe ou concave controlée par le parametre :curve. <1 = concave, 1 = lineaire, >1 = convexe. L'option norep permet d'éviter les répétitions directes dans les choix aléatoires. Parametres: set1 liste set2 liste nbsteps entier nbval entier ou liste d'entiers curve <1 = concave, 1 = lineaire, >1 = convexe. Par défaut 1 norep nil ou t. par défaut nil. seed un entier." (setf seed (rnd-seed seed)) (do-verbose ("move-set :seed ~s" seed) (init-seed seed) (let ((idx (gen-transition 0 (- nbsteps 1) nbsteps curve :rounded t)) (bmat (gen-morph nbsteps set1 set2 :seed (seed))) ) (loop for i in idx for v in (gen-trim nbsteps (list! nbval)) collect (rnd-sample v (nth i bmat) :norep norep)) ))) ;;; Exemples d'utilisation: #| (move-set '(c4 d4 e4) '(fs4 as4 cs5) 12 8) (move-set '(c4 d4 e4) '(fs4 as4 cs5) 12 8 :norep t) (move-set '(c4 d4 e4) '(fs4 as4 cs5) 12 8 :curve 0.2 :seed 4) (move-set '(c4 d4 e4) '(fs4 as4 cs5) 12 8 :curve 0.2 :seed 4 :norep t) (move-set '(c4 d4 e4) '(fs4 as4 cs5) 12 8 :curve 1.5 :seed 4 :norep t) (move-set '(c4 d4 e4) '(fs4 as4 cs5) 12 '(8 4 12 5) :curve 1.5 :seed 4 :norep t) (move-set '(e e e e) '(s s s s) 12 8 :seed 7) (setf melo (filter-tie (make-omn :pitch (setf pch (move-set '(c4 d4 fs4 gs4 b4) '(e4 g4 a4 bb4 cs5) 12 (rnd-number 6 2 16))) :length (gen-tuplet 1 1 'm '? 'w (mapcar 'length pch)) ))) |# SB. move-set.lisp
-
resolved Articulations (key switches) XML Export
Stephane Boussuge replied to JulioHerrlein's topic in Score and Notation
Yes Musescore is very interesting indeed. It sounds a bit different in Sibelius but it is exactly the same VSL instrument hosted in Vienna Ensemble Pro but my OM soundset is a bit different than my Sibelius one , indeed. Best Stéphane -
resolved Articulations (key switches) XML Export
Stephane Boussuge replied to JulioHerrlein's topic in Score and Notation
SoloCelloExempl.mp4 As you can see , I don't need any extra staves to have key switch . All the best Stéphane -
resolved Articulations (key switches) XML Export
Stephane Boussuge replied to JulioHerrlein's topic in Score and Notation
But I'm speaking about Musicxml. S. One moment, I'm doing a video. S. -
resolved Articulations (key switches) XML Export
Stephane Boussuge replied to JulioHerrlein's topic in Score and Notation
The problem comes from Musescore because it have no soundest and by the way don't send any key switch to instruments. I'm working with Sibelius, and I just need to open the xml file in Sibelius and it plays immediately all articulations. Stéphane