Search the Community
Showing results for tags 'resolved'.
-
Common Music (CM) is another interesting composition system (http://commonmusic.sourceforge.net), and a recent revision of the old CM version 2 (https://github.com/ormf/cm), which was still implemented in Common Lisp (in contrast to later versions defined in Scheme) can be loaded into and used alongside Opusmodus 1.2 without problems. This was possible primarily due to a largely revised load mechanism of the old CM sources. With the new Opusmodus 1.3 this is not possible any more. It seems the problem is caused by the fact that :CLM (and a number of variants) are still added to *features*, but there is no CLM package anymore. I cannot see the Opusmodus sources, but I assume that all CLM definitions have been added directly to the Opusmodus package. Anyway, due to the present feature CM assumes that CLM is there, but then cannot find its package. Anyway, I found a way around (by changing the relevant feature expressions from #-clm into #-(and clm (not opusmodus)) and will try to have that included in the relevant CM sources at https://github.com/ormf/cm Best, Torsten
-
Opusmodus 1.2 can be used from within the Emacs editor as well (see the post at the link below for details). For me as a programmer having additionally access to the Emacs Lisp IDE SLIME is greatly preferable due to various advanced features provided by Slime when compared with the more easy-to-use native IDE of Opusmodus. For more information on SLIME see its website: https://common-lisp.net/project/slime Unfortunately, the SLIME link is seemingly broken in Opusmodus 1.3, which I just started for the first time. For those who have no SLIME installed (but have Quicklisp set up), SLIME can be installed with the following command. (ql:quickload "quicklisp-slime-helper") Unfortunately, this results now in an error. To load "quicklisp-slime-helper": Load 1 ASDF system: quicklisp-slime-helper ; Loading "quicklisp-slime-helper" .. > Error: Undefined function asdf/interface::operation-forced called with arguments (#<load-op>) . > While executing: #<standard-method asdf/action:perform (asdf/lisp-action:load-op swank-loader::swank-loader-file)>, in process Listener-2(9). > Type cmd-/ to continue, cmd-. to abort, cmd-\ for a list of available restarts. > If continued: Retry applying asdf/interface::operation-forced to (#<load-op>). > Type :? for other options. I already had SLIME installed, but simply running it does not work either and results in the same error. (cl-user::start-swank) ? To load "swank": Load 1 ASDF system: swank ; Loading "swank" . > Error: Undefined function asdf/interface::operation-forced called with arguments (#<load-op>) . > While executing: #<standard-method asdf/action:perform (asdf/lisp-action:load-op swank-loader::swank-loader-file)>, in process Listener-2(9). > Type cmd-/ to continue, cmd-. to abort, cmd-\ for a list of available restarts. > If continued: Retry applying asdf/interface::operation-forced to (#<load-op>). > Type :? for other options. Any help? Thanks a lot! Best, Torsten
-
> Error: The function double is predefined by Opusmodus. > While executing: ccl::cerror-if-redefine-om, in process Opusmodus Extension Initialization(5). > Type cmd-/ to continue, cmd-. to abort, cmd-\ for a list of available restarts. > If continued: Replace the definition of double. > Type :? for other options. 1 > Recently when I start Opus Modus I get this error message. Is there something to do? With thanks!
-
resolved XML Snippet "open with" context menu option
JulioHerrlein posted a topic in Suggestions & Ideas
Dear All, I have a little suggestion for workflow. 1) A simple context menu button (or some way) to open the XML snippet in other software. Like right-clicking on the snippet and have an option (OS based option) like "open with" (musescore, finale, sibelius, etc) This could be useful for collecting material for a piece to be edited outside Opusmodus. I personally use Musescore with my students. It's free, open and runs windows and mac. I also use Finale for myself. This simple options could solve the problem of the audition of many different snippets. 2) Another (much more complex) idea would be when click over each snippet to have a play panel, similar to the live coding panel (with play/stop button, tempo, volume, maybe sound and channel assigment , according to the number of staves, etc... This could be handy. Best, Julio added 2 minutes later Like this (when clicking over the snipett inside Opusmodus: -
For sound synthesis purposes (e.g., for an expressive performance), we may want to use note lengths beyond the restricted set of quantised note durations. However, Opusmodus currently prevents various irregular note duration sequences to be auditioned and throws an error instead. What is really interesting, though, is that the notation for such irregular durations still seem to work. It might make sense the other way round (i.e. refusing to notate certain rhythms -- though I am definitely not voting for introducing that :), but I don't see any real reason why arbitrary rhythms may not be auditioned. As an example, below is a short example of some arbitrary non-regular rhythm. Opusmodus can notate this rhythm, but when trying to play it back it throws an error. '((1/10 1/11 1/12 1/13)) Thanks! Best, Torsten
-
resolved How to force a time signature for Snippet fast use
JulioHerrlein posted a topic in OMN Lingo
Dear Friends, I'm setting some 12-tone examples for classroom. I just want to show some rows with motives, in the example below. I'd like to force this omn expression to make a snippet in 4/4 only or 2/4, without having to use def score. Is it possible ? It's easier for faster classroom purposes. Best, Julio (setf clodorow '(a4 gs5 c5 d5 bb4 b4 fs5 f5 cs5 g5 ds5 e5)) (setf serierit '(q.. s -s s s s -s e._q -s s -s s_q)) (make-omn :length serierit :pitch clodorow :velocity '(pp sfz p < f pp mf mf mp mp) :length-symbols t) It's genarating a 7/4 snippet. I would prefer it in 2/4 or 4/4... Any help ? Best, Julio -
Dear Friends, I'm happy to announce that my doctoral dissertation in music composition will have many Opusmodus examples ! I'd like to know how the best way to export plots, and midi piano roll (assistants) for using as examples in Microsoft Word, PDF applications, vectorial graphic software (like Corel), etc I was just snapshoting the screen with built in mac snapshot function (CMN + CTRL + SHIFT + 4) but wondering if there are some method for saving the output. Best, Julio
- 12 replies
-
I really like how Opusmodus allows to preview monophonic snippets (and other material, like interval sequences). No need to explicitly call some function or connect to some editor, as in other composition systems -- just use a keyboard shortcut to see and hear an intermediate result. However, what I miss is notating/auditioning intermediate results of polyphonic music with a single shortcut. So, I defined the function preview-score, based on def-score. The function expects a polyphonic score in the slightly simplified format we discussed earlier. Here is a minimal example. (preview-score '(:vln ((q b4 a4 h g4)) :vlc ((h g3 b3)))) If I want to control further notation or playback parameters, preview-score provides arguments for that, but that is basically the same as using def-score directly. Instead, such parameters can be defined only once with global variables, and then used for multiple calls to preview-score. Here is some example setting. (setf *default-preview-score-instruments* '(:vln (:program 'violin :sound 'gm) :vlc (:program 'cello :sound 'gm))) (defparameter *default-preview-score-header* '(:title "Opus magnum" :tempo 80)) Janusz: How can I define a keyboard shortcut that calls the function preview-score with the score returned by a selected code region (or the Lisp expression just before the cursor)? Thanks! For completeness, the definition of preview-score is below. Best, Torsten ;;; just some dummy settings for now (defparameter *default-preview-score-instruments* '(:vln (:program 'violin :sound 'gm) :vlc (:program 'cello :sound 'gm)) "Settings for each instrument used by `preview-score'. The format is a plist where keys are the instrument labels, and values a list with the actual settings. For format of these settings are the same as instrument settings for `def-score' with keywords like :sound, :channel etc. -- except for they key :omn.") ;;; just some dummy settings for now (defparameter *default-preview-score-header* '(:title "Opus magnum" :tempo 80) "Global score settings used by `preview-score'. The format is a plist where keys are the instrument labels, and values a list with the actual settings. The format is the same as the header settings for `def-score' with keywords like :title, :key-signature etc.") (defun preview-score (score &key (name 'test-score) (instruments *default-preview-score-instruments*) (header *default-preview-score-header*)) "Notates and plays a score in a format slightly simpler than expected by def-score, i.e., without its header. Args: - score (plist): a headerless score. See below for its format. - name (symbol): The score name. - instruments (plist): Keys are instrument labels, and values a list with the actual settings. These settings have the same format as instrument settings for `def-score' with keywords like :sound, :channel etc. -- except for they key :omn. - header (plist): The format is the same as the header settings for `def-score' with keywords like :title, :composer, :key-signature etc. Score format: ;;; (<part1-name-keyword> <part1-OMN> ;;; <part2-name-keyword> <part2-OMN> ;;; ...) Example: ;;; (preview-score ;;; '(:vln ((q g4) (q. c5 e d5 q e5 f5) (h. e5)) ;;; :vlc ((q g3) (q c4 b3 a3 g3) (h. c3))) ;;; :instruments '(:vln (:program 'violin :sound 'gm) ;;; :vlc (:program 'cello :sound 'gm)) ;;; :header '(:title \"Opus magnum\" ;;; :tempo 80)) " ;; Using eval is problematic (https://stackoverflow.com/questions/2571401/why-exactly-is-eval-evil/), ;; but hard to avoid for a dynamically created def-score expression that requires splicing with ,@. ;; Possible alternative would be to define preview-score as macro, but then arguments are not evaluated. (eval `(def-score ,name ;; quote all header args, because symbol values must be quoted... ,(mapcar #'(lambda (x) `',x) (append header ;; add default vals of required header args at end -- they are overwritten by args given (list :key-signature 'atonal ;; By default, use implicit time signature of 1st part :time-signature (om:get-time-signature (second score)) :tempo 70))) ,@(mapcar #'(lambda (part) (let ((part-symbol (first part)) (part-omn (second part))) (list* part-symbol :omn `(quote ,part-omn) (getf instruments part-symbol)))) (plist->pairs score))) ) (audition-musicxml-last-score) *last-score*) #| ; mini test (preview-score '(:vln ((q g4) (q. c5 e d5 q e5 f5) (h. e5)) :vlc ((q g3) (q c4 b3 a3 g3) (h. c3))) :instruments '(:vln (:program 'violin :sound 'gm) :vlc (:program 'cello :sound 'gm)) :header '(:title "Opus magnum" :tempo 80)) |#
-
a minor correction suggested... I know this is fairly basic, but it made a beginner like me do a double take... this is the helpfile: but further down it says... yet 'size' (which is in the type for a &key) is not a valid keyword, it refers to 'number'... thought it may help others... must be a nightmare keeping all help-files consistent, my sympathies! best, Julio
-
Following from this question, I want to use several different Lisp packages through quicklisp, but I can't get the installation to work correctly. After doing some digging, I found out that the path to quicklisp is not defined correctly. This is the content of the ql:*quicklisp-home* global: > ql:*quicklisp-home* #P"/Users/opusmodus/quicklisp/" I realised that changing this manually doesn't fix the issue, and because of this I can't install or use quicklisp correctly. Note that I do not have a user by the name opusmodus and creating that directory with my user's permission does not fix it. I managed to do something by using SBCL as my own user to load and install quicklisp, and then in opusmodus use the following: (load #p"/Users/ajf-/quicklisp/setup.lisp") But it's actually a workaround and it's not very reliable (also gives an error sometimes). Can you please point me in the right direction? Thank you very much
-
Hi, I get the following error warning, when I try to audition the omn and I don't get why..? With a def-score section all compiles fine > Error: The GET-SPAN output denominator is not a power of two (1, 2, 4, 8, 16, ...). Denominator: 12. > While executing: get-time-signature-l, in process Listener-1(8). > Type cmd-. to abort, cmd-\ for a list of available restarts. > Type :? for other options. (simplified) code: (setf zahlen3 '((-3/8 3/8 -1/8 -3/8) (1/2 5/8 1/4) (5/8 1/4 -3/8) (1/8 3/8 1/4 1/2) (-3/8 1/4 -1/8 1/4 1/8 -3/8) (3/8 -1/8 1/4 1/4 5/8 1/4 1/2 -3/8) (-1/8 5/8 1/8 -3/8) (-1/8 -3/8 -3/8 -3/8) (1/8 -3/8 1/8 -3/8 1/4) (1/2 1/2 1/8 1/8 -3/8) (1/8 -1/8 3/8 1/4 1/2 -3/8 1/8) (-1/8 -1/8 1/4 3/8 1/4) (-1/4 1/4 -1/12 -1/4 1/6 5/12 -1/12) (1/6 5/12 1/6 -1/4) (1/12 1/4 1/6 1/12 -1/4 1/6 -1/12) (-1/12 1/6 1/12 -1/4 1/6) (-1/12 1/6 1/6 5/12 1/6) (1/3 -1/4 -2/12) (5/12 1/12 -1/4 -1/12 -5/12 -1/4 -1/4) (1/8 -1/4 1/12 -1/4 1/6) (1/3 1/3 1/12 1/12 -1/4 1/12 -1/12) (-1/12 1/4 1/6 1/3 -1/4 1/12 -1/12) (-1/12 1/6 1/4 1/6 -1/12) (-3/8 3/8 -1/8 -3/8 1/2 5/8 1/4 5/8 1/4) (-3/8 1/8 3/8 1/4 1/2 -3/8 1/4 -1/8) (1/4 1/8 -3/8 3/8 -1/8 1/4 1/4 5/8) (1/4 1/2 -3/8 -1/8 5/8 1/8 -3/8 -1/8 -3/8) (-3/8 -3/8 1/8 -3/8 1/8 -3/8 1/4) (1/2 1/2 1/8 1/8 -3/8 1/8 -1/8 3/8) (1/4 1/2 -3/8 1/8 -1/8 -1/8 1/4 3/8 1/4))) (get-span zahlen3) => (5/4 11/8 5/4 5/4 3/2 11/4 5/4 5/4 5/4 13/8 15/8 9/8 3/2 1 13/12 3/4 1 3/4 7/4 7/8 5/4 5/4 3/4 7/2 19/8 19/8 23/8 2 9/4 19/8) (setf toene '(c4 d4 e4 f4 fs4 gs4 bb4)) (setf stimme1 (make-omn :length zahlen3 :pitch toene))
-
Hi, I have a small suggestion concerning MAKE-SCALE: It would be a nice extension, if one can use lists in :alt would be an easy way to construct symmetric scales and more complex sieves. simple example: (make-scale 'c3 8 :alt '(1 2)) => (c3 cs3 eb3 e3 fs3 g3 a3 bb3) same as: (flatten (list (gen-mix (make-scale 'c3 4 :alt 3) (make-scale 'cs3 4 :alt 3)))) => (c3 cs3 eb3 e3 fs3 g3 a3 bb3) Happy New Y(ear)(s)! ole