Jump to content
  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type

Forums

  • 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
    • SuperCollider
  • Question & Answer
    • Suggestions & Ideas
    • Zoom into Opusmodus
  • Sharing
    • Made In Opusmodus
    • User Extensions Source Code
  • Opusmodus Network
    • Meet, Compose, Collaborate
    • Strategies and Methods to Control Complexity
  • Opusmodus Workshops & Schools
    • Composer Workshop

Calendars

  • Community Calendar

Product Groups

  • Opusmodus

Categories

  • The First Steps in Opusmodus
  • Tutorials
  • How-to in 100 sec
  • Made in Opusmodus
  • How-To
  • Zoom into Opusmodus
  • SuperCollider
  • Workflow
  • Live Coding
  • Presentation
  • Analysis
  • Composer Workshop

Find results in

Find results that contain...

Date Created

  • Start

    End

Last Updated

  • Start

    End


Filter by number of...

Found 1 result

  1. Parsimonious Voice Leading (again): attempts to provide an algorithm In a previous post I deleted, I was trying to find a good way to ensure the minimal parsimonious Voice-Leading (VL) between a sequence of chords. In this post I will try to explain my second attempt. Let's take a look at a sequence of chords, spreaded out almost in a random way, with no VL (setf chordstovl2 '(b3eb5g3 cs6e7gs3 b4f5g6 f7e5c2 d4f7e4 gs7e2a8) Let's specify and evaluate a variable for the number of voices used: (setf voices 3) Let's try to think the best way to connect this pitches with minimal movement. I will apply the following expression to ensure a better and less ambiguous result when applying the CHORD-CLOSEST-PATH function. Evaluate voices before (setf voices 3) Then (setf chordized (mclist (chordize-list (gen-divide voices (setf vlfinal (integer-to-pitch (modus (interval-to-pitch (replace-map '((-11 1) (-10 2) (-9 3) (-8 4) (-7 5) (7 -5) (8 -4) (9 -3)(10 -2)(11 -1)) (integer-to-interval (modus (pitch-to-midi (setf chordmelo (pitch-melodize chordstovl2)))))) :start (car chordmelo))))))))) Please note the use of the replace-map function ensuring that no movement will be greater than a tritone away. This means that a movement like "C to G" (7 semitones) will be convertet in a G to C (5 semitones). This ensure a modulo 12 (octave constraint) reduction of all the material and also a constraint in terms of the size of the movements that will not exceed 6 semitones. Finally, I will apply the CHORD-CLOSEST-PATH function (chord-closest-path (car chordized) (chordize-list (gen-divide voices vlfinal))) Hope it help some VL efforts. Best, Julio Herrlein

Copyright © 2014-2025 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