-
Posts
2,902 -
Joined
-
Last visited
Reputation Activity
-
opmo reacted to mark5009 in OM2 and Emacs
Okay, it works easily and well with my setup: simply copy the "emacs-opusmodus.el" into your local quicklisp directory and modify Emacs's init.el to add
(load (expand-file-name "$HOME/quicklisp/emacs-opusmodus.el")) (load-opusmodus-slime) (opusmodus-options)
This allows me to run up a REPL against SBCL (M-x slime) or against OM (M-x slime-connect)
-
opmo reacted to mark5009 in OM2 and Emacs
Hi.
I've just started with OM2 and I'm finding the emacs/slime setup a touch confusing (there has obviously been lots of work on this part of OM over the years of this forum). Basically, I run my current emacs setup with an exisiting slime setup (I do some dev work using SBCL). Is there a "correct" way of adding or modifying emacs-opusmodus.el to work with an existing setup? Or can I simply copy it, and hack it as needed?
TIA and loving OM 🙂
.. m.
-
opmo reacted to AM in Regression- Stasis-Progression
or...
(loop for x from 7 downto 1 for y from 1 to 7 collect (list x 3 y))
-
-
opmo got a reaction from torstenanders in Turning off trace messages
For some recent is not working if in Extensions folder.
-
opmo got a reaction from NagyMusic in Session 17 - 26.09.20 Extrapolation for Pierrot Ensemble
Is this what you are looking for:
(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-sample 12 '((pp)(p)(mp)(mf)(f))) :span :pitch ))))
By default the span in length. If you wan't pitch to be the master then :span :pitch will do the trick.
-
opmo reacted to Rangarajan in Created in Opusmodus
I am implementing a library of algorithms for music generation using Opusmodus. Here are 3 snippets generated using this library. The midi outputs are sent to Reaper DAW, which in turn uses instruments available in Propellerhead Reason 11 (through VST3i Reason Rack Plugin).
- Rangarajan
rnd-nil3-4_4.mp3
rnd-nil2-4_4.mp3
rnd5654328-4_4.mp3
-
opmo reacted to AM in Opusmodus to Processing (by Midi)
Dear all
Today I dealt briefly how to control PROCESSING (software and programming language) by Midi. There is a great interface for this: "rwmidi" by Giuseppe Torre. You can download and install it, it works fine!
A short Video (no Sound) with a very simple Processing Example
movie.mov
I think this is a good combination if you want to visualize your midi output (or just use de midi-data in realtime) or if you want to program a separate VISUAL track in OPMO. Here is a small example (I can't program usable in PROCESSING yet, sorry :-)) Downloads etc. are here ...
https://processing.org
https://gitlab.com/giuseppetorre/rwmidi-revival-master
here's a video, how to install etc...
https://www.youtube.com/watch?v=7iFUenT5B68&feature=youtu.be
and as an attachm. my "sketch" in processing
sketch_Processing_from_Midi.pde
Greetings André
P.S. I think there ist also a way to send data by OSC
-
opmo got a reaction from edesert in Two variations on Chopin 28-4
Two variations on Chopin 28-4
Janusz
-
opmo got a reaction from Stephane Boussuge in Function: vector-to-pitch
(vector-map '(c4 d4 e4 c5 d5) (gen-gaussian-noise 10 :seed 89)) => (d5 d4 c4 e4 d4 e4 c4 d4 e4 d5)
🙂
-
opmo reacted to Rangarajan in Function: vector-to-pitch
Thanks to suggestion by Janusz, I have been able to solve my requirement thus:
;; Returns a list of pitches from the given list, satisfying the supplied noise ;; pitch-list => arbitrary list of pitches ;; noise => Any noise (defun noise-to-pitch-map (pitch-list noise) (mapcar #'(lambda (n) (nth n pitch-list)) (vector-round 0 (1- (length pitch-list)) noise))) Examples: (noise-to-pitch-map '(c4 d4 e4 f4) (gen-white-noise 10 :seed 89)) => (c4 f4 e4 c4 d4 e4 f4 c4 f4 e4) (noise-to-pitch-map '(c4 d4 e4 c5 d5) (gen-gaussian-noise 10 :seed 89)) => (d5 d4 c4 e4 d4 e4 c4 d4 e4 d5) (noise-to-pitch-map (expand-tonality '(c4 major)) (gen-pink-noise 10 :seed 89)) => (c4 d4 d4 e4 e4 f4 g4 a4 b4 b4)
- Rangarajan
-
opmo got a reaction from NagyMusic in Two variations on Chopin 28-4
Two variations on Chopin 28-4
Janusz
-
-
opmo got a reaction from lviklund in Two variations on Chopin 28-4
Two variations on Chopin 28-4
Janusz
-
opmo got a reaction from JulioHerrlein in Session 22 - 07.11.20 - Vertical harmonic control - Density - Auto-explode4
I assume you need to evaluate the auto-explode4 function first.
-
opmo reacted to torstenanders in Opusmodus commands don't work in Aquamacs
I just noted that the code I shared above depends on other definitions in my library (e.g., the function preview-score). Below is an update that instead uses only builtin Opusmodus functions. Holler in case this is not working for you, as the code on my machine is a bit different, and I did not test the code below... (specifically, the version below only works for the scores with instruments from the ps set gm, while my own code is more flexible, but then again depends on other custom definitions).
;; Emacs lisp code: put into your Emacs init file, e.g., ~/.emacs ;; Custom function for previewing Openmusic snippets etc (defun slime-eval-and-preview-opmo-snippet-before-point () "Evaluate the Openmusic snippet (an expression) preceding point and preview that snippet." (interactive) (let* ((score (slime-last-expression)) (full-expr (concat "(ps 'gm (list :treble " score "))")) ) ;; (print (concat "debug: " full-expr)) (slime-interactive-eval full-expr))) (defun slime-eval-and-preview-opmo-score-before-point () "Evaluate the score (an expression in the tot score format) preceding point and preview that score (notation and playback)." (interactive) (let* ((score (slime-last-expression)) (full-expr (concat "(ps 'gm " score ")")) ) (slime-interactive-eval full-expr))) (defun slime-stop-opmo-playback () "Stop the currently playing Openmusic sound playback." (interactive) (slime-interactive-eval "(sequencer:sequencer-stop *audition-sequencer*)")) (defun slime-opmo-midi-playback () "(Re-)play the last Opusmodus score with a separate MIDI playback window." (interactive) (slime-interactive-eval "(display-midi *last-score* :display :window)")) (add-hook 'lisp-mode-hook (lambda () (local-set-key (kbd "<A-f2>") #'slime-eval-and-preview-opmo-snippet-before-point) (local-set-key (kbd "<A-f3>") #'slime-eval-and-preview-opmo-score-before-point) (local-set-key (kbd "<A-f4>") #'slime-opmo-midi-playback) (local-set-key (kbd "<A-f1>") #'slime-stop-opmo-playback) )) ;; Creating a new "Opusmodus" menu in the menu bar to the right of "Lisp" menu. ;; This new menu is only shown when in lisp-mode (define-key-after lisp-mode-map [menu-bar opusmodus] (cons "Opusmodus" (make-sparse-keymap "hoot hoot")) 'lisp) ;; Creating a menu item, under the menu by the id “[menu-bar opusmodus]” (define-key lisp-mode-map [menu-bar opusmodus preview-score] '("Preview score cmd-f3" . slime-eval-and-preview-opmo-score-before-point)) (define-key lisp-mode-map [menu-bar opusmodus preview-snippet] '("Preview snippet cmd-f2" . slime-eval-and-preview-opmo-snippet-before-point)) (define-key lisp-mode-map [menu-bar opusmodus stop-playback] '("Stop playback cmd-f1" . slime-stop-opmo-playback)) (define-key lisp-mode-map [menu-bar opusmodus replay-score] '("(Re)play last score cmd-f4" . slime-opmo-midi-playback))
-
opmo reacted to JulioHerrlein 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 !
-
opmo 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
-
opmo reacted to JulioHerrlein in Articulations (key switches) XML Export
Yes, MUSICXML
I´m also doing a video ! 😀😀😀😀
-
opmo reacted to Rangarajan in Created in Opusmodus
Hi,
The attached score was created in Opusmodus!
- Rangarajan
Music1.mp3
-
opmo got a reaction from JulioHerrlein 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.
-
opmo 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
-
opmo 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)) ) )
-
opmo got a reaction from JulioHerrlein 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.
-
opmo reacted to Stephane Boussuge in Voile Suspendu - video score
Hi,
here's the video rendering of my score "Voile Suspendu"
S.