Jump to content

Avner Dorman

Members
  • Posts

    45
  • Joined

  • Last visited

1 Follower

Contact Methods

Profile Information

  • Gender
    Male
  • Location
    USA

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. My Macbook Pro is having some issues and I need to send it into Apple for a repair. There is a chance that they will need to wipe out the hard-drive. Should I deactivate opusmodus on this machine? How do I do that? Thanks!
  2. This seems to work - let me know if there's a more elegant way to do this (defun pattern-maker (chords durations repetitions) (let ((longest (cond ((> (length chords) (and (length durations) (length repetitions))) chords) ((> (length durations) (and (length chords) (length repetitions))) durations) ((> (length repetitions) (and (length chords) (length durations))) repetitions)) )) (loop :for i in (span longest chords) :for j in (span longest durations) :for k in (span longest repetitions) :collect (make-omn :length (gen-repeat k j) :pitch (gen-repeat k i)))))
  3. Yes - that last condition is exactly what I was looking for! My lisp chops are not that great.... How would you incorporate this condition into the main function 'pattern-maker'? Many thanks!
  4. Ok - So as a simple example - (setf chords '(c4e4g4 e4g4c5)) (setf durations '(q e q e s)) (setf repetitions '(7 1 6 2 5 3 4 4)) (length (span chords repetitions)) (defun pattern-maker (chords durations repetitions) (loop :for i in chords :for j in durations :for k in repetitions :collect (make-omn :length (gen-repeat k j) :pitch (gen-repeat k i)))) Would give the following I got this by running: (pattern-maker (span repetitions chords) (span repetitions durations) repetitions) Which is fine - but if "repetitions" was shorter than "chords" I would need to span everything to chords. So I guess I need a condition and define a variable that chooses the largest list of the three and span onto that list. I don't know how to do that Many thanks!
  5. Great! Thank you!! So can you help me with this function? I basically want all three elements to be spanned into the longest of the three. How would you suggest I do this? (defun pattern-maker (chords durations repetitions) (loop :for i in chords :for j in durations :for k in repetitions :collect (make-omn :length (gen-repeat k j) :pitch (gen-repeat k i)))) Thanks!
  6. Is there a simple way to repeat a list until it is the length of another list? Basically do the same thing that make-omn does but for other parameters. For example if I have a list of numbers '(4 3 2) and pitches '(a4 b4 c4 d4 e4), I would like to repeat the numbers until there are exactly the same number of elements in each list. Thanks!
  7. How can I do that? The check for updates doesn't work....
  8. I just updated my OS to Monterey. I've been using opusmodus version 2.1.26209 (so not 2.2) and now it crashes when I try to open any file or create a new workspace. It also reports an error when I try to Check for Updates. Do I need to purchase v2.2? Is there another problem? How do I solve this? Many thanks!
  9. Thank you so much Torsten, I will definitely look at orgmode! All the best, Avner
  10. Dear Julio, I am very happy I could be of help! All the best, Avner
  11. Following up on this - is there a way to have Opusmodus work within a Jupyter notebook? I think it would be very useful in educational settings. I know there are lisp implementations that work in Jupyter: fredokun/cl-jupyter GITHUB.COM An enhanced interactive Shell for Common Lisp (based on the Jupyter protocol) - fredokun/cl-jupyter - but is there a way to include Opusmodus as well? At least the functions and notation?
  12. another p.s. - Ernst Levy's book is available on google play A Theory of Harmony BOOKS.GOOGLE.DE In this introduction to natural-base music theory, Ernst Levy presents the essentials of a comprehensive, consistent theory of harmony developed from tone structure. A Theory of Harmony is a highly original explanation of the harmonic language of the last few centuries, showing the way toward an understanding of diverse styles of music. Basic harmony texts exist, but none supply help to students seeking threads of logic in the... My favorite book on the subject is David Lewin's: Generalized Musical Intervals and Transformations. New Haven, CT, and London: Yale University Press, 1987. Reprinted, Oxford and New York: Oxford University Press, 2007.
  13. Hi Julio, The so called "negative harmony" is the same as "inversion and symmetrical axes" in set theory (which is the same as saying Neo-Riemannian theory - all transformations are In operations). An inversion of a pitch class is given by subtracting the pc from index of the inversion operation, n. In(pc1, pc2,pc3) = (n-pc1, n-pc2, n-pc3) If you want to think of it as an inversion around an axis, the axis would be n/2 (or 12-n/2 on the other side of the clock-face). So the function could be written like this: (defun axis-inversion (axis pitches) (integer-to-pitch (loop for i in pitches collect (- (* 2 axis) (pitch-to-integer i))))) And if you want to use Eb-E as the axis it would be 3.5 (e is pc3 and eb is pc4) (axis-inversion 3.5 '(c4 e4 g4)) ;;; results in (g4 eb4 c4) This doesn't account for octaves etc. - for that you'll need to use midi. Now the axis is given in midi number - so 63.5 would be Eb4: (defun midi-inversion (axis pitches) (midi-to-pitch (loop for i in pitches collect (- (* 2 axis) (pitch-to-midi i))))) (midi-inversion 63.5 '(c4 e4 g4)) ;;; you get (g4 eb4 c4) (midi-inversion 60 '(c4 e4 g4)) ;;; you get (g4 eb4 c4) (midi-inversion 53.5 '(c4 e4 g4)) ;;; you get (b2 g2 e2) If I missed any cases I am happy to check them out All the best, Avner p.s. - (midi-inversion 63.5 '(a4 g4 fs4 a4 d5 a4 fs5 d5 a5 fs5 e5 d5)) ;;; results in (bb3 c4 cs4 bb3 f3 bb3 cs3 f3 bb2 cs3 eb3 f3) ;;; as you expected (I think? I only checked the first few notes :-)
  14. Thank you! Sorry you're having computer problems - and thank you for looking into it. Avner
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy