Jump to content

opmo

Administrators
  • Posts

    2,903
  • Joined

  • Last visited

Reputation Activity

  1. Like
    opmo got a reaction from julio d'escrivan in disappearing text in document, bug?   
    The  .opmo~ extensions are auto generated files and used by the system when the app crashes etc... to recover the content of your original file. This file you leave alone, you ignore them and you should not use them (security) :-)
  2. Like
    opmo reacted to Stephane Boussuge in Par delà la Pointe Perçée For Orchestra   
    Hi,
    here's a piece for small orchestra made with my favorite music software 
     

     
    SB.
  3. Like
    opmo got a reaction from lviklund in Opusmodus 1.1.18324   
    New functions:
     
    cellular-automaton rule length initial-state
    integer-transpose value sequence &key section
    integer-transpose-start value sequence &key section
     
  4. Like
    opmo got a reaction from Stephane Boussuge in Generation of harmonic structures with Markov process   
    Possibility:
    (integer-transpose -1 prog)  
  5. Like
    opmo reacted to Stephane Boussuge in Pour et Contre pour 2 Pianos   
    Hi,
     
    here's a piece composed in 2015 for two pianos (and two good pianist ;-)
     

     
    SB.
  6. Like
    opmo reacted to Stephane Boussuge in Generation of harmonic structures with Markov process   
    Here is an example of generation of harmonic progression with Opusmodus using chords rules defined with a transition table.
    The technique presented here uses the concept of tonal degrees, but it is important to note that as you will see later in this article, this concept can be pushed quite far and quite outside the traditional tonal system.
     
    First, we define some transition rules from degree to degree:
     
    (setf transition       '((1 (4 1) (5 1) (6 2))         (2 (5 2) (4 1))         (3 (4 1))         (4 (5 1) (2 1))         (5 (1 3) (6 2) (4 1))         (6 (4 1))         (7 (1 1) (6 1))))  
    So here is a transition rule saying  a 1st degree will be 2 times more likely to be followed by a sixth degree (1 (6 2)) as a 4th or 5th (1 (4 1) (5 1) ).
    A second degree will be most likely followed by a 5th degree (2 (5 2) than a 4th (2 (4 1))
    We define this way all the transition rules for each degree of the scale.
     
    We now generate a sequence of degrees we call prog based on these rules with the function GEN-MARKOV-FROM-TRANSITIONS (for more information on Markov chains, you can consult:  https://en.wikipedia.org/wiki/Markov_chain ):
     
    (setf prog (gen-markov-from-transitions transition :size 24 :start 1))  
    which can for example give this result:
     
    => (1 5 1 4 2 4 2 4 2 5 6 4 5 1 5 6 4 5 1 5 6 4 2 5)
     
    Because the function that we'll use to generate chords is based on a numbering starting from zero but our degrees generation is based on a numbering starting from 1, we will subtract 1 to each value of our list prog to able to provide our next function a number list starting from zero.
    To do this, we use the MAPCAR Lisp function to apply -1 to each value of the list and we store the result in the variable prog.prep.
     
    (setf prog.prep (mapcar (lambda(x) (- x 1)) prog)) => (0 4 0 3 1 3 1 3 1 4 5 3 4 0 4 5 3 4 0 4 5 3 1 4)
     
    Now we generate chords using the HARMONIC-PROGRESSION function and store the result in the variable named chords:
     
    (setf chords (harmonic-progression prog.prep '(d4 major)))   
    The parameters passed to the function are our degrees List prog.prep and a scale with a root base (here d4).
     
    Here is the output of this function in notation:
     

     
    Of course, we are not limited to Major and Minor scales, we can use any scale or pitch structure available or generated by Opusmodus, here are some examples:
     
    (setf chords (harmonic-progression prog.prep '(d4 messiaen-mode5)))
    (setf chords (harmonic-progression prog.prep '(c4 acoustic-scale)                                     :root '(d4 f4 g4 e4 bb3)))  

     
    (setf chords (harmonic-progression prog.prep '(d4e4fs4gs4as4c5ds5)                                     :root '(d4 f4 g4 e4 bb3)))  
     

     
    A final example using the keyword :relative  enabling a smoother transition between chords with a relative voice leading between chords. 
     
    (setf chords (harmonic-progression prog.prep '(d4e4fs4gs4as4c5ds5)                                     :root '(d4 f4 g4 e4 bb3)                                     :relative t))  
     

     
    Once these chords generated, you can use them as you want in Opusmodus, map them on musical structures with TONALITY-MAP function or use them as basic materials to create reservoirs of pitch or other kind of pitch material.
     
    SB.
  7. Like
    opmo got a reaction from lviklund in Creating mp3 file   
    Version 2.0 will have build in audio system :-)
  8. Like
    opmo got a reaction from BrianCope in Opusmodus 1.1.18209   
    New functions:
     
    binary-rhythm level decimal-number ratio &key type rotate variant seed omn
    euclidean-rhythm level low high ratio &key type rotate variant seed omn
    gen-pink-noise n &key octave seed
    pink-noise-sample n sequence &key octave seed
    gen-brownian-motion n &key amp prob output seed
    brownian-motion-sample n sequence &key prob seed
    expand-tonality tonality-form &key type chord
     
    Plus minor bug fixes.
     
     
     
  9. Like
    opmo reacted to Stephane Boussuge in Using binary-rhythm function for generating a full symphonic movement   
    Hi,
     
    here's a simple example of my use of BINARY-RHYTHM function inspired by the Janusz's doc examples for generating a full movement of a chamber symphonie.
     
    The BINARY-RHYTHM function use FIBONACCI stuff and variant optional keyword:
    (init-seed 839201883) (setf fib1 (fibonacci 4 64)) (setf fib2 (fibonacci 21 81)) (setf fib3 (fibonacci 14 74)) (setf fib4 (fibonacci 32 92)) (setf fib5 (fibonacci 1 61)) (setf rhstruct (rnd-sample 8 '(4 8 16 32 64))) (setf bval '(h h q q e e s s s e s e q e h q h h)) (setf len1 (binary-rhythm rhstruct fib1 bval :type 2 :variant '?)) (setf len2 (binary-rhythm rhstruct fib2 bval :type 2 :variant '?)) (setf len3 (binary-rhythm rhstruct fib3 bval :type 2 :variant '?)) (setf len4 (binary-rhythm rhstruct fib4 bval :type 2 :rotate 18)) (setf len5 (binary-rhythm rhstruct fib5 bval :type 2 :variant '?))  

    SB.
  10. Like
    opmo got a reaction from lviklund in Opusmodus 1.1.18209   
    New functions:
     
    binary-rhythm level decimal-number ratio &key type rotate variant seed omn
    euclidean-rhythm level low high ratio &key type rotate variant seed omn
    gen-pink-noise n &key octave seed
    pink-noise-sample n sequence &key octave seed
    gen-brownian-motion n &key amp prob output seed
    brownian-motion-sample n sequence &key prob seed
    expand-tonality tonality-form &key type chord
     
    Plus minor bug fixes.
     
     
     
  11. Like
    opmo got a reaction from Stephane Boussuge in Etude 1 pour Orchestre   
    Bravo! 
  12. Like
    opmo reacted to Stephane Boussuge in Etude 1 pour Orchestre   
    Hi,
     
    here's a short study for Orchestra based on Slonimsky patterns No. 49 and 59.
    I use this study also for testing the possibility with Opusmodus for orchestral composition, DO-TIMELINE technique and multiple files/section assembling.
     
    It was also a test for XML export to Sibelius 8 and rendering with awesome software NotePerformer (http://www.noteperformer.com)
     
    You will find attached a section of the composition as an template/example on how i did this piece.
     

     
    MusicScore available at:
    http://stephaneboussuge.musicaneo.com/sheetmusic/sm-239631_etude_1_pour_orchestre.html
     
    SB.
     
    Etude1OrchestraForumExerpt.opmo
  13. Like
    opmo got a reaction from Stephane Boussuge in Doubt about representing a scale   
    Solution:
    (harmonic-progression '(0 3 0 4) (expand-chord '(cs4 major))) If we would deal with scales names only then this will be not necessary.
     
    I found the bug and will make new update soon.
  14. Like
    opmo got a reaction from EAIP in Missing hairpin?   
    I will see what I can do, I think we can add this to the system.
  15. Like
    opmo got a reaction from Stephane Boussuge in To Stephane Boussuge: How to apply "diatonic" transposition to exotic scales   
    Try the HARMONIC-PROGRESSION function.
  16. Like
    opmo got a reaction from BrianCope in Opusmodus 1.1.17942   
    Out Now:
     
    harmonic-progression degree scale &key (size 3) (step 2)
                                root row variant relative
                                (chord t) (flatten t) seed
     
    rnd-sample-seq n sequence &key section seed
     
    and documentation fixes.
  17. Like
    opmo got a reaction from Stephane Boussuge in Chord Progressions   
    Next release with HARMONIC-PROGRESSION planed for Monday, January 25th.
  18. Like
    opmo got a reaction from RST in Chord Progressions   
    HARMONIC-PROGRESSION coming soon:
     
    harmonic-progression degree scale &key (size 3) (step 2) relative
                                root row variant (chord t) (flatten t) seed
     
    (harmonic-progression '(2 3 4) '(c major)) => (e4g4b4 f4a4c5 g4b4d5) (harmonic-progression '(3 4 0) '(c major)) => (f4a4c5 g4b4d5 c4e4g4) (harmonic-progression '(0 1 2 3 4 5 6 7) '(c major)) => (c4e4g4 d4f4a4 e4g4b4 f4a4c5 g4b4d5 a4c5e5 b4d5f5 c5e5g5) (harmonic-progression '(2 6 5 4) '(a minor)) => (c5e5g5 g5b5d6 f5a5c6 e5g5b5)  
    (setf scale '(c4 d4 e4 f4 g4 a4)) (harmonic-progression '(0 1 2 3 4 5 6 7) scale) => (c4e4g4 d4f4a4 e4g4c5 f4a4d5 g4c5e5 a4d5f5 c5e5g5 d5f5a5) (harmonic-progression '(0 1 2 3 4 5 6 7) scale :step '(2 (2 1) 2)) => (c4e4g4 d4f4g4 e4g4c5 f4a4d5 g4c5d5 a4d5f5 c5e5g5 d5f5g5) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale) => (c4e4g4 f4a4d5 g4c5e5 c4e4g4 g3c4e4 f3a3d4 a3d4f4 c4e4g4 g3c4e4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3)) => (c4e4g4 f4a4d5 g4c5e5g5 c4e4g4c5e5 g3c4e4g4 f3a3d4f4 a3d4f4 c4e4g4 g3c4e4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :step '(2 2 1 2 (1 2) 2 2 2 1)) => (c4e4g4 f4a4d5 g4a4c5 c4e4g4 g3a3d4 f3a3d4 a3d4f4 c4e4g4 g3a3c4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :root '(-6 -2 3 -3 2 -1 0)) => (fs3bb3cs4 eb4g4c5 bb4eb5g5 a3cs4e4 a3d4fs4 e3gs3cs4 a3d4f4 fs3bb3cs4 f3bb3d4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3) :step '(2 2 1 2 (2 1) 2 2 2 (2 1)) :root '(c4 g4 a4 bb4 c5 ds5 e4 e5 bb4)) => (c4e4g4 c5e5a5 e5fs5a5b5 bb4d5f5bb5d6 g4c5d5f5 gs4c5f5gs5 cs4fs4a4 e5gs5b5 f4bb4c5) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3) :step '(2 2 1 2 (2 1) 2 2 2 (2 1)) :root '(c4 g4 a4 bb4 c5 ds5 e4 e5 bb4) :row t) => (c4e4g4 c5e5a5 e5fs5a5b5 bb4d5f5 g4c5d5f5 gs4c5f5 cs4fs4a4 e5gs5b5 f4bb4c5)  
    (setf row '(gs4 ds4 g4 e4 as4 fs4 d4 f4 cs4 c4 a4 b4)) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) row) => (gs4g4bb4 e4fs4f4 bb4d4cs4 gs4g4bb4 a3gs4g4 c3b3eb4 b3eb4e4 gs4g4bb4 a3gs4g4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) row :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2)) => (fs3f3gs3 fs3gs3g3d3 f4a3gs3 a3gs3b3eb3 eb3d4cs4 e2eb3g3gs3 fs3bb3b3 bb3a3c4e3 g2fs3f3)  
    (setf p45 (partial-row (library 'tbn-cs3-frames 'partials 'p45))) (harmonic-progression '(1 4 5 1 3 4 2 4 3) p45 :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2)) => (c4a4b5 b5f6c7fs7 gs6d7g7 eb4c5d6gs6 f5g6cs7 cs6g6d7gs7 cs5e6bb6 b5f6c7fs7 a4b5f6) (harmonic-progression '(1 4 5 1 3 4 2 4 3) p45 :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2) :chord nil :flatten nil :variant '? :seed 8634) => ((c4 a4 b5) (b5 f5 bb4 e4) (gs6 d7 g7) (eb4 fs3 e2 bb1) (cs7 g7 f6) (cs6 g5 c5 fs4) (cs5 bb3 e3) (fs7 c7 f6 b5) (a4 g3 cs3))  
  19. Like
    opmo got a reaction from Stephane Boussuge in Chord Progressions   
    HARMONIC-PROGRESSION coming soon:
     
    harmonic-progression degree scale &key (size 3) (step 2) relative
                                root row variant (chord t) (flatten t) seed
     
    (harmonic-progression '(2 3 4) '(c major)) => (e4g4b4 f4a4c5 g4b4d5) (harmonic-progression '(3 4 0) '(c major)) => (f4a4c5 g4b4d5 c4e4g4) (harmonic-progression '(0 1 2 3 4 5 6 7) '(c major)) => (c4e4g4 d4f4a4 e4g4b4 f4a4c5 g4b4d5 a4c5e5 b4d5f5 c5e5g5) (harmonic-progression '(2 6 5 4) '(a minor)) => (c5e5g5 g5b5d6 f5a5c6 e5g5b5)  
    (setf scale '(c4 d4 e4 f4 g4 a4)) (harmonic-progression '(0 1 2 3 4 5 6 7) scale) => (c4e4g4 d4f4a4 e4g4c5 f4a4d5 g4c5e5 a4d5f5 c5e5g5 d5f5a5) (harmonic-progression '(0 1 2 3 4 5 6 7) scale :step '(2 (2 1) 2)) => (c4e4g4 d4f4g4 e4g4c5 f4a4d5 g4c5d5 a4d5f5 c5e5g5 d5f5g5) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale) => (c4e4g4 f4a4d5 g4c5e5 c4e4g4 g3c4e4 f3a3d4 a3d4f4 c4e4g4 g3c4e4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3)) => (c4e4g4 f4a4d5 g4c5e5g5 c4e4g4c5e5 g3c4e4g4 f3a3d4f4 a3d4f4 c4e4g4 g3c4e4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :step '(2 2 1 2 (1 2) 2 2 2 1)) => (c4e4g4 f4a4d5 g4a4c5 c4e4g4 g3a3d4 f3a3d4 a3d4f4 c4e4g4 g3a3c4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :root '(-6 -2 3 -3 2 -1 0)) => (fs3bb3cs4 eb4g4c5 bb4eb5g5 a3cs4e4 a3d4fs4 e3gs3cs4 a3d4f4 fs3bb3cs4 f3bb3d4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3) :step '(2 2 1 2 (2 1) 2 2 2 (2 1)) :root '(c4 g4 a4 bb4 c5 ds5 e4 e5 bb4)) => (c4e4g4 c5e5a5 e5fs5a5b5 bb4d5f5bb5d6 g4c5d5f5 gs4c5f5gs5 cs4fs4a4 e5gs5b5 f4bb4c5) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) scale :size '(3 3 4 5 4 4 3 3 3) :step '(2 2 1 2 (2 1) 2 2 2 (2 1)) :root '(c4 g4 a4 bb4 c5 ds5 e4 e5 bb4) :row t) => (c4e4g4 c5e5a5 e5fs5a5b5 bb4d5f5 g4c5d5f5 gs4c5f5 cs4fs4a4 e5gs5b5 f4bb4c5)  
    (setf row '(gs4 ds4 g4 e4 as4 fs4 d4 f4 cs4 c4 a4 b4)) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) row) => (gs4g4bb4 e4fs4f4 bb4d4cs4 gs4g4bb4 a3gs4g4 c3b3eb4 b3eb4e4 gs4g4bb4 a3gs4g4) (harmonic-progression '(0 3 4 0 -2 -3 -1 0 -2) row :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2)) => (fs3f3gs3 fs3gs3g3d3 f4a3gs3 a3gs3b3eb3 eb3d4cs4 e2eb3g3gs3 fs3bb3b3 bb3a3c4e3 g2fs3f3)  
    (setf p45 (partial-row (library 'tbn-cs3-frames 'partials 'p45))) (harmonic-progression '(1 4 5 1 3 4 2 4 3) p45 :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2)) => (c4a4b5 b5f6c7fs7 gs6d7g7 eb4c5d6gs6 f5g6cs7 cs6g6d7gs7 cs5e6bb6 b5f6c7fs7 a4b5f6) (harmonic-progression '(1 4 5 1 3 4 2 4 3) p45 :size '(3 4) :root '(-6 -2 3 -3 2 0 3 -2) :chord nil :flatten nil :variant '? :seed 8634) => ((c4 a4 b5) (b5 f5 bb4 e4) (gs6 d7 g7) (eb4 fs3 e2 bb1) (cs7 g7 f6) (cs6 g5 c5 fs4) (cs5 bb3 e3) (fs7 c7 f6 b5) (a4 g3 cs3))  
  20. Like
    opmo got a reaction from Stephane Boussuge in "Quantising" into harmonic progression   
    (Opusmodus 1.1.17866)
    The new added option :resolution into TONALITY-MAP and HARMONIC-PATH functions solves the problem for variabile harmonic progression.
  21. Like
    opmo got a reaction from Stephane Boussuge in Opusmodus 1.1.17866   
    We are proud to announce 7 new functions and great additions to tonality tools.
     
    New:
     
    GET-HARMONIC-PATH (sequence &key resolution loop unique sort remove row chord seed)
    Returns a pitch sequence (tonality, scale) made up of an omn sequence or any number of voices (instruments).
     
    DO-SECTION (section function sequence)
    Distributes an operation over a range of lists. Binary list section returns a processed list if 1. If 0 the list is unchanged. A list section with symbols '- and 'x returns a processed list if 'x. If '- the list is unchanged.
     
    DO-TIMELINE (list function &key (resolution :time-signature) loop)
    (Please examine the function if have used before - changes and additions).
    Distributes an operation over a number of bars, if 'x. If '- the bar is unchanged. Optionally you can use binary numbers: 1 equal x and 0 equal -.
     
    GET-TUNING (frequency)
    Returns the difference of a frequency value to the closest tempered pitch.
     
    POSITION-TO-BINARY (numbers)
    Returns a binary list where each of the position numbers is 1.   
     
    BINARY-TO-DECIMAL (binary-list)
    Converts a binary list to a decimal number.
     
    DECIMAL-TO-BINARY (number)
    Converts a decimal number to a binary list.
     
     
    Revisions:
     
    TONALITY-MAP (scale sequence &key resolution loop section)
    HARMONIC-PATH (path sequence &key type resolution loop octave section seed)
     
     
    Functions removed from the system:
     
    BINARY-DO-SECTION
    BINARY-TIMELINE
     
    Both functions can be easily replaced with DO-TIMELINE or DO-SECTION (both work with binary list input).
    The DO-SECTION is made for user’s own defined functions where section option is not applied.
     
    Best wishes,
    JP
  22. Like
    opmo got a reaction from lviklund in Opusmodus 1.1.17866   
    We are proud to announce 7 new functions and great additions to tonality tools.
     
    New:
     
    GET-HARMONIC-PATH (sequence &key resolution loop unique sort remove row chord seed)
    Returns a pitch sequence (tonality, scale) made up of an omn sequence or any number of voices (instruments).
     
    DO-SECTION (section function sequence)
    Distributes an operation over a range of lists. Binary list section returns a processed list if 1. If 0 the list is unchanged. A list section with symbols '- and 'x returns a processed list if 'x. If '- the list is unchanged.
     
    DO-TIMELINE (list function &key (resolution :time-signature) loop)
    (Please examine the function if have used before - changes and additions).
    Distributes an operation over a number of bars, if 'x. If '- the bar is unchanged. Optionally you can use binary numbers: 1 equal x and 0 equal -.
     
    GET-TUNING (frequency)
    Returns the difference of a frequency value to the closest tempered pitch.
     
    POSITION-TO-BINARY (numbers)
    Returns a binary list where each of the position numbers is 1.   
     
    BINARY-TO-DECIMAL (binary-list)
    Converts a binary list to a decimal number.
     
    DECIMAL-TO-BINARY (number)
    Converts a decimal number to a binary list.
     
     
    Revisions:
     
    TONALITY-MAP (scale sequence &key resolution loop section)
    HARMONIC-PATH (path sequence &key type resolution loop octave section seed)
     
     
    Functions removed from the system:
     
    BINARY-DO-SECTION
    BINARY-TIMELINE
     
    Both functions can be easily replaced with DO-TIMELINE or DO-SECTION (both work with binary list input).
    The DO-SECTION is made for user’s own defined functions where section option is not applied.
     
    Best wishes,
    JP
  23. Like
    opmo got a reaction from BrianCope in Opusmodus 1.1.17866   
    We are proud to announce 7 new functions and great additions to tonality tools.
     
    New:
     
    GET-HARMONIC-PATH (sequence &key resolution loop unique sort remove row chord seed)
    Returns a pitch sequence (tonality, scale) made up of an omn sequence or any number of voices (instruments).
     
    DO-SECTION (section function sequence)
    Distributes an operation over a range of lists. Binary list section returns a processed list if 1. If 0 the list is unchanged. A list section with symbols '- and 'x returns a processed list if 'x. If '- the list is unchanged.
     
    DO-TIMELINE (list function &key (resolution :time-signature) loop)
    (Please examine the function if have used before - changes and additions).
    Distributes an operation over a number of bars, if 'x. If '- the bar is unchanged. Optionally you can use binary numbers: 1 equal x and 0 equal -.
     
    GET-TUNING (frequency)
    Returns the difference of a frequency value to the closest tempered pitch.
     
    POSITION-TO-BINARY (numbers)
    Returns a binary list where each of the position numbers is 1.   
     
    BINARY-TO-DECIMAL (binary-list)
    Converts a binary list to a decimal number.
     
    DECIMAL-TO-BINARY (number)
    Converts a decimal number to a binary list.
     
     
    Revisions:
     
    TONALITY-MAP (scale sequence &key resolution loop section)
    HARMONIC-PATH (path sequence &key type resolution loop octave section seed)
     
     
    Functions removed from the system:
     
    BINARY-DO-SECTION
    BINARY-TIMELINE
     
    Both functions can be easily replaced with DO-TIMELINE or DO-SECTION (both work with binary list input).
    The DO-SECTION is made for user’s own defined functions where section option is not applied.
     
    Best wishes,
    JP
  24. Like
    opmo got a reaction from RST in Spectral - Marangona   
  25. Like
    opmo reacted to Stephane Boussuge in Image 1 for Piano   
    New Score for piano Solo, "Image 1".

     
    SB.
     
    Image-1_02_060116_1314 - Partition complète.pdf
×
×
  • Create New...

Important Information

Terms of Use Privacy Policy