1. ## opmo

Janusz Podrazik

1,178

Moderators

416

Members

83

Members

364

## Popular Content

Showing most liked content since 11/18/2017 in all areas

1. 5 points

## Midi In Collect

Ver 2. will be able to import musicXML files and convert to omn.
2. 4 points

## Pcs: how to retrieve inverted forms from this function ?

WOW !!! GREAT ! Thanks ! It was really a lot of work done ! Lots of sets, but it's really useful, I think. Best ! Julio This will be in the next release, I think. Looking Forward ! added 2 minutes later If you like Set Theory and Guitar, you gonna like my book. Please, Check it out ! https://www.melbay.com/Products/Default.aspx?bookid=30042BCDEB Best, Julio
3. 4 points

## Opusmodus 1.2.22733

Extended documentation and bug fix in do-timeline and do-timline2 functions if binary list.
4. 4 points

## 4e an special prize in the contest Pianoteq 207

Hello, Following the 2017 Pianoteq contest, I was surprised to be ranked 4th in the contest and get a special prize with this little piece written with Opusmodus. Didier http://www.forum-pianoteq.com/viewtopic.php?id=5373
5. 3 points

## Pcs: how to retrieve inverted forms from this function ?

The PCS-ANALYSIS function returns two more results: inverted-form and interval-class: (pcs-analysis '(4 1 8 10 3 7)) => Sequence: (4 1 8 10 3 7) Set: 6-z29 Prime Form: (0 2 3 6 7 9) Inverted Form: nil Pitch: (c4 d4 eb4 fs4 g4 a4) Normal Order: (1 3 4 7 8 10) Complement: (0 2 5 6 9 11) Inversion: (8 11 4 2 9 5) Vector: (2 2 4 2 3 2) Interval Class: (3 5 2 5 4) (pcs-analysis '(0 3 7)) => Sequence: (0 3 7) Set: 3-11 Prime Form: (0 3 7) Inverted Form: (0 4 7) Pitch: (c4 eb4 g4) Normal Order: (0 3 7) Complement: (1 2 4 5 6 8 9 10 11) Inversion: (0 9 5) Vector: (0 0 1 1 1 0) Interval Class: (3 4) (pcs-analysis '(0 4 7)) => Sequence: (0 4 7) Set: 3-11b Prime Form: (0 3 7) Inverted Form: (0 4 7) Pitch: (c4 e4 g4) Normal Order: (0 4 7) Complement: (1 2 3 5 6 8 9 10 11) Inversion: (0 8 5) Vector: (0 0 1 1 1 0) Interval Class: (4 3) The new function PCS-FORMS takes care of both forms: prime-form and inverted-form. The inverted form set ends with letter b: (pcs-forms '((0 4 7) (0 3 7)) :type :set) => (3-11b 3-11)
6. 3 points

## tutorial guide

Next - which will take some time - I will add all Opusmodus System Function with examples to our forum.
7. 3 points

## Pcs: how to retrieve inverted forms from this function ?

I will add the inverted form into to the system with the next update.
8. 3 points

## Translating MIDI velocities into OMN velocities

Ah, great! The documentation does not mention that the input can also be MIDI velocity integers, so I missed that. Best, Torsten added 2 minutes later BTW: I needed that to translate values from OpenMusic data objects into Opusmodus. I am currently working on a library that will bring OpenMusic functions/methods to Opusmodus... Best, Torsten
9. 2 points

## Length-Legato opposite function

it was necessary to re-organize "OMN with ties" by "omn-merge-ties" first... and find a solution if staccato-length = length ... added 2 minutes later you're welcome... it's a bit like "BRAINFOOD" solving such things... but TORSTEN is the "code-master" for the complicated things!! :-) so, i have to compose now, the real hard work
10. 2 points

## Multiple/Simultaneous Voices, Each With Different BPM's?

Did you see my workaround in the post mentioned by André (to lock the smpte of the track and then change the overall tempo in Logic)? Now I'am working with Reaper (https://www.reaper.fm/ ) which is worth to checkout, very cheap and unbelievable powerful (a bit of a learning curve I admit), no problem to change the tempo of every midi file seperatly.. best ole
11. 2 points

## Length-Legato opposite function

