Skip 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.

Function Examples

Functions, arguments, values and results

  1. Followup on post: https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/ According to LCCOTO chords which are derived from a parent scale have a nice property as they all lean on the same lydian parent-scale- tonic, hence may feel similar in harmonic environment. This may be used for various compositional purposes. Example: A G7 -> Cmaj7 cadence is in LCCOTO basically a movement of F-lydian-parent-scale-tonic to C-lydian-parent-scale-tonic. Moving clockwise on circle of fifths with regards to parent scales tonic. G7 is a chord on mode 2 in f-lydian. Cmaj7 is chord on mode 1 in c-lydian. According to LCCOTO it should…

  2. Followup on post: https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/ Here's a first attempt (I am a LISP beginner) for a function which finds the parent scale for a list of chords. ;;; --------------------------------------------------------------------------- ;;; ;;; Find a Lydian Parent Scale for a Melody over a given chord list ;;; ;;; (Lydian Chromatic Scale Concept, George Russell) ;;; ;;; The returned list fulfills the condition that all chord pitches ;;; are included in the scales. ;;; ;;; By default only the 12 lydian scales are queried. ;;; One can supply additional scales according to Russells con…

  3. Started by david,

    Hi, Is there a complete list of chords already included in OM? I would like to write, for example, am7b5/maj7 (a c eb g#), but it doesn't work. Thank you for your help.

  4. Followup on post: https://opusmodus.com/forums/topic/3989-om-lydian-chromatic-concept-of-tonal-organization-george-russell/ I am trying to use the LCCOTO-concept here in a simple piece as a means to modulate tension release. Pitch ranges from a C lydian chromatic scale are chosen by lead instrument according to a tendency curve: LCC2.mp3 ;; -------- ;; ;; LCC2 ;; ;; -------- ;; ;; Idea of composition: ;; Define pitch C as Parent Scale Tonic, it's the center of tonal gravity following the LCCOTO of George Russell. ;; C Lydian Chromatic scale tonic is our only scale in this modal piece. ;; Tension and release is created by ;; - by modulating pitches according to their…

  5. Started by david,

    Hi, is there a function similar to gen-retrograde? In my example, I have 6 blocks. I would like to obtain the order 6 → 5 → 4 → 3 → 2 → 1, without ever reversing the inside of the blocks. In other words: replay the pitches starting from the beginning of each block 6 → 5 → 4 → 3 → 2 → 1. (setf pit '(e4 e4 e4 e4 e4 e4 e4 e4 e4 fs4 fs4 fs4 e4 e4 e4 fs4 fs4 fs4 e4 e4 e4 fs4 fs4 fs4 g4 g4 g4 e4 e4 e4 fs4 fs4 fs4 g4 g4 g4 e4 e4 e4 fs4 fs4 fs4 g4 g4 g4 a4 a4 a4 e4 e4 e4 fs4 fs4 fs4 g4 g4 g4 a4 a4 a4 e4 e4 e4 fs4 fs4 fs4 g4 g4 g4 a4 a4 a4 b4 b4 b4 e4 e4 e4 fs4 fs4 fs4 g4 g4 g4 a4 a4 a4 b4 b4 b4 e4 e4 e4 fs4 fs4 fs4 g4 g4 g4 a4 a4 a4 b4 b4 b4 c5 c5 c5 e4 e4 e4 fs4 fs4 fs4 g4 g4…

  6. Started by born,

    Does anybody have an idea, how to rewrite the loop construction below with OM functions? (setf beethoven-ode '(q e4 e4 f4 g4 g4 f4 e4 d4 c4 c4 d4 e4 q. e4 e d4 h d4)) (loop for j in (gen-transition 0 0.1 8 1) collect (quantum beethoven-ode :fraction j :seed 123)) Thanks for help. Achim

  7. Started by david,

    Hi, Could someone explain to me why the 4th chord uses a drop? (setf vl (diatonic-chord '(:c I6add6 bviio I6add6 bviio) :inv '(0 0 1 2))) I'd like to achieve this result with diatonic-chord (c4e4g4a4 d4f4gs4b4 e4g4a4c5 f4gs4b4d4 g4a4c5e5 ab4b4d5f5 a4c5e5g5 b4d5f5ab5) Thank you for your help. David

  8. Started by eboats,

    Hello, I'd like to find all permutations / orderings of pitch classes across 2 octaves without repeating pitch classes. So given c4 d4 e4 for example, I'd like permutations that would include like c4 d3 e4 and d4 e3 c5 but not include repeating pitch classes like c4 c3 for example. How would I find that? Thanks for any info!

  9. I’ve been spending a lot of time reworking my sound sets over the past year - and having acquired several new VIs (mainly VSL) during this time, I now need to find more consistent ways of mapping articulations to key switches so that results when working across different VIs are as expected. My sound sets all use omn articulations linked to key switches and cc controller changes in the format: leg (:key c0 :key c1 :key c2 cc20 65) - and so on. This is typically how I have all the VSL instruments set up to trigger in Synchron Player. This approach works well even when there may be five or six levels (dimensions in Synchron Player) of key switches. I don’t have any probl…

  10. Started by born,

    Hi all, I created the following material (preview with cmd-2) and would like to extend the longest voice to fit a complete measure (e.g. 4/4) by adding rests and adjust all the other to the same length by adding rests as well. Any ideas how to achieve this? (setf beethoven-ode '(q e4 e4 f4 g4 g4 f4 e4 d4 c4 c4 d4 e4 q. e4 e d4 h d4)) (setf trans (loop for j in (gen-transition 0 0.1 8 1) collect (quantum ode-mat :fraction j :quantize '(1 2 4 5))))Thanks for your help. Achim

  11. Started by born,

    Hello all, is there a function in Opusmodus similar to this one? Best, Achim (defun x-dx (ls) " Returns the list of the intervals between the consecutive values of a list <ls>. <ls> can also be a list of lists. Examples: (x-dx '(0 340 450 600 500 123)) => (340 110 150 -100 -377) (x-dx '((0 340 450 600 500 123) (30 200 350 500 450 200 600))) => ((340 110 150 -100 -377) (170 150 150 -50 -250 400))" (labels ((x-dx-fun (lst) (loop for i in lst for j in (cdr lst) collect (- j i)))) (if (numberp (first ls)) (x-dx-fun ls) (mapcar #'x-dx-fun ls))))

  12. Hi, Is there a function in Opusmodus which collects all consecutive same pitches into one duration? '(s c4 c4 c4 c4) => '(q c4)

  13. Started by born,

    Hello all, is there an OM version of a function similar to this? Thanks for a hint. Achim (setf pitches '(c4 d4 e4 f4 g4 a4 b4)) (let ((lp (- (length pitches) 1))) (loop for i from 0 to lp collect (loop for j from i to (min lp (+ i (rndn 0 2))) collect (nth j pitches))))

  14. Started by born,

    Hello all, please can somebody explain to me what vector-map is actually doing (mathematically) when my random numbers are mapped? For me its obvious with the sorted list, but despite of seeing some similarities between the half-sine and the mapped random numbers I don't understand completely the procedure. Thanks a lot for help. Achim ;; This is just to make the function completely symmetrical :-) (defun half-sine-complete (res amp freq) "Adds the first value of the second half of the sine to half-sine" (let ((hsine (half-sine (- res 1) amp :freq freq))) (append hsine (list (first hsine))))) ;; resolution of half-sine-complete (24) = number of pitches (list-plot …

  15. Started by AndreOktave,

    Dear all, I would like to program an idea from Tom Johnson's “Other Harmony” in Opusmodus, Adjacent Intervals: All chords have d4 as their lowest note and c5 as their highest note. The four intervals between these two notes are 4 3 2 1 (semitones), and these are permuted to create these 24 chords: Is there a possibility in Opusmodus? My programming skills are very limited. How is it possible to start all number combinations (the intervals) from, for example, d4? (setf it1 (permute '(4 3 2 1))) ;; How to get this programmed? (setf p1 (interval-map 'd4 (find-bar '( 1) it1 )) p2 (interval-map 'd4 (find-bar '( 2) it1 )) p3 (interval-map 'd4 (find-bar '( 3) i…

  16. Started by born,

    Hello all, is there a function which reduces the ambitus of intervals in a given row of pitches? Thanks for a hint. Achim

  17. Here’s a small function I needed because I’m working with "binary counting patterns". All patterns must always have the same length (a fixed bit length determined by the largest value). (defun dec-to-bin-rhythm (ilist) (let ((span (find-max (mapcar 'length (decimal-to-binary ilist))))) (loop for i in (binary-rhythm span ilist 1 :type 1) collect (loop for x in i when (< x 0) append (gen-repeat (abs x) 0) else collect x)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; to ensure the pattern is always the same…

  18. Fixed intervals: each generation extracts a predefined interval-sequence. Within the simulation loop—which runs and visualizes multiple generations—users can choose whether to display intervals or absolute pitches. With every generation (or evaluation), the initial binary sequence is modified. This dynamic updating makes the specific behavior of each rule more apparent, allowing for clearer comparisons between different cellular automaton rules. (progn ;; set rule number ;(setf rule 12) (setf rule (random 257)) ;; set n simulations (setf sims 5) (loop repeat sims do (progn (setf intervals (pitch-to-interval (rnd-air :group :symmetric :…

  19. Dear all, I would like to make a function for the following purpose: I have a list of 4 lists. I would like to start from any of the numbers in the first list and choose the corresponding next or after next (could be random) higher numbers in the subsequent lists. Here an example: ((2 8 9 14 20 21 26) (1 2 3 7 13 14 19 25 26) (0 6 7 12 18 19 24) (0 5 11 12 17 23 24)) or ((2 8 9 14 20 21 26) (1 2 3 7 13 14 19 25 26) (0 6 7 12 18 19 24) (0 5 11 12 17 23 24)) or ((2 8 9 14 20 21 26) (1 2 3 7 13 14 19 25 26) (0 6 7 12 18 19 24) (0 5 11 12 17 23 24)) Has anyone an idea how to implement this? Thanks for help. Achim

  20. Started by AM,

    The following function generates symmetrical structures based on sequences of tones, which can evolve over multiple generations, resulting in nested symmetries. Here are a few examples mapped to pitches, integers, and rhythms. (defun gen-symmetrical-structure (&key row gen) (let* ((seq1 (filter-repeat 1 (loop repeat gen for i in (rnd-sample '(3 5 7 11) :norep t) append (progn (setf r1 (filter-first 11 row)) (setf r2 (filter-last 11 row)) (setf n i) …

  21. Started by AM,

    With the following functions, you can run a background process (e.g., a loop function that constantly reloads data, for example from a text file) and do other things in parallel, such as modifying functions, etc. This is helpful when working with LISP/Opusmodus to process data in real time. I’ve tested this for a few days now, and it seems to run well and stable — at least as stable as the background process functions are free of bugs. Starting the process: Give the process a name and "add" your function (Here’s an example I made) -> process name “mididateien-generieren”, and my function within it is called “gen_1.midi” (mp:process-run-function "mididateien-generieren…

    • 0 replies
    • 420 views
  22. Started by RST,

    Greetings: This function appears in the documentation. However, it does not appear in OM to be a compiled function. Has this been removed? With thanks.

  23. Dear Team, I noticed that the omn-to-time-signature, when used with length-only material is not returning the same rhythms. The rhythms are missing the ties when used with lengths only. With pitch + length materials looks to be ok. I used to think that this function would return the same rhythms, but just adjusted to a new sequence of time-signatures. Best, Julio (setf rh-1 '(-dd h c7 p eb6 mp p - c7 q e6 - h_e g6 e mf bb5 mp -h.. q bb6 p -h. q. d6 e c4 -h.. q bb3 mf e g6 mp h_e e6 -h e g5 h a6 -e = h bb4 e6 p q bb6 mp e6 e g3 g6 p q. g3 e bb3 bb6 mp q g6 pp e c7 mp eb4 p)) (omn-to-time-signature rh-1 '(2 4)) res…

  24. Hi all, I tried to answer the question in the title with Opusmodus GPT (see attached file). (setf lenmap1 '(q q q q q q q q q q q q q q q q)) (setf vec (half-sine 50 1)) (setf vec-lenmap1 (vector-map lenmap1 vec)) Can anybody explain, why I get only 50 quarters instead of 16 respectively how vector-map really works mathematically? Thanks and greetings, Achim vector-halfsine.md

  25. Started by eboats,

    I've imported a midi file with a simple/sparse melody and am wondering what my function options are for adding density/embellishment that replaces some of the rests? If I use the density or pitch-ornament/pitch-figurate functions, they add material around each note but they preserve the rests. Is there another option that would replace some of the rests with generated material? Or would the right approach be to generate material separately and insert it into the positions where the rests are? The imported omn looks like : (e cs6 fff -he e c6 mf -q. e fs5 fff -q. e d6 mf - -q. e g6 -he e ds6 -h. - e fs5 -q e d6 -q. e as4 -q -h -e fs6)


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

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.