i'm a excited beginner with OM!
Just exploring and modifying the turotials.
What would be a good approach to sort the notes which are generated from the snippet below to, say, a scale.
In other words: The outoot below is chromatic. How can i turn it into a scale, eg. d-phrygian)
(setf size 60) (setf vector (gen-sine size 1 '(0.5 0.4 0.3 0.6) :modulation (gen-sine size 1 0.3 :phase 180))) (setf pitchvec (vector-to-pitch '(g1 g6) vector))
The function LENGTH-DIVIDE and friends are a useful device for introducing some rhythmic variation to some material. However, when the processed sequence is a full OMN expression (see example below), then the added notes cause all other parameters to shift forward (additional parameters are added at the end by looping). For introducing only a slight variation to some existing material (e.g., motif) these functions are therefore not so useful, because this shift of all parameters to basically "fill" the new added notes with pitches etc. greatly change the varied material for a listener.
(length-divide 1 2 '(q f3 leg+m1 q ab3 leg e c4 leg bb3 leg ab3 leg g3))
Basically, this is the opposite situation of the situation addressed by swallowing. Swallowing (e.g., with GEN-SWALLOW and the swallow argument of many other functions) avoids the shift of parameters like pitch etc. that would result from removing notes and turning them into rests. For addressing the situation above properly we would need something like the opposite of swallowing, some way to fill in parameters like pitch etc. for new notes to avoid shifting existing notes. I hope my explanation makes sense and you can see why something like the opposite of swallowing would be useful for functions that add notes to some input material.
Now, the tricky question is of course, what parameters (pitch etc.) should be added in such cases. Musically useful and common in the classical literature would be, e.g., repeating the parameters (pitch etc.) of the predecessor note (though that might be a bit too simplistic and annoying at times) or somehow interpolating some pitch gap between the previous and next note with a little scale or arpeggio and only repeating the other parameters like articulations (resulting in some variation that is likely most similar to the input material, so it would be good to have that as an option). If the pitch interval between the two original notes is too small to add some pitch in between for the new now (or as an option in general for variety), it would also be good to add some ornamentation (e.g., using PITCH-ORNAMENT), but for a close similarity between the original material and the variation it would be best as an option to apply such ornamentation only to the newly added notes, not all notes. Of course, other options could also be useful for variations that vary the input material a bit more strongly, e.g., some random pitch for the new notes within certain interval bounds.
Does some function that kind of is the opposite of GEN-SWALLOW in that it adds parameters like pitches for subdivided rhythmic values (to avoid the shifting) sound like a good idea?
The idea with the interpolation of gaps could be implemented by turning the original duration values and pitches into some envelope and then reading that envelope with the new rhythmic values. So, that is rather strait forward. However, that would not allow for some ornamentation, because such algorithm would not recognise which notes are new that should be ornamented.
Any other idea perhaps? Thanks!
In the jazz world, Barry Harris came up with the idea of harmonizing a bebop scale.
Combining a C6 (C, E, G, A) and a Bdim7 (B, D, F, Ab) chords, we have this scale:
From this stantpoint we can alternate tonic and dominant sounds, like this:
Every pair of chords have all the 8-note set.
The notes C,E, G and A are always harmonized with a C6 chord.
The notes D, F, Ab and B are always harmonized with a Bdim7 chord.
So, from the point of view of sets, there is no problem.
WHAT IS NEEDED:
I want a way to start FROM the melody, and then make a four part block harmonization with this (or any other) harmonic system
from the melody as an OMN expression.
So, I need a way to filter the notes to aply the right chord:
For the notes C, E, G and A
If the note is an C (in any register), I will apply a chord like , I will add the notes A, G and E, below the melody.
If the note is an (in any register), I will apply a chord like , I will add the notes G, E and C, below the melody.
And so on...
For the notes D, F, Ab and B:
If the note is an B (in any register), I will apply a chord like , I will add the notes Ab, F and D, below the melody.
And so on:
So, to make any procedure:
I need first find a way to apply a specific procedure only over the notes I want, over all the C notes, all the B notes, etc.
How to filter from an OMN expression ?
All the best !