Hi, Just a minor improvement, the function is now also working with sublists :-) best ole (defun length-staccato-lists (n alist) (let ((newlengths (loop for i in (omn :length (flatten alist)) when (> i 0) append (list n (* -1 (abs (- i n)))) else collect i))) (if (omn-formp alist) (omn-to-time-signature (make-omn :length newlengths :pitch (omn :pitch alist) :velocity (omn :velocity alist) :articulation (omn :articulation alist)) (get-time-signature alist)) newlengths))) (length-staccato-lists 1/16 '((q e4 mp q tasto q -q q q)(q e4 mp q tasto q -q q q))) -->((s e4 mp -e. s e4 tasto -e. s e4 -e. -q s e4 -e. s e4 -e.) (s e4 -e. s e4 tasto -e. s e4 -e. -q s e4 -e. s e4 -e.))
12. 2 points

## Pcs: how to retrieve inverted forms from this function ?

of course: (pcs '3-11b) => (0 4 7) INTERVAL-CLASS: (interval-class '(0 1 2 11 10 9 5 4 3 6 7 8)) => (1 1 3 1 1 4 1 1 3 1 1) (interval-class '(0 1 3 8 4 9 10 7 6 5 11 2)) => (1 2 5 4 5 1 3 1 1 6 3) (interval-class '(0 11 5 7 6 1 3 4 2 9 8 10)) => (1 6 2 1 5 2 1 2 5 1 2)
13. 2 points

## Pcs: how to retrieve inverted forms from this function ?

It's a really interesting issue to study the different approaches of the post tonal Theory. The more hardcore atonal side does not consider prime and inverted form as different things, ontologically but in fact, our tonal oriented ear really can tell the difference between a major and a minor triad as a clear episthemological distinction. Counting or not counting the inverted forms also have implications on the Problems of enumeration of the types of series, as Frippertinger & Lackner recent studies related to group theory and a more modern approach to Hauer Tropes demonstrates. Best Julio
14. 2 points

15. 2 points

## Group orchestration / instrumentation example

Just helping others to read this code: the key data here are the variables after the comment ;; Group orchestration. Each variable grp1, grp2, etc. set for each part in a single bar whether that part should play in the end or not. The order of those groups (bars specifying which voice is playing) is then randomised. Best, Torsten
16. 2 points

## Generation of harmonic structures with Markov process

Quartal example: (harmonic-progression '(1 2 3 4 5 6 7) '(d4 natural-minor) :size 4 :step 3 :base 1 ) Another example more complex: (setf row (rnd-row :type :pitch :transpose 2)) (setf chords1 (harmonic-progression (rnd-number 24 -6 6) row :size (rnd-sample 24 '(3 4 5 6)) :step (rnd-sample 24 '(1 2 3 (2 3)(1 3))) )) S.
17. 2 points

## 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.
18. 1 point

19. 1 point

## Pcs: how to retrieve inverted forms from this function ?

I opted for a 'physical copy', so will have to wait until Dec. 21st...just in time for a Christmas gift to myself ;-)
20. 1 point

## Pcs: how to retrieve inverted forms from this function ?

Nice work and a good companion to Allan Forte. /Lasse
21. 1 point

## Length-Legato opposite function

thanks a lot!
22. 1 point

## Length-Legato opposite function

the solution... (defun length-staccato (n alist) (let ((newlengths) (new-omn (omn-merge-ties (flatten alist))) (time-sign (get-time-signature alist))) (progn (setf newlengths (loop for i in (omn :length new-omn) when (> i 0) append (if (= n i) (list i) (list n (* -1 (abs (- i n))))) else collect i)) (if (omn-formp alist) (omn-to-time-signature (make-omn :length newlengths :pitch (omn :pitch new-omn) :velocity (omn :velocity new-omn) :articulation (omn :articulation new-omn)) time-sign) newlengths)))) (length-staccato 1/16 '(q -q q q)) (length-staccato 1/16 '(q e4 mp q tasto q -q q q)) (length-staccato 1/16 '((e. c4 eb4 fs4 a4 tie) (s a4 e. cs4 e4 g4 e bb4 tie) (e bb4 e. d4 f4 gs4 s b4)))
23. 1 point

## Length-Legato opposite function

You are welcome! Maybe Janusz can chime in and tell us something about how to handle tied notes in functions like this. I really would like to know that!
24. 1 point

## Length-Legato opposite function

Hi Julio, I've found two problems. The weird one you had I think I could find and solve, but the function also does not handle tied notes properly and I have no idea how to remedy that. That goes waay above my hacking abilities :-) (length-staccato 1/16 '((e. c4 eb4 fs4 a4 tie) (s a4 e. cs4 e4 g4 e bb4 tie) (e bb4 e. d4 f4 gs4 s b4))) -->((s c4 -e s eb4 -e s fs4 -e s a4 -e) (s a4 cs4 -e s e4 -e s g4 -e s bb4 -) (s bb4 - d4 -e s f4 -e s gs4 -e s b4)) Nevertheless the code with the one correction, so it's not perfect but maybe somehow useful for you.. best ole (defun length-staccato (n alist) (let ((newlengths (loop for i in (omn :length (flatten alist)) when (> i n) append (list n (* -1 (abs (- i n)))) else collect i))) (if (omn-formp alist) (omn-to-time-signature (make-omn :length newlengths :pitch (omn :pitch alist) :velocity (omn :velocity alist) :articulation (omn :articulation alist)) (get-time-signature alist)) newlengths)))
25. 1 point

