Strasheela is a highly expressive constraint-based music composition system. The Strasheela user declaratively states a music theory and the computer generates music which complies with this theory.
A theory is formulated as a constraint satisfaction problem (CSP) by a set of rules (constraints) applied to a music representation in which some aspects are expressed by variables (unknowns).
Music constraint programming is style-independent and is well-suited for highly complex theories (e.g. a fully-fledged theory of harmony). The results can be output into various formats including MIDI, Lilypond, and Csound.
What's New in This Release: [ read full changelog ]
Main additions and changes:
· Fixed serious bug: core of Strasheela dependend on IOzSeF, now IOzSeF support moved into an extra contribution functor IOzSeF (thanks to Ajay Dhar for pointing out this problem)
· Added Windows batch files for installation etc. (thanks to Ajay Dhar for a first version!!)
· Added functor Segments: a collection of re-usable musical segments (sub-CSPs) such as a contrapuntual line, motifs, or a homophonic chord progression
· Added several harmony-related constraints to HS.rules: RestrictPitchDomain, OnlyOrnamentalDissonance_Durations, NoParallel, NoParallels, MakeIntervalConstraint, PerfectConsonances, IsPerfectConsonanceR, Limit3Consonances, IsLimit3ConsonanceR, Limit3Intervals_2, IsLimit3IntervalR_2, Limit5Consonances, IsLimit5ConsonanceR, IsLimit_3_5_ConsonanceR, IsLimit7ConsonanceR, IsLimit_3_5_7_ConsonanceR, and GetRootPCIntervals
Documentation:
· Schoenberg-TheoryOfHarmony.oz: the examples produced parallel fifths/octaves (between voices more than an octave apart), now fixed in source (not yet fixed in solutions in HTML file...)
· HarmonicProgressions-22ET.oz: Added adaptive JI output, added four-voice setting of examples (using new Segs.homophonicChordProgression)
Minor additions:
· Score: added DefMixinSubscript
· GUtils: added RoundDigits
· Pattern: added constraints Intervals, AbsIntervals, RestrictMaxInterval, Hook, Stairs
· HS: added general pitch converters HS.acc, HS.pc, HS.pcName, and HS.pitch
· HS.score: added HarmonicRythmFollowsMarkers
· HS.rules.schoenberg: added AscendingProgression2R
Further bug fixes and changes:
· Score: method getSimultaneousItems: now made sure arg test is only applied to items
· Out: Lilypond output, arg hasBreak: no reak inserted after last container matching hasBreak