[(1,A) is now mapped to 440 Hz by all back-ends
haskore@henning-thielemann.de**20040914222113] 
[MidiFile.resampleTime allows changing time grid
haskore@henning-thielemann.de**20040912183914
 The default tempo is divided by some strange factor defltDurT=2.
 I wanted to change that to defltDurT=1 (and also
  WriteMidi.toDelta t = round (t * 2.0 * float division)
 but this would lead to a coarser sampling of event times.
 Further on it breaks all midi test files generated so far.
 One could fix this in the test routines
 similarly to the hacks of velocity.
] 
[writeMidi is enclosed in verbatim environment
haskore@henning-thielemann.de**20040912145908] 
[MIDI tempo was double as slow as it should
haskore@henning-thielemann.de**20040912145536
 I fixed that by reducing the factor 4.0 in WriteMidi.toDelta to 2.0,
 though there is also the factor MidiFile.defltDurT = 2 which looks strange.
 But the connected MidiFile.defltST is written
 to the MIDI files so I didn't change that for now.
] 
[standard volume is 1
haskore@henning-thielemann.de**20040912122522] 
[more ideas about abstract data types
haskore@henning-thielemann.de**20040912122303] 
[mapped the generated numbers to changing chords
haskore@henning-thielemann.de**20040911140124] 
[keep the most concise implementations of flipSeq
haskore@henning-thielemann.de**20040911132852] 
[alternative implementations of flipSeq
haskore@henning-thielemann.de**20040911131802] 
[Performance.DurT -> Performance.Dur
haskore@henning-thielemann.de**20040910205613] 
[import Dur type qualified from Music
haskore@henning-thielemann.de**20040910204835] 
['rtof' and 'float' generalized to type variables, unfortunately it's not so easy to make this for Music.T since this would break all type signatures containing Music.T
haskore@henning-thielemann.de**20040910204646] 
[generalized number flipping to more than two numbers, can be nicely used as bassline or similar
haskore@henning-thielemann.de**20040910171041] 
[avoid warnings in Player
haskore@henning-thielemann.de**20040910092919] 
[Flipping tone sequence - a new example of algorithmic music
haskore@henning-thielemann.de**20040910091122] 
[rewrite rules are only correctly parsed if -fglasgow-exts is set
haskore@henning-thielemann.de**20040910084217] 
[Trill no longer exports Music
haskore@henning-thielemann.de**20040905214350] 
[formatting
haskore@henning-thielemann.de**20040905214033] 
[+:+ -> Serial, =:= -> Parallel in explanation
haskore@henning-thielemann.de**20040905213729] 
['case' without curly braces
haskore@henning-thielemann.de**20040905213614] 
[Music.T works now
haskore@henning-thielemann.de**20040905212239] 
[Basics -> Music; untested
haskore@henning-thielemann.de**20040905205101] 
[Music -> Music.T; untested
haskore@henning-thielemann.de**20040905204816] 
[writeMidi: moved from TestMidi to WriteMidi
haskore@henning-thielemann.de**20040905183100] 
[sorted imports
haskore@henning-thielemann.de**20040905182906] 
[import qualified Performance
haskore@henning-thielemann.de**20040905182126] 
[Fractals needs no HaskoreExamples, only Basics
haskore@henning-thielemann.de**20040905181648] 
[MEvent -> MidiFile.Event, removed Midi-M from some identifiers
haskore@henning-thielemann.de**20040905175531] 
[MidiFile -> MidiFile.T
haskore@henning-thielemann.de**20040905174028] 
[Performance -> Performance.T
haskore@henning-thielemann.de**20040905163732] 
[def prefix -> deflt prefix
haskore@henning-thielemann.de**20040905154919] 
[PName -> Player.Name
haskore@henning-thielemann.de**20040905153341] 
[PMap -> Player.Map
haskore@henning-thielemann.de**20040905152851] 
[Player.T should replace type Player
haskore@henning-thielemann.de**20040905152100
 unfortunately since mutual recursive modules aren't supported, one cannot have Player.T as an independent type and Player.C as constructor
 defPMap and fancyPMap moved to Player module
 renamed them accordingly
] 
[NewResolution no longer depends on HaskoreExamples
haskore@henning-thielemann.de**20040905134528] 
[function arpeggio simplifies definition of arpeggio chords
haskore@henning-thielemann.de**20040905133948] 
[the interval function didn't increment the pitch
haskore@henning-thielemann.de**20040905131511] 
[design study of functions that contain an octave number and lifts a note function to a note
haskore@henning-thielemann.de**20040905130606] 
[swapped order of octave and pitchClass in Pitch type
haskore@henning-thielemann.de**20040905125905] 
[a new section about several design decisions
haskore@henning-thielemann.de**20040905120932] 
['instance Show Player' instead of 'instance Show (a -> b)'
haskore@henning-thielemann.de**20040905115637] 
[made CSound score tests successful
haskore@henning-thielemann.de**20040905113043
 original Haskore's defNasHandler forgot to propagate PFields
 velocity information is interpreted as logarithmic volume
 remaining problem: GHC outputs 0.01 as 1.0e-2 whereas Hugs shows 0.01
] 
[writeArgs more concise
haskore@henning-thielemann.de**20040905091441] 
[diff for CSound files
haskore@henning-thielemann.de**20040905083813] 
[diffIA compares strings rather than files
haskore@henning-thielemann.de**20040905082240] 
[diffIA applies tkdiff to two files
haskore@henning-thielemann.de**20040905081557] 
[CSound orchestras can be successfully tested, score tests fail
haskore@henning-thielemann.de**20040904225502] 
[printScore -> writeScore, is no longer an IO function but generates a string
haskore@henning-thielemann.de**20040904221807] 
[writeOrc -> writeOrchestra, is no longer an IO function but generates a string
haskore@henning-thielemann.de**20040904220855] 
[CSound can be started, but it seems as if changes to the scores arose since the original Haskore
haskore@henning-thielemann.de**20040904213554] 
[CSound scores generated by the original Haskore
haskore@henning-thielemann.de**20040904213052] 
[some of the tests failed only because of the ordering
haskore@henning-thielemann.de**20040904195021] 
[add most of the tests from HaskoreExamples
haskore@henning-thielemann.de**20040904194349] 
[test for NewResolutions made from the current sources
haskore@henning-thielemann.de**20040904174046] 
[hyperlink to a web page mentioning MML (macro music language), though I don't know if it is the same MML as in this source
haskore@henning-thielemann.de**20040902221959] 
[test 'cut' function
haskore@henning-thielemann.de**20040902215943] 
[assert function
haskore@henning-thielemann.de**20040902215827] 
[merge generates a unique result
haskore@henning-thielemann.de**20040902210216] 
[ChildSong6 can be tested
haskore@henning-thielemann.de**20040901215414] 
[now the MIDI files of Ssf and Kantate147 can be verified
haskore@henning-thielemann.de**20040901205420] 
[create a test that verifies the integrity of Ssf
haskore@henning-thielemann.de**20040901153600] 
[now even infinite performances are possible
haskore@henning-thielemann.de**20040831231715] 
[HaskoreLoader -> Haskore
haskore@henning-thielemann.de**20040830222002] 
[TestSuite checks if the current modules produce still the same results as the old versions. Currently not functional because it has already changed too much.
haskore@henning-thielemann.de**20040829214645] 
[shell-haskell is necessary to use piping in PlayMidi
haskore@henning-thielemann.de**20040829202507] 
[module PlayMidi supports immediate replay of Music as MIDI, though it works not satisfyingly, yet
haskore@henning-thielemann.de**20040829201243] 
[TestHaskore.lhs -> BackEnd/MIDI/TestMidi.lhs, because TestHaskore contains routines for testing the MIDI back-end only
haskore@henning-thielemann.de**20040829121800] 
[fixed bug in cutList: it appended an infinite number of zero rests
haskore@henning-thielemann.de**20040830221008] 
[quickNote -> note, it seems to be the most natural way to define a note
haskore@henning-thielemann.de**20040829130141] 
[Function 'rest' for abstracting from 'Atom ... Rest'
haskore@henning-thielemann.de**20040829123304] 
[use 'make test' to run an automatic test on 'darcs record'
haskore@henning-thielemann.de**20040829202617] 
[Place GHC specific modules in src/GHC
haskore@henning-thielemann.de**20040829102923] 
[ChildSong6.mid was broken
haskore@henning-thielemann.de**20040829091113] 
[Kantate147 under control of Makefile
thielema**20040828183233] 
[Changed parameter order of performToMidi, the Performance is the main parameter
thielema**20040828181828] 
[Explicit error if lineToList is not applied to a Serial Music
thielema**20040828181054] 
[Raise an error if negative pitches appear, don't let Prelude.char do this
thielema**20040828180407] 
[Converted Kantate 147 successfully to Haskore Music
thielema**20040828180207] 
[Found out more about the pitch meanings of MIDI and CSound
thielema**20040828153759] 
[turned some internet references to real hyperlinks
thielema**20040828142647] 
[Hyperlinks for generator descriptions
thielema**20040828141113] 
[OutputMidi -> SaveMidi, outputMidiFile -> saveMidiFile, in order to match the module and function names of LoadMidi
thielema**20040828134812] 
[makeMidi -> writeMidi, in order to match the function name readMidi
thielema**20040828130136] 
[HaskToMidi -> WriteMidi, in order to match the module name ReadMidi
thielema**20040828124758] 
[Colored instead of framed links
thielema**20040828115333] 
[CSound was accidentally moved to MIDI directory
thielema**20040828103514] 
[Separate directories for different back-ends like MIDI and CSound
thielema**20040828102049] 
[Tutorial must also load the examples from the Example directory
haskore@henning-thielemann.de**20040828093644] 
[Moved all example songs to a separate directory
thielema**20040827223030] 
[Added signatures for Hugs compatibility
thielema**20040827220459] 
[Logfiles need no version control
thielema**20040827220334] 
[Parallel -> chord, Serial -> line, keep independent of the internal structure of Music
thielema**20040827213309] 
[Use 'replicate' instead of 'ChildSong6.times'
thielema**20040827212748] 
[the Pch definition of CSound is rather ill and should not be adapted by Haskores back-end, I have now data type Pch with two constructors
thielema**20040827172849] 
[Section structure degraded to fit into the big document
thielema**20040827172737] 
[Made the examples more concise
thielema**20040827172658] 
[MIDI volume is scaled logarithmically, Velocity is different from Volume, turned the NoteAttribute Volume into Velocity
thielema**20040827172613] 
[structure analysis of a sequence of notes; modularity and datatype identifier T
thielema**20040827144732] 
[/tt instead of \tt
thielema**20040827100936] 
[clipping of velocity was wrong in HaskToMidi, thus it always clipped to zero
thielema**20040816213313] 
[Loudness enumeration
thielema**20040814221923] 
[the Pch definition of CSound is rather ill and should not be adapted by Haskores back-end, I have now data type Pch with two constructors
thielema**20040814180043] 
[include CSound tutorial in Haskore tutorial
thielema**20040814175829] 
[formatting
thielema**20040814175744] 
[some things that can be done immediately
thielema**20040814175718] 
[modules can be compiled both with Hugs and GHC
thielema**20040811221128] 
[instrument specific values provided by type parameters
thielema**20040811142449] 
[some references to newsgroups postings regarding Haskore
thielema**20040801125512] 
[implemented all trigonometric and hyperbolic functions, eliminated some warnings concerning unused parameters
thielema**20040731165448] 
[MIDI volume is scaled logarithmically, Velocity is different from Volume, turned the NoteAttribute Volume into Velocity
thielema**20040731134621] 
[considerations of volume
thielema**20040729205912] 
[tabulators to spaces
thielema**20040729205620] 
[moved most of the Player related code from Performance to Players; left definition of Player data in Performance, since GHC doesn't support mutually modules satisfyingly today
thielema**20040729205402] 
[I hope I can now compile all modules
thielema**20040727213744] 
[separated Optimization from ReadMidi
thielema**20040727213628] 
[(+:+) and (=:=) now merge their operands if they are also Serial or Parallel lists
thielema**20040727213501] 
[some indentation fixed all errors
thielema**20040727213255] 
[three sections: todo, think over, done; suggest module restructuring, Music data restructuring
thielema**20040727075720] 
[turned endEL and diddle to 'map's on lists of pitches
thielema**20040727075522] 
[now all modules except CSound can be compiled
thielema**20040726204729] 
[seemed to use some old Random functions, make use of type class Num instead of fixing to Float
thielema**20040726204611] 
[perc -> drum, though I'm uncertain if the 'perc' or the 'drum' naming scheme ist the newer one
thielema**20040726204403] 
[adapt to new Atom constructor
thielema**20040726204255] 
[moved contents from new module Percussion to Drums, now this is included instead
thielema**20040726200710] 
[this is now a full Haskell module
thielema**20040726200634] 
[target 'clean'
thielema**20040726194238] 
[removed module export clauses to eliminate identifier conflicts, removed overlapping match patterns as reported by 'ghc'
thielema**20040726194208] 
[eliminated identifier conflicts by removing the module export clause
thielema**20040726194022] 
[merged the Trill part of Basics with the module Trill, separated Percussion module from Basics, since Percussion needs trills
thielema**20040725211319] 
[turned old paragraphs into subparagraphs
thielema**20040725181903] 
[amsthm package for theorems
thielema**20040725181738] 
[more hierarchical structure of the tutorial document
thielema**20040725170231] 
[Volume constructor
thielema**20040725094218] 
[added tableofcontents and hyperref stuff
thielema**20040706150012] 
[corrected number of repetitions
thielema**20040706145910] 
[make the tutorial compilable latex as of 2003 and pdflatex
thielema**20040705205426] 
[Rests and Notes are the sonic atoms in a Music, whereas the other constructors structure the Music. Sonic atoms share the property 'duration' which is now expressed in the type definition and simplifies the functions that process the duration of music
thielema**20040705204436] 
[Redefinition of PitchClass? Rests and Notes
thielema**20040705145659] 
[replaced Sequence by Serial, since Serial is an adjective like Parallel
thielema**20040705144556] 
[foldr -> foldl in perform
thielema**20040703191144] 
[Ssf.lhs was available but had the wrong capitalization
thielema**20040524135314] 
[maximum volume is now 1 instead of 100, removed bug in defNasHandler where the volumes are averaged instead of being multiplied
thielema**20040523163307] 
[use Sequence and Parallel constructors rather than :+: and :=: because this better matches the structure of music, disabled some of the optimizations in ReadMidi to get the modules compiled, yet
thielema**20040523162233] 
[replaced 'quot' by 'div' which is the proper choice for negative numbers
thielema**20040522194204] 
[tried to compile as many modules as possible, excluded conflicting modules, invoked minor corrections
thielema**20040522185821] 
[make PerformanceOld.lhs the previous CVS version of Performance.lhs
thielema**20040522175514] 
[Initial revision
thielema**20040522174809] 
