Jump to content

Search the Community

Showing results for tags 'resolved'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Welcome To Opusmodus
    • Announcements
    • Pre Sales Questions
  • Support Forum
    • Support & Troubleshooting
    • OMN Lingo
    • Function Examples
    • Score and Notation
    • Live Coding Instrument
    • Library Setup
    • MIDI Setup
  • Question & Answer
    • Suggestions & Ideas
  • Sharing
    • Made In Opusmodus
    • User Extensions Source Code


  • Stephane Boussuge
  • Didier Debril


  • OMN The Language
  • Tutorial Guide
  • CLM Examples


  • Getting Started
  • HowTo
  • Live Coding
  • Music Theory and Analysis
  • Users Examples

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start



Website URL




About Me

Found 23 results

  1. I just discovered that (from the doc for integer-to-pitch) (integer-to-pitch '((-2 -1) 0 (1 2))) => (bb3b3 c4 cs4d4) but (integer-to-pitch '((-2 -1) (0 2) (1 2))) => ((bb3 b3) (c4 d4) (cs4 d4)) Unless at least one element is not a sublist, it fails to make chords. This seems inconsistent, and probably a bug. This is in Opusmodus Version 1.3.24962
  2. It would be great if the File / Open Recent... list was sub-divided into .opmows files and everything else. It would also be very convenient if, when Opusmodus starts, it re-opened any .opmows files that were open when it last quit, but lacking that, having a separate section for them in Open Recent... would provide quick access to what I've been working on. As-is, any .opmows file tends to fall off the list when I open enough other files.
  3. I've attached two screenshots showing how Figure 10 in "1st Element - Length.rtfd" looks, compared to the example copied to the left pane and evaluated using Tools / Snippet / OMN Notation. I would much prefer the appearance of the tutorial example, without the horizontal line, to what I get when I render it. Is there a problem with my setup, a bug, or has an aesthetic decision been made here that didn't get reflected in the doc? I'm using OM Version 1.3.24952 on MacOSX 10.14.6. Thanks for any insights.
  4. What is the Lisp function for stopping playback (bound to the shortcut cmd-esc)? ... I could never add a custom keyboard shortcut to the Opusmodus text editor Hemlock (and I tried), but I just managed adding keyboard shortcuts and a menu for playing Opusmodus snippets and my polyphonic score format to Emacs (thanks to the fact that scores now can be displayed in a separate window). Only need some key for stopping playback as well. (The main thing I will then miss when using Emacs as the Opusmodus IDE is the close integration of the document, but well, you cannot have everything On the plus side, I have a more stable editor and in particular a very good debugger.) Thanks! Torsten
  5. 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
  6. Hallo, newbie here I'm just starting with OM and playing around with the tutorials. I slightly changed tutorial #4 and run into something strange. If i run the script as posted below, all works as expected. But when i change the function reverse to nreverse (and nreverse is the oficially documented name of the function) the omn result will leave the right hand empty. Why ist that? And why does reverse work as i expect it to work? And, another thing: i dont understand what the term seed will do. Will it make random functions behave always the same as long as the seed is the same? ...and what does the number following the seed mean? Thank you !! Best, Sebasian (setf pitches (gen-repeat 5 '(c4 cs4 fs4 g4 c5 cs5))) (setf transposed-pitches (gen-repeat 5 (pitch-transpose -24 pitches))) (setf lengths (span pitches '(e))) (setf lengths-rests (length-weight lengths :weight '(2 1) :seed 12)) (setf left-lengths (reverse lengths-rests)) (setf piano-righthand (make-omn :length lengths-rests :pitch pitches :velocity'(mp))) (setf piano-lefthand (make-omn :length left-lengths :pitch transposed-pitches :velocity '(f))) (setf timesigs (get-time-signature left-lengths)) (def-score lesson-4 (:key-signature 'chromatic :time-signature '( 5 8 ) :tempo 190 :layout (piano-layout 'piano-rh 'piano-lh)) (piano-rh :omn piano-righthand :channel 1 :sound 'gm :program 'acoustic-grand-piano) (piano-lh :omn piano-lefthand) )
  7. Hi, I am getting back to Opusmodus after a long time. I am excited about the support for OSC in this new release. I have two questions: 1) Normally when we use OSC to send to a destination, we use an "address" like "/a/b/c". A device that has this destination "address" is expected to receive the message and act on it. How and where do we specify that address in "osc-thread" function. Just to give an example, a couple of years ago, I had written an article on how to control Reaktor using OSC. If I want to do something similar using OM, what is the procedure? 2) There could be occasions where I want to ping the destination at regular intervals. How do I do that in OM? A detailed example will be quite useful. Regards, Rangarajan
  8. 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
  9. When I try to open an XML file generated in Opusmodus snippet in Musescore 3, I get a message (File Corrupted). I have to open it in Finale and then export as XML. After that I can open it in Musescore. I do´t know why... But I decided to report it to you. Best, Julio
  10. I just installed V 1.3.24409, and am getting some errors on startup. The first one is an alert that says: "Error in Hemlock command processing. There is no applicable method for the generic function: #<STANDARD-GENERIC-FUNCTION ENSURE-COMPOSER-PANE #x302001D4373F> when called with arguments: ("/Users/<my username>/Documents/Opusmodus/Extensions/Load CLM Instruments.lisp" #<OM-LAYOUT-CONTROLLER <OMLayoutController: 0x134880> (#x134880)>). After I dismiss that, a window opens that says: Error: File #P"clm:instruments;" does not exist. > While executing: clm-user-ins-path, in process Opusmodus Extension Initialization(6). and then the error recovery options. I have deleted both the ~/Documents/Opusmodus and ~/.opusmodus folders, deleted the prefs file, and searched for any other opusmodus folders, so I'm confident that it's clean. I then reinstalled the newly DL'd Opusmodus, launched it, entered my serial #, and created a new Opusmodus folder. This didn't help. The file ~/Documents/Opusmodus/Extensions/Load CLM Instruments.lisp exists and looks unremarkable. ~/Documents/Opusmodus/CLM/instruments exists and contains a bunch of .ins files. Before I DL'd the new version, I launched the previous version 1.3.24303 and got that same error window complaining about not finding clm:instruments. I am unaware of anything changing on my Mac that might have broken this recently. I'm running Mojave 10.14.2 on an iMac (Retina 5K, 27-inch, Late 2014). The Quick Start Workspace loads and plays anyway. Any ideas about how to fix this?
  11. So I'm very happy to be exploring new snippet structure but cannot seem to define my own instrument, based on the example in the help file I did this but get errors: SOLVED: I had to Evaluate my Def-Inst before it would play..
  12. After installing the newest version, I receive this diagnostic. Not sure at all what it means. There is no applicable method for the generic function: #<STANDARD-GENERIC-FUNCTION ENSURE-COMPOSER-PANE #x302001CFAA4F> when called with arguments: ("/Users/RSTGSU/Opusmodus/Extensions/Load CLM Instruments.lisp" #<OM-LAYOUT-CONTROLLER <OMLayoutController: 0x735e90> (#x735E90)>) Nor do I know how to solve it.
  13. 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:
  14. I was wondering what was the preferred method to store snippets? I come across quick ideas I want to quickly store away for future. There seems to be two choices..make a .opmo file or 'save the last file as .xml' under the File menu. Are there any others? I guess an xml file is good for seeing the notation rapidly but effectively renders the snippet dead as it loses the reference to the code and an .opmo file keeps the code... though this needs to be evaluated to see the notation quickly.
  15. 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
  16. > 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!
  17. 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
  18. 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
  19. 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)) |#
  20. 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
  21. 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
  22. 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))
  23. 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
  • Create New...