Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by torstenanders

  1. > can we ... a file with our customized methods with your function? You can put this function fn-unfold wherever you want, as long as that file is loaded at startup, and likewise also any other function including functions like tr above > we can call the specific sets in the unfold function without having to evaluate the complete procedure of each method ? Questions concerning the original unfold function are better answered by Janusz, I guess... Good night (its 23:00 over here...), Torsten
  2. I like how the function unfold allows for rather concisely expressed transformations. I also like that with this function, methods can easily by commented out or added without changing the nesting structure of the overall Lisp program. However, what I do not like is that the unfold methods don't support any further arguments, and as a result the required preliminary work with def-unfold-set is rather cumbersome. So, I rolled by own version of unfold that addresses this shortcoming. This new function works as follows: you can use the names of arbitrary Opusmodus functions, as long
  3. > I don't think that modes and scales are archaic systems I also agree that while the distinction between flats and sharps is old it is not outdated. In my view, (eb4 bb4) is a fifth, while e.g. (ds4 bb4) is not, regardless of the tuning system. > the system translate integers 0 1 2 3 4 5 6 7 8 9 10 11 = c, cs d eb, e, f, fs, g gs, a, bb b. That is one way to map tone names to integers. There exist other ways that preserve the enharmonic notation and still allow for the pitch class arithmetic that those 12 pitch class integers allow for. One approach is to transl
  4. Thanks a lot, this really helps!
  5. I can confirm that audition and notation of snippets unfortunately does not work for me either with the builtin Slime in Opusmodus. E.g., I am trying to place the cursor behind an Opusmodus function call an execute the relevant short cut (e.g., C-c o a), but nothing happens. C-c o ? seems to work, though. Anyway, my own Slime interface works, at least for me...
  6. I cannot answer for the builtin Opusmodus Slime functionality, but I developed something similar some time ago on my own, which works in Aquamacs for me. Try copying the Emacs Lisp code below into your Emacs initialisation file (e.g., ~/.emacs), start Aquamacs again and open a Lisp file. The code below adds to Emacs buffers in Lisp mode an Opusmodus menu with some standard commands like for previewing a snippet, stopping the playback etc. together with shortcuts shown in the menu. It is all a bit hacky, but works for me and perhaps also for others It should also be
  7. Brilliant, this is exactly the missing function I described And such a lightening-fast response too! Thank you very much indeed! Torsten
  8. Hi, Is there perhaps a way to adjust the overall duration of a nested (barred) OMN sequence? In particular, is there a function to cut notes etc. at the beginning/end of a sequence, so that the result has a specified overall duration? The first example just demonstrates what I would like to have. (setf phrase '((1/2 c4 1/4 d4) (1/4 e4 1/2 c4))) ;; Edit phrase such that the result is exactly 5/4 long by preserving the nesting structure (function-I-am-looking-for 5/4 phrase) ; => ((h c4 q d4) (q e4 c4)) ; cut material at end ; => ((q c4 q d4) (q e4 h c4)) ; c
  9. If your goal is for you as a teacher to create documents for your students to read containing Common Lisp and Opusmodus code, and where you want to evaluate the code directly from within that document, then Org mode with embedded Common Lisp + Slime is your friend. This is a very powerful combination, that can automatically create nice slides (with the LaTeX beamer interface), embed music notation (Lilypond) etc. I used this combination for years for teaching, had then all sessions of a course in a single document for easily moving content around etc. Nevertheless, you likely do no
  10. Are these sessions somehow recorded for a record perhaps?
  11. The best document combining both worlds is likely the following. This was an internal textbook of the algorithmic composition teacher Paul Berg at the Sonology course at the Royal Conservatory of The Hague (the author of the composition system AC Toolbox, https://www.actoolbox.net), but it is unprinted, just a copy of a text processor document for internal use, and difficult to obtain (I only have a hard copy I got from a friend). Berg, Paul (n.d.) Elements of Design. An introduction to Programming with Common Lisp.
  12. http://www.gigamonkeys.com/book/ Common Lisp Books | Common Lisp LISP-LANG.ORG Books about Common Lisp For a more music-related introduction to Common Lisp you might want to look at the following books. These books teach algorithmic composition with Common Lisp. The above books introducing only Common Lisp are far more comprehensive on that matter, but you might prefer learning some foundations first within a musical context. Morgan, N. & Legard, P. (2015) Parametric Composition: Computer-Assisted Strategies for H
  13. These functions might try to solve similar problems, but internally they are very different. The build-in Opusmodus functions are internally deterministic, as far as I can tell (cannot see the code). By contrast, the function that calls the constraint solver cluster engine performs a search internally. Therefore, it can solve combinatorial problems better. You can impose pretty arbitrary additional constraints (restrictions) on the result such as counterpoint rules, e.g., how to resolve non-harmonic tones (e.g., you can allow for things like passing tones or auxiliary tones by di
  14. I love the focus on generating polyphonic results and the control over the resulting texture!! Great to see that the transformations (methods) used by the new counterpoint function are freely user-definable. That makes this very flexible. Also nice to see that it is accompanied by several convenient auxiliary functions. By contrast, while the polyphony function quasi enforces harmonic rules on the result (enforces certain harmonic intervals between voices), these harmonic rules are seemingly not user definable. The music constraint solver cluster-engine, which can be loaded into Op
  15. In case you have abstracts or even papers, that might be relevant to share at this forum, even if they are in Italian (though in case English would be available, that would be even better )
  16. Note that MOZ’Lib seemingly supports arbitrary libraries from the PatchWork / Open Music / PWGL family. Perhaps it is possible to see how they do that to add such functionality to Opusmodus as well? Best, Torsten PS: I was working in a similar direction some time ago, first by porting some library (OM-Tristan) to load directly into a plain Lisp compiler (by replacing all OpusModus dependencies) and that works, but that is a lot of work for each library. I then started to instead port the whole of OpenMusic to ClozureCL, but leaving out all GUI dependencies, but go
  17. Its a great development, but note that it will not work with Opusmodus for multiple reasons, one being that MOZ’Lib depends on SBCL [1], which is called from the shell, and Opusmodus depends on ClozureCL, and I don't think there are plans to make Opusmodus callable from a shell. [1]
  18. > Achim Bornhoeft and I spent some time talking and playing with the Neo-Riemann theory with an outcome of a diagram and a function Thanks for sharing. Do I understand correctly that these transformations always assume triads? Of course, one can always extend the triads afterwards... Best, Torsten
  19. Hi Julio, Could you perhaps share your final setup files for the old VSL instrument library with the community? Thanks! Best, Torsten
  20. > :path nil will give you the shortest path Nice.
  21. Nice! However, what happened to what Bruckner (according to Schönberg) called the "law of the shortest path" (Gesetz des nächsten Weges)? Of course, for expressiveness one should not always choose a "shortest path" voice leading, that tends to become boring. But here, there are predominantly skips. Steps should be more likely, at least that would be more common (e.g., more easy to perform and also to follow by the audience). Is there perhaps a way to control the likelihood of steps vs. skips? Thanks! Best, Torsten
  22. The code is impressively concise for this dense network of relationships
  23. Thanks a lot for working on this. Just to confirm: is the pitch resolution of the actual pitch parameter limited to expressing quarter and eighth tones and for other subdivisions articulations are used? The main/only advantage of 24-ET (equal temperament) and 48-ET is that they contain all 12 tones from 12-ET in the same "grey" approximation of just intervals (i.e. intervals that can relatively easily tuned by ear -- much more easily than anyhow tempered intervals) than 12-ET. They only add 11-limit intervals like 11/8 rather well (nicely used for that, e.g., by Wysch
  24. Just for the record, when I start Opusmodus without any of my extensions, I run into the same problem. ? (length-divide '(1000 2) '(q ab3 num1+leg c4 leg e ab3 leg g3 leg ab3 num1+leg c4 leg)) length-divide, set: nil ignore: nil section: nil exclude: nil seed: 35424 > Error: The value ab3 is not of the expected type sequence. > While executing: ccl::sequence-type, in process Listener-1(7). > Type cmd-. to abort, cmd-\ for a list of available restarts. > Type :? for other options. 1 >
  • Create New...

Important Information

Terms of Use Privacy Policy