Jump to content

Avner Dorman

  • Content Count

  • Joined

  • Last visited

About Avner Dorman

  • Rank


  • core_pfield_3
  • core_pfield_10


  • Gender

Recent Profile Visitors

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

  1. Avner Dorman

    LISP Defun Question

    Thanks! Now it's working for me too....😊
  2. Avner Dorman

    LISP Defun Question

    Hi Janusz, Any idea why this stopped working? I've changed :map shift to :map step but it's still not working... thanks! Avner
  3. Avner Dorman

    Avner Dorman

  4. Avner Dorman

    Opposite of chordize?

    Hi Torsten, Would these work? (pitch-melodize '(c4e4g4)) => (c4 e4 g4) And (pitch-to-midi '(c4e4g4)) =>((60 64 67)) or (flatten (pitch-to-midi '(c4e4g4))) => (60 64 67) All the best, Avner
  5. Avner Dorman

    Add pitch classes as text above notes?

    Thanks so much!!! This is great! I wrote the following functions that automatically add the pitch class as text above each note. This is really useful for me when teaching set theory. I am sharing them in case anyone else needs something like this :-) Also, I'd be curious to know how the text font might be modified. ;;;convert pitch-classes to nums (defun pc-to-num (pitches) (substitute-map '(num0 num1 num2 num3 num4 num5 num6 num7 num8 num9 num10 num11) '(0 1 2 3 4 5 6 7 8 9 10 11) (modus (pitch-to-integer pitches)))) ;;;; interweave two lists (defun interweave (list1 list2) (if (null list1) list2 (cons (car list1) (interweave list2 (cdr list1))))) ;;;; add pcs as a num to each pitch (defun show-pcs (pitches) (interweave pitches (pc-to-num pitches))) ;;;; test (setf pitches '(c4 bb4 f4 eb4 fs4 d4 g4 b4 e4 a4 cs4 gs4)) (show-pcs pitches) Pitches with PCS.pdf Pitches.pdf
  6. Is there an easy way to add the pitch class as text above each note of the score? For example, add a '0' above any 'c' in a score?
  7. Avner Dorman

    figured-bass function

    You're very welcome :-) music21 has so much to offer - I just wish there was an easy way to convert its tools and objects into opusmodus functions. I really enjoy the workflow of opusmodus and using lisp. Perhaps when opusmodus can read xml files directly into omn it would be easy to combine the two. All the best, Avner
  8. Avner Dorman

    figured-bass function

    Thanks so much! :-) Perhaps it's too 'old school' for opusmodus - but I think it would be great to have something like this at some point (especially for teaching purposes) - http://web.mit.edu/music21/doc/moduleReference/moduleFiguredBassExamples.html Thanks again for the help with this.
  9. Avner Dorman

    figured-bass function

    Thanks Stephane, I must say that I don't quite understand gen-chord3 - every time I evaluate the expression (gen-chord3 '(c4 eb4 g4) '((6 5) (5 3) (4 2))) I get a different result. Also, what I was hoping to do was to convert traditional figured bass (i.e., use steps in the key) into chords. Perhaps there isn't an easy way to accomplish this in opusmodus right now. Either way, would you mind explaining why gen-chord3 evaluates to different pitches every time? Thanks! Avner
  10. Perhaps it would be possible to make the harmonic progression function have the option of counting the size based on the interval inputted by the user? Under certain circumstances, it's useful to specify the size, but under other circumstances, it's a bit cumbersome. I've made my own simple version that does this (but doesn't include all the options of the original function). I called bass-progression. (defun bass-progression (progression steps scale) (harmonic-progression progression scale :size (loop for i in steps collect (+ (length i) 1)) :step steps)) Example: (bass-progression '(0 1 2 3 4) '((2) (2 3) (2 3 4) (2 3 4 5)) '(c major)) => (c4e4 d4f4b4 e4g4d5g5 f4a4f5c6f6 g4b4)
  11. Avner Dorman

    figured-bass function

    So here's what I have so far. Any suggestions would be welcome ;;;; a function that splits a list ;;;; (defun split-list (lst) (if lst (if (cddr lst) (let ((l (split-list (cddr lst)))) (list (cons (car lst) (car l)) (cons (cadr lst) (cadr l)))) `((,(car lst)) ,(cdr lst))) '(nil nil))) ;;; figured-bass function ;;;; (defun figured-bass-progression (progression) (harmonic-progression (car (split-list progression)) '(c major) :size (loop for i in (car (cdr (split-list progression))) collect (+ (length i) 1)) :step (car (cdr (split-list progression))))) ;;;; test (figured-bass-progression '(0 (2 2) 1 (2 2 1) 2 (2 3) 3 (2 1 2) 4 (2 2 2) 5 (2 3) 6 (2 3) 7 (2 2)))==> (c4e4g4 d4f4g4b4 e4g4c5 f4a4c5d5 g4b4d5f5 a4c5f5 b4d5g5 c5e5g5) My questions are: 1. Why would (2 2 1) create a 4/3 chord? Why would (2 1 2) create a 6/5 chord? Shouldn't this be the other way around? 2. Would it be possible to convert this to traditional terminology? So one could write '(f4 (6 5)) and get the chord '(f4a4c5d5)? Obviously, this is not crucial, but I am curious to learn how to program better in lisp. Thanks! Avner
  12. Avner Dorman

    figured-bass function

    Thanks, Stephane! for some reason, the gen-chord3 examples provided with opusmodus don't seem to work. However, I think perhaps harmonic-progression could do the trick. For example, the following creates a series of 6/5 chords (harmonic-progression '(0 3 4 4) '(c major) :size '4 :step '((2 1 2))) and here are some 4/3 chords - (harmonic-progression '(0 3 4 4) '(c major) :size '4 :step '((2 2 1))) perhaps this is enough - although I do think it gets a bit cumbersome. If you have ideas on how to create a function that would streamline this process, I'd appreciate hearing them. I think something more similar to traditional figured bass notation format would be easier to work with (at least for me....) Thanks! Avner
  13. Avner Dorman

    figured-bass function

    I think it would be nice to have some figured bass functions. I started with these simplistic functions and I am wondering if anyone has thoughts on how to generalize them. I think it'll probably be best if eventually one would be able to simply input a list of bass notes and figures - something like (figured-bass '(c3 (5 3) d3 (4 3) e3 (6) '(c major)) and the function would return the figured bass realized. (defun five-three (degree root type) (tonality-map `(,type :root ,root :map shift) (chordize (pitch-transpose (- degree 1) (interval-to-pitch '(2 2)))))) (five-three 2 'd 'major) => (e4g4b4) (defun six-three (degree root type) (tonality-map `(,type :root ,root :map shift) (chordize (pitch-transpose (- degree 1) (interval-to-pitch '(2 3)))))) (six-three 3 'c 'minor) => (eb4g4c5) (defun six-four (degree root type) (tonality-map `(,type :root ,root :map shift) (chordize (pitch-transpose (- degree 1) (interval-to-pitch '(3 2)))))) (six-four 5 'e 'minor) => (b4e5g5)
  14. Avner Dorman

    Pitch Spelling Algorithm

    sorry - it's my autocorrect :-) I love opusmodus, by the way!!!
  15. Avner Dorman

    Pitch Spelling Algorithm

    Has anyone tried to implement pitch spelling algorithms in Opusmodus? There is already some code available on Dave Meredith's site - http://www.titanmusic.com/software.php - but it's far beyond my lisp knowledge to adapt these to Opusmodus. I believe the codes are designed to read midi files and respell them