## Length-Legato opposite function

dear julio i don't know if there is a solution in the om-library... coded quickly one for your problem... the basic-rhythms (denominator) should stay constant like in your examples, then it works... first value has to be your "stacc-length", second your omn-list or a length-list, have a look to the example... greetings andré (defun length-staccato (n alist) (let ((newlengths (loop for i in (omn :length alist) when (> i 0) append (list n (* -1 (abs (- i n)))) else collect i))) (if (omn-formp alist) (make-omn :length newlengths :pitch (omn :pitch alist) :velocity (omn :velocity alist) :articulation (omn :articulation alist)) newlengths))) (length-staccato 1/16 '(q e4 mp q tasto q -q q q))
26. 1 point

## Saving Plots and Piano Rolls to PDF Vectorial Graphics ETC

This will save a PNG file in the Opusmodus/Graphs folder: (setf length '(q e = s = = = -q e - = s = = -e.) pitch '(c4 cs5 d4 ds5 e4 f5 fs4 g5 gs4 a5 as4 b5)) (length-pitch-list-plot length pitch :file "length-pitch-plot.png") As for the piano roll you will need to create a screenshot with cmd/shift/4.
27. 1 point

## Pcs: how to retrieve inverted forms from this function ?

Going to, looks good...thanks for the notice ;-)
28. 1 point

## Pcs: how to retrieve inverted forms from this function ?

Congratulation to your book, looks very good. JP
29. 1 point

## tutorial guide

SB: https://opusmodus.com/forums/tutorials/tutorial-guide/
30. 1 point

## Pcs: how to retrieve inverted forms from this function ?

I agree totally !!! S.
31. 1 point

## Pcs: how to retrieve inverted forms from this function ?

Very cool, Janusz! Im doing my doctoral dissertation now and I'm doing some thing interesting related to rhythm that certainly could be transformed in a function. I'll tell you soon. This Will be useful there. Best Julio
32. 1 point

## Pcs: how to retrieve inverted forms from this function ?

To do this I would need to rewrite the pitch class set functions. The functions where based on Allen Forte 'The Structure of Atonal Music' book.
33. 1 point

## Pcs: how to retrieve inverted forms from this function ?

(pcs-analysis '(0 3 7)) ? pcs-analysis Sequence: (0 3 7) Set: 3-11 Prime Form: (0 3 7) Pitch: (c4 eb4 g4) Normal Order: (0 3 7) Complement: (1 2 4 5 6 8 9 10 11) Inversion: (0 9 5) Vector: (0 0 1 1 1 0) (pcs-analysis '(0 4 7)) ? pcs-analysis Sequence: (0 4 7) Set: 3-11 Prime Form: (0 3 7) Pitch: (c4 eb4 g4) Normal Order: (0 4 7) Complement: (1 2 3 5 6 8 9 10 11) Inversion: (0 8 5) Vector: (0 0 1 1 1 0) Note: The pitch output form PCS-ANALYSIS is the pitch form prime form.
34. 1 point

## Midi In Collect

to wishlist: xml-import
35. 1 point

## Lesson 1. Creating and Processing a List

