-
Posts
814 -
Joined
-
Last visited
Reputation Activity
-
JulioHerrlein reacted to Avner Dorman in Negative Harmony Function
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 :-)
-
JulioHerrlein got a reaction from TomTolleson in Negative Harmony Function
Dear Tom,
Looks great ! Sometimes we find excellent stuff just by accident. I love when this happens !
Actually, as I said before, the negative harmony is sligthly different from just the inversion of the pitch.
In your inversion, the pitch axis is the first note a4, so all the inversion operation is based in that first note.
In the negative harmony, the axis lies between two notes and have some tonal orientation, i.e., it´s a kind of mapping that changes according to each tonality. For example, the mapping corresponding to the C center would be like:
So, the "negative version" of your melody below:
a4 g4 fs4 a4 d5 a4 fs5 d5 a5 fs5 e5 d5
would be, according to the graph above:
Bb C Db Bb F Bb Db F Bb Db Eb F.
Please, check the first video of the post, it´s very pedagogical.
Probably Stephane will have a solution. The keyword is MAPPING. Maybe pattern substitution, pattern match, but a function where the octaves are relatives.
All the best !
Julio
-
JulioHerrlein got a reaction from Stephane Boussuge in Session 6 - 20.06.20 - From Nothing (Part 2)
Thank you, Stephane ! Very nice presentation !
Best,
Julio
-
JulioHerrlein reacted to Stephane Boussuge in Session 6 - 20.06.20 - From Nothing (Part 2)
Hi folks,
here's the file from the last session.
Happy study !
Stéphane
FromNothingSuite-20-06-2020.opmo
-
JulioHerrlein reacted to Jorgalad in Different Voice for one note in a Chord
Wow that is some stellar work, I do play guitar but I mainly compose on piano will send this along to my guitar playing friends, seems like a very valuable source.
I already had some new things to learn in the first few lines of your provided example so I had a productive day yesterday.
I have no doubt that you're familiar with these, but for others that might be interested, I found some useful tools for PCS analysis as well as a nice explanation on the subject.
https://www.fransabsil.nl/htm/toneset.htm#toneset_userguidelines
https://www.mta.ca/pc-set/pc-set_new/pages/introduction/toc.html
-
JulioHerrlein reacted to opmo in Opusmodus 2.0.25787
2.0.25787
– New functions:
MICROPOLYPHONY MICRO-QUANTIZE MAKE-BINARY COLLATZ-SEQUENCE ULAM-SPIRAL-ARRAY ZIGZAG-ARRAY
– Key shortcut changes:
Utilities Search: control-option-F
Navigator Search: control-shift-F
At the moment we have two versions of Opusmodus, one for macOS 10.15 (Catalina) and one for macOS 10.9 - 10.14 due to Apple Xcode bug.
Therefore use the Forums Download link, which you find in the Forums menu.
In the HowTo Score section you will find a few new examples to play with:
HowTo Score/Polyphony/Micropolyphony 1.opmo
HowTo Score/Polyphony/Micropolyphony 2.opmo
HowTo Score/Rhythm/Rhythm.opmo
-
JulioHerrlein reacted to opmo in OMN articulation Customization
The key switches, cc etc... you will find in your Virtual Instrument Manuals.
-
JulioHerrlein reacted to Stephane Boussuge in OMN articulation Customization
look docs for add-program-attributes function and add-text-attributes.
SB.
-
JulioHerrlein reacted to opmo in OMN articulation Customization
There is no nail-scrape articulation (symbol) in the musicxml but you can create your own text attribute for that.
How to create user text attribute check the System Library documents.
-
JulioHerrlein reacted to Stephane Boussuge in Combination without repeating elements
Why not using combination in place of combination2 ?
SB.
-
JulioHerrlein reacted to LdBeth in Combination without repeating elements
There's a count-repeat function.
? (count-repeat '(a3 b3 b3 b3)) count-repeat (1 3)
Thus
(let ((*do-verbose* nil)) (remove-if (lambda (x) (> (apply #'max (count-repeat x)) 1)) ;; or replace apply with (reduce #'max (count-repeat x)), essentially does the same (combination2 4 '(c3 d3 e3 f3 g3 a3 b3)))) ((a3 b3 a3 b3) (g3 b3 a3 b3) (f3 b3 a3 b3) (e3 b3 a3 b3) (d3 b3 a3 b3) (c3 b3 a3 b3) (b3 g3 a3 b3) (a3 g3 a3 b3) (f3 g3 a3 b3) (e3 g3 a3 b3) (d3 g3 a3 b3) (c3 g3 a3 b3) (b3 f3 a3 b3) (a3 f3 a3 b3) (g3 f3 a3 b3) (e3 f3 a3 b3) (d3 f3 a3 b3) (c3 f3 a3 b3) (b3 e3 a3 b3) (a3 e3 a3 b3) (g3 e3 a3 b3) (f3 e3 a3 b3) (d3 e3 a3 b3) (c3 e3 a3 b3) (b3 d3 a3 b3) (a3 d3 a3 b3) (g3 d3 a3 b3) (f3 d3 a3 b3) (e3 d3 a3 b3) (c3 d3 a3 b3) (b3 c3 a3 b3) ...
-
JulioHerrlein got a reaction from Stephane Boussuge in Couleurs du temps présent pour Flute et Piano
Very nice ! Some Messiaen touch.
-
JulioHerrlein reacted to Stephane Boussuge in Couleurs du temps présent pour Flute et Piano
Here's a new piece made in Opusmodus.
The pdf itself is raw output of Opusmodus, I've just added Title, name etc... with PdfExpert software.
Enjoy.
SB.
CouleursDuTempsPourFluteEtPiano.pdf
-
JulioHerrlein reacted to opmo in Parametric Music Composition with Opusmodus
The Karajan Music Tech Conference is a cross-industry networking event in a creative environment.
Parametric Music Composition with Opusmodus
presentation by Stéphane Boussuge
-
-
JulioHerrlein got a reaction from Jorgalad in Giant Steps Improvisation generator
Thanks for editing the file, Janusz !
Here is some Giant Steps in 12 keys !
Best !
Julio
-
-
JulioHerrlein got a reaction from lviklund in Giant Steps Improvisation generator
Thanks for editing the file, Janusz !
Here is some Giant Steps in 12 keys !
Best !
Julio
-
JulioHerrlein reacted to opmo in Giant Steps Improvisation generator
Same as above with corrections to the renamed function.
giant-steps-vl-improv.opmo
-
-
JulioHerrlein reacted to o_e in Giant Steps Improvisation generator
Just tried your code, it does not compile, I had to change some 'chord-closest-path' into 'closest-path' and add some setf's, then it worked. Maybe you want to correct it..?
best
ole
-
JulioHerrlein reacted to o_e in harmonic-path
Thanks for the answers!
My starting point was the video from Jorvd and he don't uses the :time parameter at all, that was confusing me.
@Julio: thanks for the example, I will look into that!
-
JulioHerrlein reacted to opmo in harmonic-path
(setf mat '((s c4 cs4 gs4 eb4 d4 g4 fs4 a4 e4 bb4 b4 f4) (s c4 d4 eb4 bb4 f4 g4 a4 fs4 b4 e4 gs4 cs4) (s c4 a4 g4 cs4 fs4 b4 f4 eb4 e4 gs4 d4 bb4) (s c4 b4 bb4 f4 e4 d4 cs4 eb4 gs4 fs4 a4 g4) (s c4 gs4 d4 cs4 g4 f4 fs4 eb4 a4 b4 bb4 e4) (s c4 d4 bb4 e4 g4 a4 fs4 b4 eb4 gs4 f4 cs4) (s c4 gs4 cs4 fs4 b4 g4 eb4 f4 a4 d4 e4 bb4) (s c4 b4 fs4 e4 d4 cs4 f4 a4 eb4 bb4 gs4 g4) (s c4 eb4 cs4 g4 f4 gs4 d4 a4 b4 fs4 bb4 e4) (s c4 a4 eb4 fs4 gs4 f4 bb4 d4 b4 g4 e4 cs4) (s c4 cs4 g4 b4 gs4 e4 f4 fs4 d4 eb4 bb4 a4) (s c4 fs4 e4 eb4 cs4 f4 bb4 g4 a4 gs4 d4 b4))) (setf path '(fs4a4c5 a4c5e5 b4db5fs5)) (harmonic-path path mat :octave 'path :time '(1/2 3/4 4/4) :loop t) (harmonic-path path mat :octave 'path :time '(1/2 3/4 4/4) :loop nil)
The :time option controls the time (duration) of each path:
1st path fs4a4c5 for 1/3 2nd path a4c5e5 for 3/4 3rd path b4db5fs5 for 4/4
if loop is nil then the last value of the time list (4/4) will apply to each path (its duration): '(1/2 3/4 4/4 4/4 4/4 4/4 4/4 . . .)
if loop is set to t then the time list values will repeat again and again: '(1/2 3/4 4/4 1/2 3/4 4/4 1/2 3/4 4/4 . . .)
If you path is a list or one chord then there is no need for a loop option.
-
JulioHerrlein reacted to Stephane Boussuge in Generate gestures through midi input
I've made a video showing a prelude composition from originally midi imported material:
https://opusmodus.com/forums/videos/view-28-composing-a-piano-prelude/
As Julio mentionned before, Unfold is also another powerful way for variations.
Happy Opusmodusing !!
Stéphane
-
JulioHerrlein reacted to opmo in Score Examples
You find many examples in the Utilities panel in the 'Howto Score' and the 'Score Examples' section: