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
