Jump to content
View in the app

A better way to browse. Learn more.

Opusmodus

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Support & Troubleshooting

Discuss anything related to Opusmodus that doesn't fit in another sub-forum here!

  1. I've been working in a scratch file, and setting a bunch of variables and defining functions. Now I want to tidy things up by extracting those parts to a separate file. However, because I've evaluated the code, it's all still valid. So I can easily make a new file that doesn't have the necessary definitions. Is there a way to reset the lisp environment so I can test whether a file works from a clean slate? Obviously I can restart the application entirely - I'm just wondering if there's some way to not do that. Note: My experiments with built-in GPT are short-lived. Here's a summary of when I inquired with it: Use the clear-all function. This command is not found directl…

  2. Hello Opusmodus team and community, I'm working on a simple live-coded techno drum loop using live-coding-midi, and while the loop plays and repeats, it's not looping seamlessly — the playback seems to stutter or lose sync at the loop boundary. Despite matching total durations across parts (kick = 16 quarter notes, snare = 4 hits, hats = 64 sixteenths), something isn't syncing correctly at the loop point. I suspect it's an issue with the alignment of the final bar or a nuance in how live-coding-midi handles timing across instruments. Is there something I'm missing in how Opusmodus expects score lengths to be structured for seamless looping? Do I need to pad rests or exp…

  3. Started by AM,

    a simple small function I had to write for a project: it generates a kind of accelerando towards the value 1 (defun gen-acc (alist) (loop while (not (equal alist (gen-repeat (length alist) 1))) collect (setf alist (loop for i in alist when (> i 1) collect (- i 1) else collect i)))) (gen-acc (rnd-order (primes 11))) => ((30 2 6 12 10 18 28 1 4 16 22) (29 1 5 11 9 17 27 1 3 15 21) (28 1 4 10 8 16 26 1 2 14 20) (27 1 3 9 7 15 25 1 1 13 19) (26 1 2 8 6 14 24 1 1 12 18) (25 1 1 7 5 13 23 1 1 11 17) (24 1 1 6 4 12 22 1 1 10 16) (23 1 1 5 3 11 21 1 1 9 15) (22…

  4. Started by eboats,

    Using the GM instruments in OM ( I'm on a MacBook), I'd like to reduce the reverb on the Flute for example. Do I add something to the below or change that elsewhere? (flute :omn omn :channel 1 :volume 127 :sound 'gm :program 'flute) Also, what is the easiest way to record the OM audio output to a wav? In Supercollider for example, you can record the audio from a running script. In Dorico, you can export the notation output as audio/wav. Is there something like that in OM or would I have to use some sort of loopback tool to record the OM General Midi audio output to Audacity or Cubase? Thanks for any info!

  5. I wrote a script to reproduce Steve Reich's "Clapping Music" by brute forcing a list of rhythm permutations. Is there a single command that would do the same? ;; --------------------------------------------------------- ;; Welcome to the Composer panel. ;; This is the space where you write your score. ;; --------------------------------------------------------- (setf Clap1 '(e g4 e e -e e e -e e -e e e -e )) (setf Clap2 '( ( e c4 e e -e e e -e e -e e e -e ) ( e e -e e e -e e -e e e -e e ) ( e -e e e -e e -e e e -e e e ) ( -e e e -e e -e e e -e e e e ) ( e e -e e -e e e -e e e e -e ) ( e -e e -e e e -…

  6. Started by eboats,

    I have a simple question. In the attached pic, how do I write the two 16th note triplets in OM notation? I'm not sure how to write it if one of the notes is an 8th note like in the example ( something like '(3e d5 b4) )?

  7. Started by tambarskjelve,

    I take the the unified window layout you see in "100 seconds" videos is not available in Opusmodus 3?

  8. Started by RedDot,

    Hi, OM2 had a dark mode, but I can't find it in OM3... Isn't there a dark mode in OM3? If there is, where do I find it? All the best, António

  9. Started by paul,

    Hi, As shown in the picture below: the output of gen-dictum doesn't contain tonality information, I would appreciate some help on this matter. Thanks gen-dictum- tonality.pdf

  10. Started by david,

    Hi, i have a problem with pitch melodize (setf i22 (harmonic-progression '(1 2 3 4 5 6 7 8 9 10 11) scale :base 1 :size 4 :step '((4 4 5 )(4 4 5)(4 4 5)(4 5 4)(4 5 4)(4 4 5)(4 5 4)(5 4 4)(5 4 4)(4 5 5)(5 4 5)))) my tenth chord is good. (setf m (pitch-melodize i22)) bar 10 chord ten is not good, could someone explain what is going on? thanks for your help several problems as well bar 6

  11. Hello, I'm searching for a way to split a chord back into its pitches (so basically the reverse of "chordize"). Is there a function to do that (not "dechord" or "dissolve"...)? Thanks & cheers, Alex

  12. Started by HenryT,

    Hello! I haven't had any luck in creating connection between OM and Emacs. (start-swank) from OM Listener gives error: "The file #P"OM-SRC:SWAML-LOADER.LISP.NEWEST" does not exist". If I try (start-swank) with path to a Slime on Quicklisp path (I have both 2.28 and 2.24 versions of Slime, result is the same), compilation starts but gets stuck and must be aborted. Help appreciated Henry

  13. Started by jbm,

    I'm trying to figure out what might be wrong with this script: (setf melody '(q c4 mp q db4 q eb4 q e4 q fs4 q bb4 q a4 q d4)) ; Melody (setf melody-pairs (gen-divide 2 melody)) ; Group melody into pairs (setf chords '( h c4db4e4g4 p ; Cdim7 h e4gs4b4d5 p ; E7 h fs4a4c5eb5 p ; F#7b9 h d4f4a4c5 p ; Dmin9 )) ; Chord progression (setf seq-melody melody-pairs) ; Separate melody for staff (setf seq-chords chords) ; Separate chords for staff (setf len1 (omn-length seq-chords)) (midi-destinations) (def-score test (:title "Score Test" :composer "JBM" :time-signature '(4 4) :tempo 72) (part1 :omn seq-melody …

  14. Is there perhaps still an HTML version around of the full and up-to-date Opusmodus documentation? Context I am currently playing around with multiple AI coders (so far, I used Github Copilot, aider and Cursor at work). I am still exploring, but they definitely are helpful, in particular for popular programming languages and libraries. Not so much for more niche environments like Opusmodus yet. However, this is something that we can change, e.g., by using RAG (retrieval augmented generation, i.e. letting some system automatically extract user query-relevant information from project-relevant sources and then automatically complement the query w…

  15. Hi, Where is this file ? (defparameter *default-notation-editor* "MuseScore 4.app")

  16. Started by EAIP,

    Is there a command to move the cursor to the end of a line of code? In word processors etc a standard shortcut is [cmd+arrow] to move between start/end of line, and [option+arrow] to move between words. In OM only the latter seems to work. Thanks!

  17. In the video "Mapping Velocity to Pitch - How To in 100 Seconds", it is demonstrated how to apply MIDI velocities to a composition. However, one might just want to apply a certain velocity curve purely for a playback effect, without getting that many visually excessive dynamic markings in the actual score. I hope that is possible to achieve right now? Of course, one could later manually remove excessive markings in their preferred notation program. However, this is an inconvenience; moreover, during the compositional process within Opusmodus, you can see how it is an inconvenience to constantly see all those markings.

  18. I am trying to add a new text attribute for half pedalling (later in my scoring application Dorico I can translate that into the proper pedalling notation) and then specify for playback the MIDI CC messages it would need to send (e.g., the new attribute half-pedal sets the damper-pedal CC set to 64). Naively, a simple solution seems to be to complement this half pedalling with a text attribute for releasing the pedal (rel-pedal sets damper-pedal to 0) as shown below. So, I added the following to my pianoteq sound set (besides defining these text attributes). :group omn full-pedal (Ped 127) half-pedal (Ped 64) rel-pedal (Ped 0) This is partially already …

  19. Started by EAIP,

    I'm stuck. Why does the first example work but not the second? Thanks! (setf v1 '((-w h a4 d4) (h f4 e4 d4 q a4 g4) (q f4 g4 e a4 bb4 c5 a4 q bb4 h a4 q g4) (h a4 bb4 w a4))) First example: (loop for n from 1 to 4 collect (get-events '(1 2 (2..4)) v1)) ;; "works" Second example: (loop for n from 1 to 4 collect (get-events '(1 n (2..4)) v1)) ;; doesn't work, why? This is the error message: Error: In 1- of (n) arguments should be of type number. 1 (continue) Return a value to use. 2 Supply a new argument. 3 (abort) Return to top loop level 0.

  20. Started by Robin,

    To start over with the program I've uninstalled the program. Now I can't download it. Attached error message. Itching to get started. @opmo let me know.

  21. Started by EAIP,

    Hi there, How do you do a tonal transposition to stay in the same key? e.g. '(c4 d4 e4) => '(d4 e4 f4) Thanks.

  22. Started by david,

    Hi, could someone help me? it seems to me that there is a problem bar 7, third beat. with the keyword step (2 1) (B should be cs5) (setf scale '(b3 cs4 d4 e4 fs4 g4 gs4 as4 b4)) (gen-divide 3 (pitch-melodize (harmonic-progression '(1 2 3 4 5 6 7 8 9) scale :base 1 :size 3 :step '((2 1))))) here is the output : OM 82 > harmonic-progression pitch-melodize :seed 368992 gen-divide ((b3 d4 e4) (cs4 e4 fs4) (d4 fs4 g4) (e4 g4 gs4) (fs4 gs4 bb4) (g4 bb4 b4) (gs4 b4 b4) (bb4 b4 cs5) (b4 cs5 d5)) it should be ((b3 d4 e4) (cs4 e4 fs4) (d4 fs4 g4) (e4 g4 gs4) (fs4 gs4 bb4) (g4 bb4 b4) (gs4 b4 cs5) (bb4 b…

  23. Started by Jaseoffire,

    Hello. I'm a blind composer who has taken an interest in your software. I want to test general accessibility, but I can't seem to download the thing. The download appears to be a text field, and pressing enter on the text field does nothing. Any help would be greatly appreciated. Actually, something I didn't try but it worked. For screen reader users, you must more directly immitate a mouse click. For NVDA users, use NVDA key+numpad enter to get it to work.

  24. Started by erka,

    I would like to change with dictum the first event in the first bar ( or whatever) to a rest of the same length. I tried several things but could not do it. (setf omn2 '((5q fs4 p - bb3 f3 e4 -3q g4 c5 s eb5 mf a5 cs6 gs6) (5q gs6 f cs6 a5 eb5 - -s c5 g4 e4))) (dictum '( :do -5q :bar 1 :event 1 ) omn2) ;does not work. The length and not the rest is set. ;=>((5q fs4 p - bb3 f3 e4 -3q g4 c5 s eb5 mf a5 cs6 gs6) (5q gs6 f cs6 a5 eb5 - -s c5 g4 e4)) (dictum '( :do -q :bar 1 :event 1 ) omn2) ;same here ;=> ((q fs4 p -5q bb3 f3 e4 -3q g4 c5 s eb5 mf a5 cs6 gs6) (5q gs6 f cs6 a5 eb5 - -s c5 g4 e4)) A f…

  25. Started by david,

    Hi, why the function doesn't work with 3 note chords? (setf mat'(c4e4g4 e4g4c5 g4c5e5)) (tapis de drop-voicing :type '(0)) → (c4e4g4 e4g4c5 g4c5e5) ?? (tapis de voicing drop :type '(1)) → (c4e4g4 e4g4c5 g4c5e5) ?? (tapis de drop-voicing :type '(2)) → (c4e4g4 e4g4c5 g4c5e5) ?? we can drop 3-note chords. (setf mat'(c4e4g4b4 e4g4b4c5 g4b4c5e5)) (tapis de drop-voicing :type '(0)) → (c4e4g4b4 e4g4b4c5 g4b4c5e5) ok (tapis de drop-voicing :type '(1)) → (e3c4g4b4 g3e4b4c5 b3g4c5e5) ok (tapis de drop-voicing :type '(2)) → (g3c4e4b4 b3e4g4c5 c4g4b4e5) ok (tapis de drop-voicing :type '(3)) → (c3g3e4b4 e3b3g4…


Copyright © 2014-2026 Opusmodus™ Ltd. All rights reserved.
Product features, specifications, system requirements and availability are subject to change without notice.
Opusmodus, the Opusmodus logo, and other Opusmodus trademarks are either registered trademarks or trademarks of Opusmodus Ltd.
All other trademarks contained herein are the property of their respective owners.

Powered by Invision Community

Important Information

Terms of Use Privacy Policy

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.