Discussion:
n-tuplets
a***@public.gmane.org
2007-04-02 07:46:53 UTC
Permalink
Hello, im just starting to look at this very interesting tool, and
trying some simple cases to get going.


First issue is how to control tuplets.

Fex, how can i make fomus "simplify" a 5/8 measure with 6 sixtuplets
as one group of six notes with a "6:5" (or "6") subdivision mark,
instead of a sequence of tied trioles?

(fomus
:output '(:data (:lilypond :view t))
:global (list (make-timesig :off 0 :time '(5 8) :beat 1/8))
:parts (list (make-part
:instr :flute
:events (loop repeat 6
for off from 0 by 5/6
collect
(make-note :off off :note 60 :dur 5/6)))))

Ive tried fiddling with various settings, :default-tuplet-divs and
:default-tuplets, :auto-quantize and such without luck.
Kilian Sprotte
2007-04-02 08:41:28 UTC
Permalink
Try this: :)

(fomus
:output '(:data (:lilypond :view t))
:max-tuplet-dur 5
:global (list (make-timesig :off 0 :time '(5 8) :beat 1/8))
:parts (list (make-part
:instr :flute
:events (loop repeat 6
for off from 0 by 5/6
collect
(make-note :off off :note 60 :dur 5/6)))))
Post by a***@public.gmane.org
Hello, im just starting to look at this very interesting tool, and
trying some simple cases to get going.
First issue is how to control tuplets.
Fex, how can i make fomus "simplify" a 5/8 measure with 6 sixtuplets
as one group of six notes with a "6:5" (or "6") subdivision mark,
instead of a sequence of tied trioles?
(fomus
:output '(:data (:lilypond :view t))
:global (list (make-timesig :off 0 :time '(5 8) :beat 1/8))
:parts (list (make-part
:instr :flute
:events (loop repeat 6
for off from 0 by 5/6
collect
(make-note :off off :note 60 :dur 5/6)))))
Ive tried fiddling with various settings, :default-tuplet-divs and
:default-tuplets, :auto-quantize and such without luck.
_______________________________________________
fomus-devel mailing list
http://common-lisp.net/cgi-bin/mailman/listinfo/fomus-devel
a***@public.gmane.org
2007-04-02 20:23:25 UTC
Permalink
Post by Kilian Sprotte
Try this: :)
That worked. Great!

Fomus seems to present a very important working-level between CM and
notation-clients, especially concerning quantization and voice-leading
algorithms.

I have a feeling my hands will get very wet with fomus-code in some
time, but for now ill send the questions to this group to look for
obvious answers etc.

Related to the recent posts about 3/8 meters: various books on
notation quarrel about how to notate tuplets, but some kinds of
n-tuplets in fomus turn out strange. Heres some code where durations
gradually get longer approaching one whole beat, but the note-values
vary wildly. Is this a bug or a feature? If a feature, how to
control which notated rhythmic values are chosen for particular
durations (inside fomus)?



(defun make-accel-measure (time beats)
;; fills 'beats' duration with 'beats+1' pulses
(loop with delta = (/ beats (1+ beats))
for off from time below (+ time beats) by delta
collect (make-note :off off :note 60 :dur delta)))


(let* ((measurebeats (loop for b from 1 to 9 collect b))
(offsets (loop with off = 0
for b in measurebeats
collect off
do (incf off b))))

(fomus
:verbose 2
:output '(:data (:cmn :process t) )
:auto-timesig-comp nil
:max-tuplet-dur 10
:default-beat 1/8
:global (loop for beats in measurebeats
for off in offsets
collect (make-timesig :off off :time (list beats 8)))
:parts (list (make-part
:instr :flute
:events (loop for beats in measurebeats
for off in offsets
nconc (make-accel-measure off beats))))))
David Psenicka
2007-04-02 21:20:56 UTC
Permalink
_______________________________________________
fomus-devel mailing list
fomus-devel-***@public.gmane.org
http://common-lisp.net/cgi-bin/mailman/listinfo/fomus-devel
David Psenicka
2007-04-02 21:02:32 UTC
Permalink
Many of these settings use a "beat" as a measurement, so changing the
beat value to 1/8 can drastically alter the output--Also, the
:max-tuplet-dur and :min-tuplet-dur settings do seem to get in the way
often (these settings and related ones have come quite up a few
times)--on my TODO list now is to find ways to replace some of the ones
that impose hard limits with more flexible + intuitive settings (any
suggestions are welcome!).

I'm about halfway through implementing a "preferred-tuplet-dur" setting
at the moment, but am thinking now that a "preferred duration" shouldn't
be tied to beat values but change dynamically with the context (meter,
rhythm, etc.)... A few other settings (and internal variables) rely on
beat values which I think should be changed eventually.

-DP
Post by Kilian Sprotte
Try this: :)
(fomus
:output '(:data (:lilypond :view t))
:max-tuplet-dur 5
:global (list (make-timesig :off 0 :time '(5 8) :beat 1/8))
:parts (list (make-part
:instr :flute
:events (loop repeat 6
for off from 0 by 5/6
collect
(make-note :off off :note 60 :dur 5/6)))))
Post by a***@public.gmane.org
Hello, im just starting to look at this very interesting tool, and
trying some simple cases to get going.
First issue is how to control tuplets.
Fex, how can i make fomus "simplify" a 5/8 measure with 6 sixtuplets
as one group of six notes with a "6:5" (or "6") subdivision mark,
instead of a sequence of tied trioles?
(fomus
:output '(:data (:lilypond :view t))
:global (list (make-timesig :off 0 :time '(5 8) :beat 1/8))
:parts (list (make-part
:instr :flute
:events (loop repeat 6
for off from 0 by 5/6
collect
(make-note :off off :note 60 :dur 5/6)))))
Ive tried fiddling with various settings, :default-tuplet-divs and
:default-tuplets, :auto-quantize and such without luck.
_______________________________________________
fomus-devel mailing list
http://common-lisp.net/cgi-bin/mailman/listinfo/fomus-devel
_______________________________________________
fomus-devel mailing list
http://common-lisp.net/cgi-bin/mailman/listinfo/fomus-devel
a***@public.gmane.org
2007-04-09 10:36:16 UTC
Permalink
D> Many of these settings use a "beat" as a measurement, so
D> changing the beat value to 1/8 can drastically alter the
D> output--Also, the :max-tuplet-dur and :min-tuplet-dur settings
D> do seem to get in the way often (these settings and related
D> ones have come quite up a few times)--on my TODO list now is to
D> find ways to replace some of the ones that impose hard limits
D> with more flexible + intuitive settings (any suggestions are
D> welcome!).

Suggestions might come when i get more into this tool, but isn't
(fomus ... (list (fomus ...) (fomus ...))) a start towards this?

"Intuitive settings" - sounds like 'musical' concepts: eighth,
sixteenth, triplet-sixteenth etc, no?

If the above structure allows for local settings of such parameters
(and adding local offset-times inside!) it would mimick cmn's
'section, which is a very convenient level to work with.

(fomus
:global-settings '(...)
(fomus :off 0 :local-settings '(...) (load "A.fms"))
(fomus :off 8 :local-settings '(...)
:events (generate-random-events :dur 12))
:output-file "B-overlap.fms")
(fomus :off 15 :local-settings '(...) (load "C.fms")))

How could the voice-leading algorithms handle abutted sections like
this?

D> I'm about halfway through implementing a "preferred-tuplet-dur"
D> setting at the moment, but am thinking now that a "preferred
D> duration" shouldn't be tied to beat values but change
D> dynamically with the context (meter, rhythm, etc.)... A few
D> other settings (and internal variables) rely on beat values
D> which I think should be changed eventually.

I find more often than not i use measures as a container which spans a
certain place in time, not necessarily with any 'metric significance
as such, especially when multiple rhythmic voices/layers are running
alongside each other. All choices fomus makes towards musical logic
are very useful as long as they can be overridden or made explicit at
the local level (= note).

Which classes to start to look at to make a 'measure class?

-anders
Rick Taube
2007-04-09 11:53:17 UTC
Permalink
ive wanted something like this too! ie a "chunk" or "gesture" I can
pass to fomus with much of the stuff already figured out. chunks more
closely reflects how i actually compute stuff, not note-to-note but,
well... in chunks!

(chunk :off 12
:notes (fm-spectrum ...)
:dur 2
:part 1)

so the actual rhythms here would be dur / length(spectrum)
if the :notes allowed lists of lists then sublists are "chords" etc.
it would be great if fomus could save them as chunks too...

--rick
Post by a***@public.gmane.org
I find more often than not i use measures as a container which spans a
certain place in time, not necessarily with any 'metric significance
as such, especially when multiple rhythmic voices/layers are running
alongside each other. All choices fomus makes towards musical logic
are very useful as long as they can be overridden or made explicit at
the local level (= note).
Which classes to start to look at to make a 'measure class?
-anders
_______________________________________________
fomus-devel mailing list
http://common-lisp.net/cgi-bin/mailman/listinfo/fomus-devel
David Psenicka
2007-04-09 20:40:53 UTC
Permalink
Post by a***@public.gmane.org
"Intuitive settings" - sounds like 'musical' concepts: eighth,
sixteenth, triplet-sixteenth etc, no?
These could change as often as the "beat" though from piece to piece...
So settings that depend on note dur. values might still have to be
tweaked for each piece... I think fomus should just get tuplets right
(usually) without any input from the user (but still allow adjustments
afterwards)--so there needs to be a function that looks at the duration
of a measure, the time signature, dur. values, etc. and figures out what
is appropriate for that measure... I'll have to dig around in some
notation books to see if there's anything on suggested tuplet sizes
Post by a***@public.gmane.org
If the above structure allows for local settings of such parameters
(and adding local offset-times inside!) it would mimick cmn's
'section, which is a very convenient level to work with.
(fomus
:global-settings '(...)
(fomus :off 0 :local-settings '(...) (load "A.fms"))
(fomus :off 8 :local-settings '(...)
:events (generate-random-events :dur 12))
:output-file "B-overlap.fms")
(fomus :off 15 :local-settings '(...) (load "C.fms")))
How could the voice-leading algorithms handle abutted sections like
this?
The "chunks" that I have half-implemented right now should let you do
exactly this (the point is to allow different sections of a score to be
computed with different settings), and with local offset times--right
now the voice-leading algorithms (or note spelling, etc.) don't really
work across chunk-boundaries, but that will be fixed eventually.
Post by a***@public.gmane.org
D> I'm about halfway through implementing a "preferred-tuplet-dur"
D> setting at the moment, but am thinking now that a "preferred
D> duration" shouldn't be tied to beat values but change
D> dynamically with the context (meter, rhythm, etc.)... A few
D> other settings (and internal variables) rely on beat values
D> which I think should be changed eventually.
I find more often than not i use measures as a container which spans a
certain place in time, not necessarily with any 'metric significance
as such, especially when multiple rhythmic voices/layers are running
alongside each other. All choices fomus makes towards musical logic
are very useful as long as they can be overridden or made explicit at
the local level (= note).
Which classes to start to look at to make a 'measure class?
There's no user measure class, just a time signature class--I could add
a provision for specifying the start of a measure without having to
specify a time signature (it would also have to prevent fomus from
automatically making more measures)
Post by a***@public.gmane.org
(chunk :off 12
:notes (fm-spectrum ...)
:dur 2
:part 1)
so the actual rhythms here would be dur / length(spectrum)
if the :notes allowed lists of lists then sublists are "chords" etc.
it would be great if fomus could save them as chunks too...
--rick
I can add something like this--I'll have to make it as flexible as
possible, or maybe offer different types of chunks (maybe the user wants
one note/chord and a list of rhythms, etc..), or rhythm chunks that can
be merged with note chunks or "mark" chunks

Loading...