Search the Community
Showing results for tags 'resolved'.
-
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 -
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