-
Posts
809 -
Joined
-
Last visited
Reputation Activity
-
JulioHerrlein reacted to Stephane Boussuge in Simple part extraction example from piano reduction to string quartet with pitch-demix
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))
-
JulioHerrlein reacted to opmo in Session 22 - 07.11.20 - Vertical harmonic control - Density - Auto-explode4
I assume you need to evaluate the auto-explode4 function first.
-
JulioHerrlein got a reaction from Stephane Boussuge in Session 22 - 07.11.20 - Vertical harmonic control - Density - Auto-explode4
Thanks, Stephane !!
Marvellous Session !
Inspiring !
-
JulioHerrlein reacted to Stephane Boussuge in Session 22 - 07.11.20 - Vertical harmonic control - Density - Auto-explode4
Hi folks,
here's the material from this session.
Best !
Stéphane
auto-explode.lisp auto-split.lisp split-point.lisp Zoom07112020a.opmo ZoomIntoOMVideos071120.zip
-
JulioHerrlein reacted to Stephane Boussuge in Session 21 - Simple piano choral with Harmonic remapping from white noise generated scales
Hi,
Just added the split-point function who was necessary to run the auto-split function and was missing.
Best
Stéphane
-
JulioHerrlein reacted to Stephane Boussuge in move-set
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
-
JulioHerrlein got a reaction from opmo in Articulations (key switches) XML Export
musescore_KEYSW.mp4 Here is Musescore doing Keyswitches ! But maybe we can just add standard staves to a MusicXML file for doing this.
Put some staves like in the above video and generate it like standard notes for the keyswitches. Simple.
We need opusmodus to create articualtion staves alongside the normal tracks with the same rhythms of the staves (and with articulations instead).
This can be MusicXML staves (we just need normal notes (in a very low register).
I think it´s possible...
All the best !
One interesting thing is to make the articulation notes a little milliseconds before the actual notes (to change the articulation al little before the note).
In my video, I use to copy all the notes of the score, then paste it a little before the notes (like a 32nd or 64th note before) and then edit the articulations.
BEst !
-
JulioHerrlein reacted to Stephane Boussuge in Articulations (key switches) XML Export
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
-
JulioHerrlein reacted to Stephane Boussuge in Articulations (key switches) XML Export
SoloCelloExempl.mp4 As you can see , I don't need any extra staves to have key switch .
All the best
Stéphane
-
JulioHerrlein got a reaction from opmo in Articulations (key switches) XML Export
Yes, MUSICXML
I´m also doing a video ! 😀😀😀😀
-
JulioHerrlein reacted to Stephane Boussuge in Articulations (key switches) XML Export
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
-
JulioHerrlein reacted to opmo in Articulations (key switches) XML Export
Correction: The musicxml has no information about keyswitches etc...
You could save the Opusmodus midifile of yours score (click on the midi display panel and 'Save As...") and import the file into your notation software.
-
JulioHerrlein reacted to Stephane Boussuge in Waiting into the room For Solo Cello
A small solo cello piece composed this evening.
Stéphane
WaitingIntoTheRoom.opmo WaitingIntoTheRoomForSoloCello.mp3
-
JulioHerrlein reacted to Stephane Boussuge in Question about composition methods and related functions
Here's one of my way to compose with harmony and voice leading.
Best regards
Stéphane
;;; FANTAISIE POUR CORDES ;;; SB. 28.10.2020 ;;; ========================= ;;; Section size (setf size 32) ;;; Chords Structures (setf boz '((-4 -9 -12 -16)(-6 -10 -15 -22)(-5 -8 -12 -24))) ;;; Melodic construction material generation (setf melomat (omn-to-measure (make-omn :pitch (filter-repeat 1 (vector-to-pitch '(g4 c6) (vector-smooth 0.14 (gen-white-noise 96)))) :length (flatten (rnd-sample 12 '(h q (e e) (3q = =) h (h. q) h))) ) '4/4)) ;;; Melody generation (setf melo (ambitus '(g4 g6) (bind-to-interval '(2 -2) (rnd-sample size melomat)))) ;;; Melody vertical harmonisation (setf melharmo (gen-chord3 melo boz)) ;;; Separation between melody and harmony ;;; Remove the top note (defun rmv-top-nt (chord) (butlast (melodize (sort-asc chord))) ) #| ;exemple d'application sur plusieurs accords. (chordize-list (mapcar (lambda(x) (rmv-top-nt x)) (mclist '(d5g4c4b4e4 d5g4c4b4e4 d5g4c4b4e4)))) |# ;;; Apply closest path to all voices under the melody (setf harmo (closest-path (make-omn :pitch (chordize-list (mapcar (lambda(x) (rmv-top-nt x)) (mclist (flatten (omn :pitch melharmo)) ))) :length (omn :length melharmo) ))) ;;; Pitch demix (setf line1 melo) (setf line2 (pitch-demix 1 harmo)) (setf line3 (pitch-demix 2 harmo)) (setf line4 (pitch-demix 3 harmo)) (setf line5 (pitch-demix 4 harmo)) ;;; Adding rest and tie (setf line1.o line1) (setf line2.o (length-legato (length-weight line2))) (setf line3.o (length-legato (length-weight line3))) (setf line4.o (length-legato (length-weight line4))) (setf line5.o (length-legato (length-weight line5))) ;;; Distribute to instruments (setf vn1 (ambitus '(g3 g6) line1.o)) (setf vn2 (ambitus '(g3 g5) line2.o)) (setf vla (ambitus '(c3 c5) line3.o)) (setf vlc (ambitus '(c2 e4) line4.o)) (setf ctb (ambitus '(c1 g2) (pitch-transpose 0 line5.o))) (setf violin1 vn1) (setf violin2 vn2) (setf viola vla) (setf violoncello vlc) (setf contrabass ctb) ;;;--------------------------------------------------------- ;;; Score and Layout ;;;--------------------------------------------------------- (def-score ftsy (:title "Fantaisie pour cordes" :composer "S.Boussuge" :copyright "Copyright © 2020 s.boussuge" :key-signature 'chromatic :time-signature '((1 1 1 1) 4) :tempo 72 :layout (bracket-group (violin1-layout 'violin1) (violin2-layout 'violin2) (viola-layout 'viola) (violoncello-layout 'violoncello) (contrabass-layout 'contrabass))) (violin1 :omn violin1 :channel 1 :sound 'gm :program 'string-ensemble-1 :volume 100 :pan 16 :controllers (91 '(48)) ) (violin2 :omn violin2 :channel 2 :sound 'gm :program 'string-ensemble-1 :volume 95 :pan 111 :controllers (91 '(48)) ) (viola :omn viola :channel 3 :sound 'gm :program 'string-ensemble-1 :volume 90 :pan 32 :controllers (91 '(60)) ) (violoncello :omn violoncello :channel 4 :sound 'gm :program 'string-ensemble-1 :volume 90 :pan 95 :controllers (91 '(60)) ) (contrabass :omn contrabass :channel 5 :sound 'gm :program 'string-ensemble-1 :volume 90 :pan 95 :controllers (91 '(72)) ) )
-
JulioHerrlein reacted to Rangarajan in Function: interval-to-pitch
Hi,
When I evaluate:
(interval-to-pitch '(2 2 1 2 2 2 1) :start 'c7) => (c7 d7 e7 f7 g7 a7 b7 c8)
This is expected.
But when I evaluate:
(interval-to-pitch '(2 2 1 2 2 2 1) :start 'c8) => (c8 bb7 gs7 g7 f7 eb7 cs7 c7)
Is this expected?
- Rangarajan
-
JulioHerrlein reacted to opmo in Question about composition methods and related functions
I think chord-inversion would be good start, this will allow you to generate chordal as well as melodic material.
-
JulioHerrlein reacted to Stephane Boussuge in Question about composition methods and related functions
Hi,
as a starting point you can look at passing-intervals function and also length-divide function.
Best !
Stéphane
-
JulioHerrlein reacted to opmo in Function MORPH
MORPH function will be part of the next release.
(progn (setf chopin-28-4 (pitch-transpose 12 '(h gb2e3 g2b2e3 fs2a2e3 fs2a2eb3 f2a2eb3 q f2a2d3 f2gs2d3 h e2gs2d3 q e2g2d3 e2g2cs3 h e2g2c3 e2fs2c3 e2fs2c3 eb2fs2c3 d2fs2c3 d2fs2c3 d2f2c3 d2f2b2 q c2e2b2 c2e2a2 h c2e2a2 q b1e2a2 b1eb2a2 h c2e2a2 b1eb2a2 b1eb2a2 h b1eb2a2 -h g2b2e3 g2b2e3 fs2a2e3 f2a2eb3 f2gs2eb3 e2gs2d3 q e2g2d3 e2g2cs3 cs2e2bb2 c2e2a2 h a2c3fs3a3 q g2c3fs3 g2b2e3 a2c3e3 e2fs2c3 b1e2b2 c2e2a2 h b1e2b2 q eb2b2 b1eb2a2 h. c2g2bb2 q c2e2a2 b1e2a2 e2gs2 h b1e2g2 bb1c2g2 e2fs2b2e3 b1eb2fs2b2 e2g2b2))) (setf chopin-28-4-pitch (omn :pitch chopin-28-4)) (setf inv-num (gen-trim (length chopin-28-4-pitch) '(1))) (setf chopin-28-4i (chord-inversion inv-num chopin-28-4-pitch :variant '?)) (setf rh (pitch-transpose 12 (make-omn :length '(s) :pitch (melodize chopin-28-4i) :span :pitch))) (setf lh-length (mclist (get-span rh))) (setf lh (dechord (make-omn :length lh-length :pitch chopin-28-4i :velocity '(mp)) )) (setf rh-len (length rh)) (setf rh-morph (morph (rnd-number rh-len 0.2 0.5) rh)) (ps 'gm :p (list rh-morph lh) :tempo '((102 52) (:rit 102 34 1/64 4))) )
Best wishes,
Janusz
-
JulioHerrlein reacted to Stephane Boussuge in Session 21 - Simple piano choral with Harmonic remapping from white noise generated scales
Hi folks,
here's the files from today's session.
Enjoy !
Stéphane
ZoomIntoOM241020-Videos.zip auto-split.lisp
Zoom241020a.opmo
split-point.lisp
-
JulioHerrlein reacted to Rangarajan in Saving generated music in MP3 form
Thanks Julio and Janusz. I will explore those tools.
Regards,
Rangarajan
-
JulioHerrlein reacted to opmo in Saving generated music in MP3 form
Audio Hijack could be a solution.
Rogue Amoeba | Audio Hijack: Record Any Audio on MacOS
ROGUEAMOEBA.COM Record VoIP calls from Skype, web streams from Safari, and much more.
As well the Loopback - part of the suite.
Rogue Amoeba | Loopback: Cable-Free Audio Routing
ROGUEAMOEBA.COM Get all the power of a high-end studio mixing board, right inside your Mac!
Great tools.
-
-
JulioHerrlein reacted to AM in generating realtime score / sending data from OPMO to POLYTEMPO NETWORK by OSC
dear all
here's an example (from my current work)...
this little video shows how i generate/display SCORE (instrumental parts) on a screen + virtual conductor (piano part). the example is "nonsense", but shows how it looks/works... you see the bars (generating), the cue, beat... and the arrow (that shows you where to read/play) ...also you hear some bad (sry) sound-simulation of the setup.
in this way i can generate a whole piece in realtime on STAGE (all musicians will read their part from their own screen). this one will be for 5 instruments, ePlayer and modular synthesizer. during the performance an algorithm (or some data-streams) will generate the piece in OPMO. with OSC i can send all datas (score, beat, tempo..) from OPMO to POLYTEMPO-NETWORK (https://polytempo.zhdk.ch) and work and coordinate different independent tempo layers, conducting etc...
for more POLYTEMPO informations... have a look here: https://polytempo.zhdk.ch
greetings
andré
IMG_0083.MOV
-
JulioHerrlein reacted to Stephane Boussuge in Session 17 - 26.09.20 Extrapolation for Pierrot Ensemble
Hi folks,
Here's the files from this session showing my process for a work in progress " Extrapolation" for Pierrot Ensemble.
You will find also exceptionally the video recording.
All this material is shared here for study purpose naturally, please, don't use it "as this" but use this material as an example to inspire yourself and help you to construct your own workflow and algorithms.
All the best and happy Opusmodus-ing
Stéphane
Part1-Basic-idea.opmo Part2-Main-Process.opmo Part3-Looping-Process.opmo Part4-ScoreOutput.opmo pitch-rotate-vary-segment.lisp Stephane-Video-ZoomOM2609-20.zip
-
JulioHerrlein got a reaction from Stephane Boussuge in Session 16 - 19.09.20
Thanks a lot, Stephane ! Great, as usual !
Best !
Julio