Update,

Now it builds. And I've added rendering to midi files it can be found
in stand alone package 'temporal-music-notation-demo'.

[1] http://hackage.haskell.org/package/temporal-music-notation-demo

2011/2/20 Anton Kholomiov <[email protected]>

> Hi,
>
> I'm glad to announce first release of temporal-music-notation
> library [1]. It provides composable score representation,
> microsound tunings, flexible pitch and volume control.
>
> This library provides two kinds of musical structures.
> First is general Score representation. It tells how to
> combine musical things together and how they can be
> transformed. Second is just the opposite side of first one,
> it stands for very basic musical structures like Pitch,
> Scale, Tone, Volume.
>
> What's interesting about library?
>
> Score composition
>
> Score is rendered to list of events with fixed
> time and duration (it's value that happens and lasts
> for some time).
>
> This module is built on top of 'temporal-media' package [2].
> Basic api is borrowed from haskore but rendering is
> different. All structure functions (like line, chord, stretch)
> are rendered as linear transformations of note's
> time and duration attributes. It allows to compose
> transformations on notes while descending along
> the branches of Score tree. fmap's are composed too,
> so something like fusion is going on.
>
> Basic types (Pitch, Tone, Scale, Volume, Level)
>
> Tone is 2d integer with bend double value. Scale
> allows Tone to Frequency conversion. Scale is vector
> of multipliers, octave interval, and frequency of base
> tone (some tone specified as anchor on frequency domain).
> Tone is parameterised with type level natural number,
> which tells how many tones are packed in one octave.
> Another candidate for this is Enum + Bounded but then
> you have to specify names for each note. Maybe it's
> better solution.
>
> With this I've run into problem and need help.
> ghc-7 on hackage rejects my library with this error.
>
> Context reduction stack overflow; size = 21
> Use -fcontext-stack=N to increase stack size to N
>
> And produces long list of NaturalNumber deduction.
> It builds on ghc-6.12.3 though.
>
> Scales
>
> I've translated many scales from 'music and math' book.
> It includes scales by Pythagoras, Paul Hindemith, Wendy Carlos,
> Bohlen-Pierce, Sruti scale (rejected by ghc-7 though).
>
> Western music tradition
>
> This library tries to be general so I've collected
> names specific to western music in another package
> 'temporal-music-notation-western'[3]. It depends on
> this library and it's rejected by hackage's ghc-7 too.
>
> Examples
>
> Library is general but only one sound producing
> front-end is available for now. It's csound code
> generator 'csound-expression'[4]. Examples can be
> found in source package of 'temporal-music-notation'
> package.
>
> Performance
>
> It's slow. I've come to first solution week before and it
> was slower. I've changed score rendering mechanism, I've
> noticed that I'm doing a lot of 'fmap f . fmap g' things
> and decided to try GADTs fusion. It's faster now but
> slow still. It was faster without general tones and scales.
> Can extensive usage of type level natural numbers be the
> source of inefficiency?
>
> [1] http://hackage.haskell.org/package/temporal-music-notation
> [2] http://hackage.haskell.org/package/temporal-media
> [3] http://hackage.haskell.org/package/temporal-music-notation-western
> [4] http://hackage.haskell.org/package/csound-expression
>
_______________________________________________
haskell-art mailing list
[email protected]
http://lists.lurk.org/mailman/listinfo/haskell-art

Reply via email to