
 			 Haskore Music System
			 --------------------

This is a revised and extended version of Haskore from

  http://darcs.haskell.org/haskore/

which evolved from the February 2000 release, available from:

  http://haskell.org/haskore/


 - music can be composed by programming Haskell
 - the music is output into MIDI files, CSound, or SuperCollider,
   or even rendered to an audio stream with http://darcs.haskell.org/synthesizer/
 - CSound instruments can generated by programming Haskell, as well

 - all modules can be used with GHC,
   and many of them with Hugs

For more details, refer to the Tutorial.


There are two ways for installation, both are deficient. :-(

1. Use the Makefile, but adapt the contained paths to your local requirements.

$ make        # compile all modules
$ make doc    # creates Haddock documentation
$ make pdf    # creates the PDF tutorial

$ make ghci   # make some music
or
$ make hugs
...
*Main> :load Haskore.Interface.CSound.Tutorial
...
*Haskore.Interface.CSound.Tutorial> test tut13
...
*Main> :load Haskore.Interface.MIDI.Render Haskore.Example.ChildSong6
...
*Haskore.Interface.MIDI.Render> playTimidity Haskore.Example.ChildSong6.song
...

When SuperCollider and JACK are available, but not currently running,
start 'jack' with

$ make jack

and SuperCollider with

$ make supercollider

or both together

$ make scj

If scsynth is running, then start Haskore (make ghci):

*Main> :load Haskore.Interface.SuperCollider.Example
...
*Haskore.Interface.SuperCollider.Example> play glissando
...
*Haskore.Interface.SuperCollider.Example> play chillOut
...

*Main> :load Haskore.Interface.SuperCollider.Play.Life
...
*Haskore.Interface.SuperCollider.Play.Life> sawPerc <- installInstr0 "saw percussion" Example.sawPercUGen
*Haskore.Interface.SuperCollider.Play.Life> playKeyboard sawPerc

Then hit some keys.
However, this will only work as expected on a German keyboard.
Adapt the string germanKeyboard for your needs.


2. Use Cabal.

Unfortunately there is no easy way to split the Haskore package,
while managing it as one big unit.
There are some modules which do not run with Hugs,
some that require the SuperCollider wrapper Hsc.

If you don't have installed SuperCollider and the Haskell wrapper
 - remove the Hsc dependency and comment out SuperCollider files from Haskore.cabal
 - download the wrapper from 
     http://www.slavepianos.org/rd/f/409875/
   Be aware, that this is all highly experimental stuff
   and subject to changes.
   More stable are
     http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hosc-0.1
     http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsc3-0.1


$ ./Setup.lhs configure --user
$ ./Setup.lhs build
$ ./Setup.lhs haddock
$ ./Setup.lhs install




Send requests, questions and comments to
   the original author of Haskore: Paul Hudak <paul.hudak@yale.edu>
   and the reviser: Henning Thielemann <haskore@henning-thielemann.de>
   and for more discussion: http://lists.lurk.org/mailman/listinfo/haskell-art
