-
Posts
71 -
Joined
-
Last visited
Content Type
Forums
Events
Store
Video Gallery
Everything posted by Wim Dijkgraaf
-
Converting MIDI or MusicXML to OMN
Wim Dijkgraaf replied to TomTolleson's topic in Support & Troubleshooting
I'll try to do a first proof of concept Will start working on it this week to get a first impression of how complex this might be. Will keep you informed. Feel free to follow any progress: GitHub - willemdijkgraaf/MidiXmlToOMN: Converts Midi XML to OMN (OpusModus Notation) GITHUB.COM Converts Midi XML to OMN (OpusModus Notation). Contribute to willemdijkgraaf/MidiXmlToOMN development by creating an account on GitHub. -
Converting MIDI or MusicXML to OMN
Wim Dijkgraaf replied to TomTolleson's topic in Support & Troubleshooting
Is anyone working on this? Is it planned in the product roadmap? If not, I would be able to give it a try. But that will be .NET based tool to convert MusicXML to OMN. Would like to know if it's worth the effort (of value to the community, will not be a feature of OpusModus soon, ...) . -
Converting MIDI or MusicXML to OMN
Wim Dijkgraaf replied to TomTolleson's topic in Support & Troubleshooting
Hello all, Any progress on converting MusicXML to OMN? -
See this link: Getting Clozure CL CCL.CLOZURE.COM Looks like a 32 bit ARM version is available. : "All versions include both 32- and 64-bit binaries (except for ARM, which is currently 32-bit only)." Good news?
-
Stephane, I've been experimenting and analysing this marvellous prelude. I'm very curious if you could tell a bit more about the composing decisions behind the following material: how did you choose the transpositions: ;; +6 -6 +4 +4 -9 +9 -6 -6 +5 +4 -6 +1 -1 -1 0 5 0 +5 -2 (setf trsp2 '(-2 4 -2 2 8 -1 8 3 -3 2 6 0 1 0 -1 -1 4 4 9 7)) Where do these wonderful voicings of Dim chords with an added major fourth come from? Did you use an algorithm to generate them? Hand written? What's the idea behind the transpositions? (setf closest-hpath2 '((g2cs3g3c4bb4e4) (g2cs3fs3cs4bb4e4fs5) (g2cs3g3c4bb4e4) (gs2d3f3b3b4e4e5) (gs2d3f3b3bb4f4) (gs2cs3gs3b3cs5f4d3) (gs2d3f3b3bb4f4) (fs2c3a3c4f4eb4f5) (fs2c3fs3b3a4eb4) (gs2d3f3b3b4e4e5) (gs2c3fs3eb4a4eb4) (fs2d3a3c4a4eb4d5) (g2cs3bb3bb3eb5e4) (fs2c3a3d4a4eb4d5) (gs2cs3gs3b3d5f4) (gs2cs3gs3b3cs5f4d3) (g2cs3fs3cs4bb4e4) (g2cs3fs3cs4bb4e4fs5) (fs2c3fs3b3a4eb4) (g2cs3a3bb3a4e4e4)))
-
Hi AM, A couple of months ago I followed some online courses on http://www.kadenze.com . Especially the generative art courses as well as The Nature Of Code course. So I started wondering which of the techniques form those courses are supported by standard Opusmodus functions. That brought me to the idea to make a list of those topics and eventually also have a couple of links to online and free material with inspiring explanations and background info. Kind regards, Wim
-
Hi AM, What I mean with "high level out-of-the-box algorithms" in this context is something along the line of: - high level: functions to apply specific compositional techniques (so not included are functions for basic type conversion, looping through lists etc.) - out-of-the-box: without the need for the composer (Opusmodus user) to do additional low level programming in order for the compositional technique to be utilized Hope this helps, Wim added 3 minutes later Thanks a lot Torsten!!!! Kind regards, Wim Dijkgraaf
-
Do we know of additional algorithms created by users which they have made publicly available. For instance: Tonnetz: https://github.com/willemdijkgraaf/ClTonnetz
-
Again as always, I learned a lot from this. Thank you so much for sharing. Big hug, Wim
-
I'm interested in having a complete list of the more high-level algorithms that Opusmodus supports out-of-the-box. This is what I found going through the integrated help documentation: Lindmayer systems Cellular automata Working with pitch class sets Euclidean Algorithm Tonality mapping Mandelbrot sets Rubin (Rubin functions) Twelve-tone row (including All-interval twelve-tone row and Twelve Tone Forms) Klangreihen technique Trobes (composer Joseph Hauer ) The Time Point System (Babbit) Infinity Series (Nørgård) Messiaen Permutation Stravinsky Rotation Brownian motion Noise generation Gaussian noise Pink noise White noise Markov chain Random generators (including random walk) Schillinger Interference (Schillinger System of Music Composition) Spectral Data Wave forms (sine, sawtooth, square, triangle) Any help to get this list complete is very much appreciated :-) Big hug, Wim Dijkgraaf
-
In the following line of code, what is the difference between vector and float? (vector-to-velocity 0.1 0.9 (pitch-to-velocity 'pppp 'ffff '(c1 d1 e1 f1 g1 a1 b1 c2 d2 e2 f2) :type :float)) The function name is 'vector-to-velocity' but in pitch-to-velocity the type is set to :float (instead of :vector). Looks like they are synonyms. Thanks in advance, Wim Dijkgraaf added 2 minutes later I guess this is the answer: Vectors are one-dimensional arrays, therefore a subtype of array. Wim :-) added 7 minutes later Code above being equal to: (pitch-to-velocity 'pppp 'ffff '(c1 d1 e1 f1 g1 a1 b1 c2 d2 e2 f2)) Got it :-)
-
Where can I find the full specification of OMN? I've been searching and found several articles and posts but would be great to have one document. I'm especially interested in how repetitions (what exactly is included in the repetition) and tuplets behave. With tuplets, how does one write something like 6e:2q -> six eigth notes in the time of 2 quarter notes Big hug, Wim
-
I was thinking of Live Coding but snippets could be a use case too!
-
Is there a way to send MIDI directly, without the need to declare a score?
-
VSL converter -> Sibelius Sound Set to Opusmodus Sound Set
Wim Dijkgraaf replied to Wim Dijkgraaf's topic in Library Setup
Hi Torsten, I've adjusted the source code and checked if it still works .. it does. Just a short explanation of what I did to write the converter: - used Microsoft XSD tool (included as xsd.exe) to auto generate a C# class from an XML file, with one of the Sibelius soundset files as input. - I don't know to what degree that format is standardized. Might be that you encounter issues with EastWest files ... or maybe it just works. If both VSL and EastWest use the same XML elements, it should work. - Wrote some classes with the logic to create Opusmodus Soundsets - Added a console project that does the reading of Sibelius soundsets, calls the converter and serializes the result back to disc as an opusmodus soundset file. The output from the converter is not 100% correct; meaning that you'll have to do some manual adjustments in Opusmodus to make sure that the soundset file is 100% Common Lisp 'compatible'. This due to some special characters that the converter doesn't handle correctly (yet) and which can't be used in Common Lisp symbols. There is also some logic that maps VSL names to standard Opusmodus names that you'll have to adjust in order to be correct for the EastWest library. I included the SibeliusSoundSet files for your convenience so you can make sure the solution works on your machine. It should be hassle free under Microsoft Visual Studio Community edition and above. If I can be of some help, please let me know. Big hug, Wim Dijkgraaf p.s. Wrote the code under time pressure and wanted to make sure first that the concept is viable. Should refactor the code :-) Even better ... re-write this code in Common Lisp running in Opusmodus ... :-) -
VSL converter -> Sibelius Sound Set to Opusmodus Sound Set
Wim Dijkgraaf replied to Wim Dijkgraaf's topic in Library Setup
You'll find the source code at: https://github.com/willemdijkgraaf/SibeliusToOpusmodusSoundset I transfered it very quickly and haven't been able to check if it works. Will do that later today. -
VSL converter -> Sibelius Sound Set to Opusmodus Sound Set
Wim Dijkgraaf replied to Wim Dijkgraaf's topic in Library Setup
Ofcourse, first thing tomorrow morning. -
I'm experimenting witn namespaces in Common Lisp. When I create a namespace like below, the symbols from the opusmodus namespace seems to be unknown: (defpackage :com.wimdijkgraaf.tonnetz (:nicknames "TONNETZ" "TNNZ") (:use "COMMON-LISP" "OPUSMODUS" "TESTFRAMEWORK") (:export "APPLY-TONNETZ")) (in-package :tonnetz) ;;; setup hash table for quick lookup (defparameter *triad-interval-to-degrees* (make-hash-table :test 'equal)) ;; major triads (setf (gethash '(4 3) *triad-interval-to-degrees*) '(1 3 5)) (setf (gethash '(7 -3) *triad-interval-to-degrees*) '(1 3 5)) (setf (gethash '(8 -5) *triad-interval-to-degrees*) '(3 1 5)) (setf (gethash '(5 4) *triad-interval-to-degrees*) '(5 1 3)) (setf (gethash '(3 5) *triad-interval-to-degrees*) '(3 5 1)) (setf (gethash '(9 -4) *triad-interval-to-degrees*) '(5 3 1)) ;; minor triads (setf (gethash '(3 4) *triad-interval-to-degrees*) '(1 3 5)) (setf (gethash '(7 -4) *triad-interval-to-degrees*) '(1 3 5)) (setf (gethash '(9 -5) *triad-interval-to-degrees*) '(3 1 5)) (setf (gethash '(5 3) *triad-interval-to-degrees*) '(5 1 3)) (setf (gethash '(4 5) *triad-interval-to-degrees*) '(3 5 1)) (setf (gethash '(8 -3) *triad-interval-to-degrees*) '(5 3 1)) (defun get-root-intervals (triad) (midi-to-interval (sort-asc (pitch-to-midi (ambitus-octaves 'c4 1 triad))))) ;;; tests (deftest test-get-root-intervals () (check (equal (get-root-intervals '(g1 c9 e6)) '(4 3)) (equal (get-root-intervals '(f3 d4 a4)) '(3 4)))) (test-get-root-intervals) What happens is that the symbol ambitus-octaves is no longer found. What do I do wrong?
-
Neo-Riemannian approach (Tonnetz, etc.)
Wim Dijkgraaf replied to Wim Dijkgraaf's topic in Function Examples
A little extra feature to play with: (apply-tonnetz '(c4 e4 g4) '(l r n s p)) => ((c4 e4 g4) (b3 e4 g4) (b3 d4 g4) (c4 eb4 g4) (b3 eb4 fs4) (b3 d4 fs4)) Ability to not include a move in the output (by putting that move between parentheses): (apply-tonnetz '(c4 e4 g4) '(l r n (s) p)) => ((c4 e4 g4) (b3 e4 g4) (b3 d4 g4) (c4 eb4 g4) (b3 d4 fs4)) -
Hi AM, Yes, I can see that the clear division of OM as ICE (Integrated Composition Environment) and for MIDI playback and SCORE reading/layout/printing but keeping the rest of the functions as independent as possible could be a nice approach for users who know to do Lisp programming (like you and hopefully me too in short term, and many more on this forum). The Opusmodus function library is a fantastic resource too, but if such a library would be available in the public domain / open source I would prefer to use that instead of a product specific library. Not a big deal though ... just some thoughts while I'm learning a new way to compose. Big hug
-
Thanks Torsten for this helpful and thorough reply. Concerning testing, I took the most practical approach and started using the macros from the Practical Common Lisp book (Peter Seibel); a testing framework based on 4 macros. For now that does the job. The "lock in" is still at the back of my mind. My personal opinion is that Opusmodus should focus on delivering a perfect IDE for composers. OMN and the Opusmodus IDE should be helpful to be more productive, have excellent score facilities, do fantastic MIDI playback, have an outstanding Live Coding environment etc. but the main musical functions should be available in a Common Lisp open source project, to my personal opinion. This way, the compositions we create will always "work" independent of the composition environment and the community around the musical functions we use would be even larger and potentially even more interesting. But that's another discussion ... Thanks for the additional book list too. Will be an interesting journey :-) Big hug, Wim Dijkgraaf
-
Neo-Riemannian approach (Tonnetz, etc.)
Wim Dijkgraaf replied to Wim Dijkgraaf's topic in Function Examples
Hi Torsten, My main goal to learn Common Lisp, Opusmodus and have something like the Tonnetz to do musical experiments with. For that I'm happy with correct absolute pitches and less concerned with enharmonic correctness. Constraint programming is completely new to me. As soon as I've a bit of time I'll definitely have a look at it as well as to your paper. I've checked the link and browsed a bit through your projects. Wow, really impressive stuff! Great to get to know you a little bit through this forum. Best, Wim -
Neo-Riemannian approach (Tonnetz, etc.)
Wim Dijkgraaf replied to Wim Dijkgraaf's topic in Function Examples
Ah, and who knows ... something like this: http://www.mtosmt.org/issues/mto.10.16.3/mto.10.16.3.waters_williams.html -
Neo-Riemannian approach (Tonnetz, etc.)
Wim Dijkgraaf replied to Wim Dijkgraaf's topic in Function Examples
Hi Torsten, Yes, will be continued. I needed a "topic" to work on to improve my Lisp skills. This is something not too big to work on. My first aim is to implement the diagram you find on this wiki: https://en.wikipedia.org/wiki/Tonnetz . Still have to do some refactoring. Maybe trying a more OO approach too. Next step is to fully support this circle: https://commons.wikimedia.org/wiki/File:Circle_of_fifths,_clock_and_tonnetz.svg Besides this, I'm studying Dimitri's book (as you and Stephane mentioned). Too early to have plans to implement that but it looks interesting enough to support his approach(es). And of course the idea is to experiment with the Tonnetz and using it in a more free way by super-imposing triads, transposing voices, adding ornamentations etc. Any additional ideas are very welcome of course.