Contents Annotation Score Notation Annotation SETF is a LISP term that ‘sets’ a word (pitches, in this example) to a given list. This means that every time we use the word pitches, Opusmodus will know that we actually mean the pitch sequence (c4 cs4 fs4 g4 c5). This is known as a variable. It saves us time: instead of writing out all five pitches every time we want to use them, all we have to do is use the variable name pitches. This is very much the same as saying: pitches = (c4 cs4 fs4 g4 c5) This means that pitches can be used to create the variable transposed-pitches by this expression: (setf transposed-pitches (pitch-transpose -12 pitches)) In other words: transposed-pitches = (c3 cs3 fs3 g3 c4) Transposition is a function we constantly use in composing music whether we use computers or not. (pitch-transpose -12 pitches) is a function with a parameter -12 and a variable pitches. In this context, -12 means transpose the variable pitches down an octave. The function SPAN is something else. It’s unique to Opusmodus. We’ve got five pitches, so let’s 'span' a single 1/8 note length across those pitches: lengths = (1/8 1/8 1/8 1/8 1/8) Essentially SPAN will repeat material until it is the same length as the longer of two lists: useful for ensuring your compositional material aligns! For this fragment the metre is 5/8. To get this to show up correctly on the Notation and MIDI displays a time-signature has to be generated. This is how it’s done. Make sure you examine the output of each (use the ⌘E shortcut): (setf timesigs (get-time-signature lengths)) => (5 8) This means 1 bar of 5/8. From here on the score is defined. This is one of two ways to do it. In each part of the piano the musical parameters are each defined separately, drawing on the pitch, length and velocity material previously created. In Lesson 2 we’ll see the other way of doing this – with the Opusmodus Notation (OMN) script. Finally, take a look at the dynamics. By repeating the crescendo < for each note you can get a dynamic hairpin of the correct length. (setf dynamics '(p< < < < ff)) Score (setf pitches '(c4 cs4 fs4 g4 c5)) (setf transposed-pitches (pitch-transpose -12 pitches)) (setf lengths (span pitches '(1/8))) (setf dynamics '(p< < < < ff)) (setf timesigs (get-time-signature lengths)) (def-score lesson-1 (:key-signature 'chromatic :time-signature timesigs :tempo 80 :layout (piano-layout 'piano-rh 'piano-lh)) (piano-rh :length lengths :pitch pitches :velocity dynamics :channel 1 :sound 'gm :program 'acoustic-grand-piano) (piano-lh :length lengths :pitch transposed-pitches :velocity dynamics) ) Notation Next page Lesson 2. Introducing OMN Go back to Reference page.
36. 1 point

37. 1 point

## replace-articulation-of-a-pitch

i didn't find a OM-library-solution for this kind of thing, so i coded it... if you want to REPLACE the articulation of some specific pitches. perhaps all 'd4 sould be PONTE... you could use this. it was necessary to code it like that, because otherwise you get in trouble with the empty parameter-slots... should work fine greetings andré ;;; SUBFUNCTIONS (defun eliminate-nil (alist) (loop for i in alist when (not (null i)) collect i)) (defun complete-event-slots (omn-list) (let ((omn-art (omn :articulation (single-events (flatten omn-list))))) (single-events (omn-replace :articulation (flatten (eliminate-nil (loop for i in omn-art for cnt = 0 then (incf cnt) when (equal (car i) '-) collect (nth (1- cnt) omn-art) else collect i))) omn-list)))) ;(complete-event-slots '(5q a4 ff pizz 5q e3 -e 5q a4 f)) ;;; MAIN FUNCTION (defun replace-articulation-of-a-pitch (omn-list &key pitches articulation (chance 1.0)) (loop for i in (complete-event-slots (flatten omn-list)) when (and (member (car (omn :pitch i)) pitches) (prob? chance)) append (omn-component-replace i (list articulation)) else append i)) ;;; EXAMPLE (replace-articulation-of-a-pitch '(5q a4 ff pizz 5q e3 p -q 5q d4 pizz) :pitches '(a4 d4) :articulation 'ponte :chance 1.0) -> (5q a4 ff ponte 5q e3 p pizz -q 5q d4 p ponte)
38. 1 point

## Group orchestration / instrumentation example

I am a bit overbooked actually and didn't took the time to comment it correctly, but you've made it :-) Thank you Torsten ! In fact the variables grp1, grp2 etc.. are like orchestration presets and can be (for example) stored in a library file to be recalled algorithmically. S.
39. 1 point

## Group orchestration / instrumentation example

Hi, An example of group orchestration. I first create some binary représentation of some group of instruments and apply this groups with do-timeline: ;;; Parameters (setf size 12) ;;; Length generation (setf len1 (euclidean-rhythm (gen-repeat size '(16)) 1 12 's :type 2)) (setf len2 (euclidean-rhythm (gen-repeat size '(16)) 1 12 's :type 2)) (setf len3 (euclidean-rhythm (gen-repeat size '(16)) 1 12 's :type 2)) (setf len4 (euclidean-rhythm (gen-repeat size '(16)) 1 12 's :type 2)) ;;; Pitch generation (setf pmat (gen-divide 8 (vector-to-pitch '(c3 c5)(gen-white-noise 32)))) (setf pch1 (pitch-transpose 12 (rnd-sample size pmat))) (setf pch2 (pitch-transpose 8 (rnd-sample size pmat))) (setf pch3 (pitch-transpose 0 (rnd-sample size pmat))) (setf pch4 (pitch-transpose -24 (rnd-sample size pmat))) ;;; Global dynamics (setf dyna (mclist (pink-noise-sample 64 '(pp p mp mf f ff)))) ;;; OMN assembly (setf line1 (make-omn :pitch pch1 :length len1 :velocity dyna)) (setf line2 (make-omn :pitch pch2 :length len2 :velocity dyna)) (setf line3 (make-omn :pitch pch3 :length len3 :velocity dyna)) (setf line4 (make-omn :pitch pch4 :length len4 :velocity dyna)) (setf flute line1) (setf oboe line2) (setf clarinet line3) (setf bassoon line4) ;;; Orchestration and post processing ;; Ambitus (setf flute (ambitus '(g4 c6) flute)) (setf oboe (ambitus '(d4 d5) oboe)) (setf clarinet (ambitus '(c4 g5) clarinet)) (setf bassoon (ambitus '(c2 g3) bassoon)) ;; Re-barring (setf master-meters '(4/4)) (setf flute (omn-to-measure flute master-meters)) (setf oboe (omn-to-measure oboe master-meters)) (setf clarinet (omn-to-measure clarinet master-meters)) (setf bassoon (omn-to-measure bassoon master-meters)) ;; Mute / play (setf olen (length flute)) ;(setf otime (rnd-sample 8 '(wwww www ww w h w ww www))) (setf otime 1) ;; Group orchestration (setf grp1 '(1 1 0 0)) (setf grp2 '(1 1 1 0)) (setf grp3 '(1 1 1 1)) (setf grp4 '(1 0 1 1)) (setf grp5 '(0 0 1 1)) (setf grp6 '(1 1 0 1)) (setf grp7 '(1 0 1 1)) (setf i-list '(grp1 grp2 grp3 grp4 grp5 grp6 grp7)) (setf orchestration (rnd-sample olen i-list)) (setf orch-proc1 (binary-invert (apply-eval orchestration))) (setf instrumentation (matrix-transpose orch-proc1)) (do-timeline2 '(flute oboe clarinet bassoon) instrumentation '(gen-pause x) :time otime) (setf ts (get-time-signature flute)) (def-score group-orch-example (:title "Group orch example " :composer "S.Boussuge" :copyright "2017 s.boussuge " :key-signature 'chromatic :time-signature ts :tempo 88 :layout (list (bracket-group (flute-layout 'flute) (oboe-layout 'oboe) (clarinet-layout 'clarinet) (bassoon-layout 'bassoon)))) (flute :omn flute :channel 1 :sound 'gm :program 'flute :volume 95 :pan 70 :controllers (91 '(52))) (oboe :omn oboe :channel 2 :sound 'gm :program 'oboe :volume 95 :pan 54 :controllers (91 '(55))) (clarinet :omn clarinet :channel 3 :sound 'gm :program 'clarinet :volume 95 :pan 60 :controllers (91 '(57))) (bassoon :omn bassoon :channel 4 :sound 'gm :program 'bassoon :volume 95 :pan 70 :controllers (91 '(57))) ) SB. Group & Orchestration.opmo
40. 1 point

## Randomize Materials?

Thanks a lot Stephan! I will check out these functions. Just to mention, I am composing a piece for my dissertation (PhD) for Alto flute and Electronics (MaxMSP). Already the random functions have helped me a lot to put down some ideas fast. Looking forward to learning more about OMN when I will be done with school. Is there any chance that you will provide online tutorials (step-by-step - easy!) based on subscription? Like Lynda.com or MacProVideos? Although private lesson are great for more advanced users, I believe that having online database/resources would benefit many academic students and faculty members. I had this discussion with fellow graduate students and professors at near by universities. just food for thought for expanding this useful piece of software...! Have a nice day, and thanks again!
41. 1 point

## Automatic Cross Staff Piano Layout

Good solution indeed
42. 1 point

## Automatic Cross Staff Piano Layout

If the LH and RH pitches are placed correctly then I would use piano-layout: (def-score grand (:key-signature 'atonal :time-signature '(2 8) :tempo 130 :octave-shift '(c2 c6) ;:flexible-clef t :layout (piano-layout 'rh 'lh)) (lh :omn '(e g1 g3) :channel 1 :sound 'gm :program 0) (rh :omn '(e g3 c6)) )
43. 1 point

## Automatic Cross Staff Piano Layout

here only c6 is in the treble clef. (def-score grand (:key-signature 'atonal :time-signature '(2 8) :tempo 130 :octave-shift '(c2 c6) :flexible-clef t :layout (grand-layout 'pno)) (pno :omn (merge-voices '((e g3 c6) (e g1 g3))) :channel 1 :sound 'gm :program 0) )
44. 1 point

## Automatic Cross Staff Piano Layout

Is this what you are looking for: (setf sine (gen-sine 120 1 '(0.5 0.2 0.1) :phase 60)) (setf vec (add-sine-waves 4 120 4 0.6 :modulation sine)) (setf mat (vector-to-pitch '(g2 g7) vec)) (setf divide (gen-divide 6 mat)) (setf div1 (gen-collect 3 divide)) (setf div2 (gen-collect 3 divide :remain t)) (setf pich1 (rnd-octaves '(g2 b7) div1)) (setf pich2 (rnd-octaves '(c2 g7) div2)) (setf pitch (gen-mix pich1 pich2 :flatten t)) (setf velocity (rnd-sample 120 '(pp mp mf ff))) (setf omn1 (make-omn :length (rnd-sample 120 '(s -)) :pitch pich1 :velocity velocity :span :pitch)) (setf omn2 (make-omn :length (rnd-sample 120 '(s -)) :pitch pich2 :velocity velocity :span :pitch)) (def-score grand (:key-signature 'atonal :time-signature '(3 8) :tempo 130 :octave-shift '(c2 c6) :accidentals :all :layout (grand-layout 'pno)) (pno :omn (merge-voices omn1 omn2) :channel 1 :sound 'gm :program 0) ) Note: Accidentals types: :accidentals :all :accidentals :natural :accidentals :cautionary The :all-accidentals t is not correct.
45. 1 point

## Opusmodus 1.2.22724

Optimisation to DO-TIMELINE. MIDI and frequency (partials) conditions. New compact timeline in DO-TIMELINE and DO-TIMELINE2 Example: (do-timeline '( piccolo (---xxxxxxx xxxxxx---- xxx------- xxxxxx---- ---------- xxxxxxx--- ---xxxxxxx xx) flute (--xxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxxxx---- ---------- xxxxxxxxxx xxxxxxxxxx xx) alto-flute (--xxxxxxxx xxxxxxxxxx xxxxxxxxxx xxxx------ ---------- ---x--xxxx xxxxxxxxxx xx) oboe1 (xx----xxxx xxxxxx---- xxxxxxxxxx ---xxx---- ---------- xxxxxxxxxx xxxxxxxxxx xx) oboe2 (xxxxxxxxxx xxxxxxxxx- xxxxxxxxxx ---xx----- ---------- xxxxxxxxxx xxxxxxxxxx xx) cor-anglais (xxxxxxxxxx xxxxxx---- xxxxxxxxxx ---xx----- ---------- xxxxxxxxxx xxxxxxx-xx xx) clarinet1 (xxx------- xxxxxx---- --xxxxxxxx ---xxx---- ---------- xx-------- --------xx xx) clarinet2 (xxxxxxxxxx xxxx------ xxxxxxxxxx ---xxx---- ---------- ---------- --------xx xx) clarinet3 (xxxxxxxxxx xxxx------ xxxxxxxxxx ---------- ---------- ---------- --------x- --) bass-clarinet (xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx x--------- ---------- xxxx--xxxx xxxxxxxxxx xx) bassoon1 (xxxxxxxxxx ---------- xxxxxxxxxx ---xxx---- ---------- ---------- --------xx xx) bassoon2 (xxxxxxxxxx xx-------- xxxxxxxxxx -x-------- ---------- ---------- -------x-- --) contrabassoon (xxxxxxxxxx xxxx------ xxxxxxxxxx xx-------- ---------- ---------- ------xx-- --) horn1 (x--------- xxxxxxxx-- ---------- xxxxxxxxxx ---------- ---------- ---------- --) horn2 (xxxx------ xxxxxxxxxx xxxxxxxxxx xx-x------ ---------- ---------- -------xxx --) horn3 (xxxxxx---- xxxxxxxxxx xxxxxxxxxx xx-xxx---- ---------- ---------- -------xxx xx) horn4 (xxxxxx---- xxxxxxxxxx xxxxxxxxxx xx-x------ ---------- ---------- --------xx --) trumpet1 (xxxxxx---- ---xxxxx-- ---------- ---xxx---- ---------- xxxx----xx xxxxxx--xx xx) trumpet2 (xxx--x---- ---xxxxx-- xxxxxxxxxx ---xxx---- ---------- xxxx----xx xxxx----xx xx) trumpet3 (---------- x--xxxxxxx xxxxxxxxxx ---xxx---- ---------- xxxxxxxxxx xxxxxx--xx xx) bass-trumpet (xxxx------ x--------- ---------- x--xxx---x ---------- --------xx xxxxxxx-xx xx) trombone (------xxxx xxxxxxxxxx ---------- x-xxxxxx-x ---------- ---------- ---xxxx--- --) tenor-tuba (---------- xxxxxxxxxx ---xxxxxxx x--------- ---------- ---------- ---xxxx--- --) bass-tuba (xxxxxx---x xx---xxxxx xxxxxxxxxx x--------- ---------- ---------- ---xxxx--- --) harp-lh (xxxxxxxxx- xxxxxxxxxx xx-xxxxxxx xx-xxx-x-x ---------- xxxxxx-xxx xxxxxxxxxx xx) harp-rh (xxxxxxxxxx xxxxxxxxxx xx-xxxxxxx xx-xxx-x-x ---------- xxxxxx-xxx xxxxxxxxxx xx) violin1 (xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx -xxxxxxxxx ---------- ---------- --------xx xx) violin2 (xxxxxxxxxx xxxxxxxxxx xxx------x xxxxxxxxxx ---------- ---------- --------xx xx) viola (xxxxxxxxxx xxxxxxxxxx xxxxxx-xxx xxxx--xxxx ---------- ---------- --------xx xx) violoncello (xxxxxxxxxx xxxxxxxxxx xxxxxxxxxx xx-x--xxxx ---------- ---------- --------xx xx) contrabass (xxxxxx---x xxxxxxxxxx xxxxxxxxxx xx-x--xx-- ---------- xxxxxxx-xx -xx-xx-xxx xx) ) '(gen-pause x)) Binary example: (do-timeline '( piccolo (0001111111 1111110000 1110000000 1111110000 0000000000 1111111000 0001111111 11) flute (0011111111 1111111111 1111111111 1111110000 0000000000 1111111111 1111111111 11) alto-flute (0011111111 1111111111 1111111111 1111000000 0000000000 0001001111 1111111111 11) oboe1 (1100001111 1111110000 1111111111 0001110000 0000000000 1111111111 1111111111 11) oboe2 (1111111111 1111111110 1111111111 0001100000 0000000000 1111111111 1111111111 11) cor-anglais (1111111111 1111110000 1111111111 0001100000 0000000000 1111111111 1111111011 11) clarinet1 (1110000000 1111110000 0011111111 0001110000 0000000000 1100000000 0000000011 11) clarinet2 (1111111111 1111000000 1111111111 0001110000 0000000000 0000000000 0000000011 11) clarinet3 (1111111111 1111000000 1111111111 0000000000 0000000000 0000000000 0000000010 00) bass-clarinet (1111111111 1111111111 1111111111 1000000000 0000000000 1111001111 1111111111 11) bassoon1 (1111111111 0000000000 1111111111 0001110000 0000000000 0000000000 0000000011 11) bassoon2 (1111111111 1100000000 1111111111 0100000000 0000000000 0000000000 0000000100 00) contrabassoon (1111111111 1111000000 1111111111 1100000000 0000000000 0000000000 0000001100 00) horn1 (1000000000 1111111100 0000000000 1111111111 0000000000 0000000000 0000000000 00) horn2 (1111000000 1111111111 1111111111 1101000000 0000000000 0000000000 0000000111 00) horn3 (1111110000 1111111111 1111111111 1101110000 0000000000 0000000000 0000000111 11) horn4 (1111110000 1111111111 1111111111 1101000000 0000000000 0000000000 0000000011 00) trumpet1 (1111110000 0001111100 0000000000 0001110000 0000000000 1111000011 1111110011 11) trumpet2 (1110010000 0001111100 1111111111 0001110000 0000000000 1111000011 1111000011 11) trumpet3 (0000000000 1001111111 1111111111 0001110000 0000000000 1111111111 1111110011 11) bass-trumpet (1111000000 1000000000 0000000000 1001110001 0000000000 0000000011 1111111011 11) trombone (0000001111 1111111111 0000000000 1011111101 0000000000 0000000000 0001111000 00) tenor-tuba (0000000000 1111111111 0001111111 1000000000 0000000000 0000000000 0001111000 00) bass-tuba (1111110001 1100011111 1111111111 1000000000 0000000000 0000000000 0001111000 00) harp-lh (1111111110 1111111111 1101111111 1101110101 0000000000 1111110111 1111111111 11) harp-rh (1111111111 1111111111 1101111111 1101110101 0000000000 1111110111 1111111111 11) violin1 (1111111111 1111111111 1111111111 0111111111 0000000000 0000000000 0000000011 11) violin2 (1111111111 1111111111 1110000001 1111111111 0000000000 0000000000 0000000011 11) viola (1111111111 1111111111 1111110111 1111001111 0000000000 0000000000 0000000011 11) violoncello (1111111111 1111111111 1111111111 1101001111 0000000000 0000000000 0000000011 11) contrabass (1111110001 1111111111 1111111111 1101001100 0000000000 1111111011 0110110111 11) ) '(gen-pause x)) best wishes, JP
46. 1 point

47. 1 point

## muting every other note

code from another project, but should work in a similar way. take it, modify it, or code it properly :-) regards andré ;; gen-hoquetus.4 https://en.wikipedia.org/wiki/Hocket ;;; andré meier / 27-4-2016 ;;; write a instrumentation-list (instrument + techniques + velocity), pitch-list ;;; and length-list. the gen-hoquetus-function will split the melody ;;; off... in any possibilities, techniques/articulations/velocities will be added ;;; this is only a function i coded for my actual work... perhaps you could use ;;; it or code it properly :-) ;;; HAVE FUN! regards, andré (setq instrumentation '(((pno ponte ppp)) ((vn pizz p)) ((vn pizz f) (va ponte f)) ((pno tasto ff)) ((pno pizz fff)) ((vn tasto mf) (pno ord ff) (vc tasto mf) (trp ord pp)) ((trp mute pp) (vn ponte mf)))) ;; subfunctions (defun generate-events.4 (durations pitches &key (velocity '(mf)) (articulation '(-)) (optional_data 'nil)) (loop repeat (length durations) with cnt-d = 0 with cnt-rest = 0 when (> (nth cnt-d durations) 0) collect (list (nth cnt-d durations) (nth cnt-rest pitches) (nth cnt-rest velocity) (nth cnt-rest articulation) (nth cnt-rest optional_data)) and do (incf cnt-rest) and do (incf cnt-d) else collect (list (nth cnt-d durations) 'nil 'nil 'nil 'nil) and do (incf cnt-d))) (generate-events.4 '(1 2 -3 4) '(60 61 62) :optional_data instrumentation) ;; (defun filtering-color.4 (selected-color event-stream) (loop for i in event-stream with match = 0 append (loop for x in (fifth i) when (equal (first x) selected-color) do (setq articulation (second x) velocity (third x)) and do (setq match 1)) when (and (= match 1) (> (first i) 0)) append (list (first i) (second i) velocity articulation) else collect (* -1 (abs (first i))) do (setq match 0))) (filtering-color.4 'vn (generate-events.4 (gen-length '(1 -100 2 3 4 5) 1/32) '(c4 d4 e4 e5) :optional_data instrumentation)) ;; mainfuction: (defun gen-hoquetus.4 (filtered-instrument &key pitch length instrument-list) (let ((events (generate-events.4 length pitch :optional_data instrument-list))) (filtering-color.4 filtered-instrument events))) (gen-hoquetus.4 'vn :pitch '(c4 d4 e5 f6) :length '(1/32 2/32 3/32 4/32) :instrument-list instrumentation) ;; OMN_EXAMPLE: (setq pitches (midi-to-pitch '(60 61 62 63 64 65 66 67 68 69 70))) ; only an example (setq lengths (gen-length '(1 2 3 -4 5 6 5 -4 3 -2 1) 1/16)) ; only an example (setq instrumentation (loop repeat 10 collect (rnd-pick '(((pno ponte ppp)) ; only an example ((vn pizz p)) ((vn pizz f) (va ponte f)) ((pno tasto ff)) ((pno pizz fff)) ((vn tasto mf) (pno ord ff) (vc tasto mf) (trp ord pp)) ((trp mute pp) (vn ponte mf)))))) (def-score hoquetus.4 (:key-signature '(c maj) :time-signature '(4 4) :tempo '(120) :layout (bracket-group (trumpet-layout 'trumpet) (piano-grand-layout 'piano) (violin-layout 'violin) (viola-layout 'viola) (violoncello-layout 'violoncello))) (trumpet :omn (gen-hoquetus.4 'trp :pitch pitches :length lengths :instrument-list instrumentation) :channel 1) (piano :omn (gen-hoquetus.4 'pno :pitch pitches :length lengths :instrument-list instrumentation) :channel 1) (violin :omn (gen-hoquetus.4 'vn :pitch pitches :length lengths :instrument-list instrumentation) :channel 1) (viola :omn (gen-hoquetus.4 'va :pitch pitches :length lengths :instrument-list instrumentation) :channel 1) (violoncello :omn (gen-hoquetus.4 'vc :pitch pitches :length lengths :instrument-list instrumentation) :channel 1))
48. 1 point

## After The Club for Piano

Hi, here's a quiet speed piece playing around the jazz piano ;-) SB.
×