#title Changes ; #author Torsten Anders * Changes in Version 0.10.1 (30 April 2012) - Main additions and changes - Accent constraints added to functor Measure. This framework of constrains controls the rhythmic weight of notes depending on a wide range of musical features (e.g., relative duration, pitch intervals, presence of an anacrusis) and the relation between rhythmic weights and metric positions. Their effect is widely user-controllable. These constraints are inspired by the chapter on rhythm in [[http://books.google.com/books?id=J4iXm-uoSRUC&printsec=frontcover&dq=structural+functions+in+music&hl=en&src=bmrr&ei=BcwFToS0FcqahQeM2sS8DQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCwQ6AEwAA#v=onepage&q&f=false][Berry, Wallace. 1987. Structural Functions in Music. Courier Dover Publications.]] See the examples in [[../examples/Rhythm-Examples/AccentConstraint-Examples.oz][AccentConstraint-Examples.oz]]. - Texture constraints added to functor Segments. This framework of constrains controls whether a musical section is, say, homophonic, quasi-homophonic, homo-directional etc. Again, this framework is widely user-controllable. These constraints are inspired by the chapter on texture in [[http://books.google.com/books?id=J4iXm-uoSRUC&printsec=frontcover&dq=structural+functions+in+music&hl=en&src=bmrr&ei=BcwFToS0FcqahQeM2sS8DQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCwQ6AEwAA#v=onepage&q&f=false][Berry, Wallace. 1987. Structural Functions in Music. Courier Dover Publications.]] See the examples in [[../examples/Form-Examples/Texture-Examples.oz][Texture-Examples.oz]], and the definitions in the functor [[../contributions/anders/Segments/doc/node1.html][Segments.]] - Support for heuristic constraints added (value ordering heuristics). Heuristic constraints are a form of soft constraints that express only a preference instead of a strict requirement on the solution. See the documentation of the procedure Score.apply_H, the examples in [[../examples/Heuristic-Constraints.oz][Heuristic-Constraints.oz]], and the functor [[../contributions/anders/Heuristics/doc/node1.html][Heuristics]]. - Revised Fomus output: Strasheela now exports the new format of the Fomus rewrite (http://fomus.sourceforge.net/), and Strasheela's Fomus export definition have been extended in many ways. - Constraint problems on arbitrary octave-repeating [[http://en.wikipedia.org/wiki/Regular_temperament][regular temperaments]] (any rank) supported, including [[http://en.wikipedia.org/wiki/Just_intonation][just intonation]] with arbitrary limits (pitches measured, e.g., in cent or millicent). - Revised score distribution: value orderings can now access arbitrary score information - Added support for transformable subscripts ([[../contributions/anders/Segments/doc/node3.html][Segs.tSC]]) - Added functor [[../contributions/anders/ET41/doc/node1.html][ET41]] for composition in [[http://en.wikipedia.org/wiki/41_equal_temperament][41-tone equal temperament]] and related tunings (e.g. the just intonation tuning of [[http://en.wikipedia.org/wiki/La_Monte_Young][La Monte Young]]'s [[http://www.kylegann.com/wtp.html][The Well-Tuned Piano]]). Supported features for these tunings include a short-hand pitch notation; a database of intervals, chords, and scales; and some minimal music notation support (via Lilypond). - Added HS.out: generalised output for score objects and concepts introduced by HS, e.g., Lilypond output for chord and scale objects and means to define Lilypond output for different temperaments. - Partially determined scores can be output to music notation (i.e. Lilypond and Sibelius/Finale) via the Fomus export. (Partially determined scores could be exported into Csound and MIDI already.) - Easy-to-use persistent data storage of scores with Out.pickleScore/Out.unpickleScore. - Main documentation additions - [[../examples/Rhythm-Examples/AccentConstraint-Examples.oz][AccentConstraint-Examples.oz]]: Added examples demonstrating how to constrain accents (notes that meet a number of given conditions, e.g., have an anacrusis) to certain metric positions - [[../examples/Form-Examples/Texture-Examples.oz][Texture-Examples.oz]]: Added examples demonstrating texture constraints - [[../examples/Heuristic-Constraints.oz][Heuristic-Constraints.oz]]: demonstrates how heuristic constraints are defined and used. - [[../examples/ControllingOutput-Examples/Fomus-Examples.oz][Fomus-Examples.oz]]: Added examples demonstrating the Fomus output. - [[../examples/RegularTemperaments.oz][RegularTemperaments.oz]]: examples related to regular temperaments - [[../examples/Harmony-Examples/HarmonicProgressions-41ET.oz][HarmonicProgressions-41ET.oz]]: Added 41 ET harmony example, using La Monte Young's The Well-Tuned Piano chords - [[../examples/Counterpoint-Examples/Counterpoint-22ET.oz][Counterpoint-22ET.oz]]: Added 22 ET counterpoint examples - Minor additions - Fenv.makeRenderAndPlayMidiFile_Scala has been added (for microtonal output to statically returned MIDI instruments, e.g., with Scala file support). Also, Fenv.renderAndPlayMidiFile now supports flexible microtonal MIDI output using pitchbend - Added pitch unit mHz (Millihertz) - GUtils: added IsEqual, RecursiveRatio, PrimeFactors - GUtils: added better pseudo-random number generators: DevRandom, KnuthRandom, SetKnuthRandomSeed, RandIntoRange2. - GUtils.toProc: refactored version now supports optional arguments with default values - MUtils: added FeedNoteLengthVariables (support for convenient note duration variables), RatioToRatioPC OddLimit PrimeLimit - LUtils: added RemovePosition, ReplacePosition, FindBest, - Init: added SetNoteLengthsRecord, SymbolicDurToInt - Init: added Explorer information action that binds the score in a node of the Explorer to the variable MyScore at the top-level (very useful for debugging) - Out.toLilypond and friends: implicit clef is now controllable with argument getClef - Out.makeNoteToLily2: function has been completely rewritten with a now more general interface - Out.averagePitchClef added - SMapping: added MapTimeslices, ForTimeslices, ForTimeRange, ForTimeRangeArgs - SDistro: added MakeLeftToRight2 (left-to-right distribution strategy that takes end times of preceeding items into account, thus allowing for undetermined offset times), SearchBest_Timeout - SDistro: Randomised distributions use better pseudo-random number generator. - ET22.db: interval database now defined as ratios for adaptive JI - ET22.out: added NoteEt22ToLily_AdaptiveJI2, PajaraRMS_TuningTable, JI_TuningTable - 22 ET Lilypond output: revised accidentals (using new arrowed Lily accidentals for representing syntonic commas up/down) - ET31.out: added NoteEt31ToLily_AdaptiveJI2, Meantone_TuningTable, JI_TuningTable - ET41.out: added ji_TuningTable - Segs: added MakeCounterpoint_PatternMotifs_DurationPitchcontour, MakeCounterpoint_PatternMotifs_OffsetDuration, MakeCounterpoint_PatternMotifs_OffsetDurationPitchcontour. - Segs.makeCounterpoint: added arg clearDissonanceResolution (before this constraint was always enabled). - Segs: added mixin scripts (partly removing orig extended script altogether): MakeCounterpoint_Mixin, PitchPattern, FenvContour, Arpeggio, Arch, Repetitions, Hook, Stairs, MakeAkkord_Mixin, MakeAkkords_Mixin - Segs.homophonicChordProgression: added arguments playAllChordTones, noVoiceCrossing, maxUpperVoiceDistance, generalised argument 'restrictMelodicIntervals'. - HS.rules: added Modulation, GetRootDegreeIntervals, SetBoundaryRoots, SetBoundaryTypes, NoParallels2, Ballistic, MinCard, GetPcInterval, PcInChord - Pattern: added MinDistinct, DirectionOfContour, LocalMinR, GetLocalMax, GetLocalMin, ConstrainLocalMax, ConstrainLocalMin, FenvContour2, NoRepetition, Undulating, ForCartesianProduct2 and MapCartesianProduct2, FirstNTrue, MotifIndexMixin, IsMotifIndexMixin, MakeMotifIndexClass, MotifStartMixin, IsMotifStartMixin, MakeMotifStartClass, GetMotifStartNotes, GetMotifStartIndices - HS.score: Added class constructors: MakeInScaleChordClass, MakeScaleDegreeChordClass. - Removed proc GUtils.selectArg (better use Adjoin or CondSelect instead) - Removed GUtils.isInt (result wrong for FD ints): use FD.is or IsInt instead - Segs.out.unmeteredMusic_LilyHeader: String for Lilypond header configuration to support unmetered music (e.g., as in many Messian pieces) - Measure.uniformMeasures: a number of syncopation-related constraints have been added (methods getBeatAt, getBeatInMeasureAt, getAccentInMeasureAt, beatSyncopation, accentSyncopationR) - Score: added the temporal items methods getPredecessors, getSuccessors, getTemporalPredecessors, getTemporalSuccessors, getPredecessorsUpToRest, getSuccessorsUpToRest - Score: added temporal deterministic functions and constraints AtTimeR AtTimeR2 InTimeframe InTimeframeOffset InTimeframeR InTimeframeOffsetR GetItemsInTimeframe GetItemsInTimeframeOffset - Further bug fixes and changes - GUtils: Improved randomness of number sequence returned by (calling of) MakeRandomGenerator. - Oz primitives like IsRecord, IsAtom etc. block on kinded variables (undetermined FD and FS vars), which could cause blocking of various Strasheela definitions. Now Strasheela always uses its new own GUtils.isRecord and GUtils.isAtom etc. which do not have this problem - Removed redundant (and ambiguous) pitch unit 'keynumber'. Default pitch unit is now 'midi' (equivalent to et12). - MUtils: added PitchToMidi, IsET, GetPitchesPerOctave - Score: Fixed bug for TimeMixin method findSimultaneousItem in case object is not contained in any container - Score: removed IsET GetPitchesPerOctave - Lilypond output: if score started with offset time, then this leading rest was ignored in the Lilypond output (now fixed). Also, score now by default wrapped in braces, and default Lilypond version updated to "2.12.0". - HS.out.renderAndShowLilypond: revised args codeBeforeNoteMakers and codeBeforePcCollectionMakers. Also, chord and scale objects are again notated with grace notes /before/ root (grace notes after the root (using \aftergrace) are incompatible with HE notation). - HS.score: GetAdaptiveJIPitch: - Added arg tuneNonharmonicNotes, added GetAdaptiveJIPitch2, chord root now as in current tuning table or underlying ET (if no tuning table is defined), dependance on scale removed (can be completely wrong, e.g., with just major scale, major nineth of V would be syntonic comma too low) - Some notes have been transposed to wrong octave, now fixed - HS.out.renderAndShowLilypond: changed output of chord pitch classes to octave above middle C - HS.score: Debugging DegreeToPC: fixed propagation error. Refined PitchClassToPitch and PitchClassToPitch2 (initial PC domain reduced). Refactored HarmonicRythmFollowsMarkers: now works also for items with offsetTime > 0. - HS.rules.noParallels2: now also works if there are pause (rest) objects in the score - HS.rules.makeIntervalConstraint: added support for regular temperaments - HS.db: added GetGenerators GetGeneratorFactors GetGeneratorFactorsOffset GetTemperament GetAllNames - HS.db: Pc2Ratios now returns nil if no ratio was defined for interval - Fixed HS.pcName - Fenv method toList: fixed bug for case N=1 - Pattern: renamed Arc -> Arch. Debugging UseMotifs: arg workOutEven now working again. Debugging FirstNTrue: fixed problem for case that all Bs are 1. - Pattern: patterns such as Continuous AllEqual Increasing Decreasing caused error for input nil, fixed (in PlainPattern2) - Out.midi.getChannel now uses mini chan param of midi note objects (not only channel info tag) - Refactored ET22 and ET31 output: now much reduced code with same functionality using HS.out, several procs before exported by ET22 and ET31 are now moved to HS.out - Segs.homophonicChordProgression: replaced arg 'isToplevel' by arg 'makeTopLevel' for generality; fixed bug: constraint of arg maxUpperVoiceDistance now actually applied to upper voices; change default for arg commonPitchesHeldOver to false, allow disabling maxUpperVoiceDistance constraints. - Segs: Debugging PitchContourAccessor: previously pattern motifs constraining the pitch contour with this fun were artificially restricted (interval direction from the note preceeding a motif to the first motif note was always downwards). MakeMotifIndexNote and GetMotifIndexOfNote removed (use Pattern.makeMotifIndexClass instead). - Out.outputScoreConstructor: strings in archived score were not properly quoted (fixed Out.recordToVS). - HS.score.harmonicRhythmFollowsMarkers: spelling correction (was HS.score.harmonicRythmFollowsMarkers) - LUtils: changed comparison function of many defs (Contains, Position, Positions, Substitute, Substitute1) to GUtils.isEqual, which is working for all data types - UniformMeasures method onAccentR fixed -- it did not support irregular accent sequences of time signatures such as 5/4 before. (method onAccentDR removed) - UniformMeasures method overlapsBarlineR fixed for certain borderline cases - The Strasheela tutorial application now loads the Oz initialisation file - For further details of changes see the [[http://apps.sourceforge.net/trac/strasheela/timeline][Trac Timeline]] or the [[../CHANGELOG.txt]]. * Changes in Version 0.9.10 (28 March 2009) - Main additions and changes - Fixed serious bug: core of Strasheela dependend on [[http://www.mozart-oz.org/mogul/doc/tack/iozsef/iozsef.html][IOzSeF]], now IOzSeF support moved into an extra contribution functor [[../contributions/anders/IOzSeF/doc/node1.html][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 [[../contributions/anders/Segments/doc/node1.html][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 - [[../examples/Harmony-Examples/Schoenberg-TheoryOfHarmony.oz][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...) - [[../examples/Harmony-Examples/HarmonicProgressions-22ET.oz][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 \break inserted after last container matching hasBreak - For further fixes see the [[http://apps.sourceforge.net/trac/strasheela/timeline][Trac Timeline]] or the [[../CHANGELOG.txt]]. * Changes in Version 0.9.9 (9 March 2009) - Main additions and changes - [[../contributions/anders/Pattern/doc/node1.html][Pattern]]: added many pattern constraints and related definitions: FenvContour, FenvBoundaries, Arc, WindowedPattern, WindowedPatternRecursions, ForAllItems, MapItems, FirstToLastDistance, DxsToXs, XsToDxs, EqualizeParam, MakeIndexConstructor, GetMotifIndex - Support for [[http://tonalsoft.com/enc/a/adaptive-ji.aspx][adaptive just intonation]] has been added: [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].score.getAdaptiveJIPitch. See [[../examples/Harmony-Examples/Schoenberg-TheoryOfHarmony.oz][Schoenberg-TheoryOfHarmony.oz]] for an example how to use it with a special adaptive JI explorer action. - Extensions and simplifications for score creation, defined in [[../doc/api/node6.html][Score]] - Added MakeItems, DefSubscript, ItemslistToContainerSubscript, MakeConstructor - MakeContainer, MakeSeq and MakeSim are replaced by completely different implementations - Score.makeScore: textual score format extended - More convenient notation variant supported for nested scores. The following two examples are now equivalent. - ={Score.makeScore seq(items:[note note]) unit}= - ={Score.make seq([note note]) unit}= - List of items can now also be created by constructor such as MakeItems (before this was only supported for single items) - Documentation - Added example doc [[../doc/Example-Schoenberg-TheoryOfHarmony.html][Example-Schoenberg-TheoryOfHarmony.html]] - Extensively revised example [[../examples/Harmony-Examples/Schoenberg-TheoryOfHarmony.oz][Schoenberg-TheoryOfHarmony.oz]] (before called HomophonicChordProgression.oz): now features solver calls for many variations on the theory of harmony - Page for [[Example-MEWER][MEWER]] application added to list of examples - [[../examples/Form-Examples/FriendlyMusicExample.oz][FriendlyMusicExample.oz]]: Fixed bug in distro (was orelse instead of andthen) - Minor additions - [[../doc/api/node9.html][Out]]: added args hasImplicitStaff and hasBreak to Out.toLilypond. Added IsOutmostSim. - [[../doc/api/node3.html][GUtils]]: added RecursiveAdjoin, KeepList, IsRatio, RatioToFloat - [[../doc/api/node5.html][MUtils]]: added TransposeRatioIntoStandardOctave, RatioToStandardOctaveFloat, SortRatios, SortRatios2 - [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].db: added GetUntransposedRatios, GetUntransposedRootRatio, GetUntransposedRootRatio_Float - HS.score: added MakeChords, MakeScales, and GetDegree - HS.rules.schoenberg: added ProgressionSelector, ResolveDissonances, IndexCardinality SetEachChordType SetEachScaleType RequireChordTypes - [[../contributions/anders/ET31/doc/node1.html][ET31]]: added many chords and scales to database (origin is Scala's list of 31 ET chords and modi) - ET31.out: NoteEt31ToLily_AdaptiveJI, and Et31AsEt12_TuningTable - Bug fixes and changes - [[../doc/api/node6.html][Score]]: ScoreObject method toInitRecord: now outputs strings (e.g., for lilypond) as proper strings (e.g., important for archiving scores) - Score: Refactored ScoreObject method init: not-explicitly supported arguments are ignored now (a warning is printed) - Score: Revised ScoreObject method unify: new args exclude, derive, overwrite - Score: Method toFullRecord: added arg unbind. - Score: added ScoreObject method addInfos (complements addInfo) - [[../doc/api/node9.html][Out]]: Last note of automatically split and tied notes was longer than what has been set by Out.setMaxLilyRhythm, now fixed - Out.saveScore: fixed (added wrote prefix) - Out.recordToVS revised: For values which cannot be transformed into Oz code, an descriptive atom created with Value.toVirtualString is output. Also, now outputs strings as strings, preserves escape sequences etc. (both affects, e.g., archiving scores). Added RecordToVS_simple - [[../doc/api/node11.html][Midi]] output: Note off timing revised: when a note on event and the preceeding note off event occur at exactly the same time, some MIDI devices have problems. So far, Strasheela be default simply removed (OutputMidiFile arg removeQuestionableNoteoffs defaulted to true). Now, by default such note offs are very slightly moved forward (NoteToMidi new arg noteOffOffset defaults to ~0.003, measured in secs -- NoteToMidi is used by default for outputting MIDI notes (matching OutputMidiFile clause with test isNote). - [[../doc/api/node3.html][GUtils]]: simplified IsDivisible implementation, added RelationComplement, ConstrainRelation - [[../doc/api/node4.html][LUtils]]: Refactored EveryNth (new arg Offset), added OddPositions EvenPositions - LUtils: Fixed function Position to support nested elements - HS.db: GetChordIndex/GetScaleIndex/GetIntervalIndex: database entries can now have multiple alternative names. When such entries are defined with SetDB, the subfeature 'name' of the feature 'comment' has a list of names (atoms). - Refactored HS.db.getName: now returns list of alternative chord/scale/interval name - HS.score: - Refactored TransposeDegree: expected scale/chord PCs as list, now FS - Efficiency improvements: TransposePC: uses now FD.modD instead of FD.modI. - PitchClassCollection initialisation: constrains that root (untransposed root) is in PCs (untransposed PCs) for better propagation. - New default for all args getChords/getScales: list with single simultaneous chord/scale (with findSimultaneousItem), nil (old default) if none is found - Fixed PitchClassCollection method degreeToPC (now also correct if root is \= transposition). - HS.rules: - Fixed MaxNonharmonicNoteSequence (before limited number of harmonic instead of non-harmonic tones) - Added ExpressAllChordPCs_AtChordEnd - constraint name changed: - SmallIntervalProgressions -> SmallIntervalsInProgression - SmallIntervalProgressions_Percent -> SmallIntervalsInProgression_Percent - HS.distro: Fixed bug in IsNoTimepointNorPitch (was orelse instead of andthen) - ET31.out: Substatianlly refactored Lilypond output of analytical information (chords, scales), now more flexible - [[../contributions/anders/Fenv/doc/node1.html][Fenv]]: Changed ItemFenvsToMidiCC and ItemTempoCurveToMidi arg ccsPerSecond from int to float - Pattern: improved propagation of Direction - For further fixes see the [[http://apps.sourceforge.net/trac/strasheela/timeline][Trac Timeline]] or the [[../CHANGELOG.txt]]. * Changes in Version 0.9.8 (4 December 2008) - Serious bug fixed (compilation error): Score and Init: Browser was not imported - Tutorial: revisions of section on Strasheela Music Representation (thanks Graham) - SDistro: first-fail variables orderings (e.g., distribution order values like dom, width, and their various relations) are more efficient (replaced many =< by <) - Code cleaned up (virtually no compiler warnings anymore) - For further fixes see the [[../CHANGELOG.txt]]. * Changes in Version 0.9.7 (27 November 2008) - Main additions and changes - Added support for time shift functions to the core music representation: methods like getStartTimeInSeconds etc. take them into account, and they are supported by all standard synthesis output formats. Time shift functions are defined for temporal containers, and they can even be nested (e.g., locally for motifs and a globally for the whole score). - Fenv.renderAndPlayMidiFile: MIDI file output which additional supports continuous controllers (e.g., pitch bend, aftertouch, CC) and a global tempo curve, all expressed in the score by fenvs (demonstrated in [[../examples/ControllingOutput-Examples/MIDI-output.oz][these examples]]). - MUtils: Added support for symbolic duration notation: MakeNoteLengthsTable, MakeNoteLengthsRecord, MakeDurationsRecord, SetNoteLengthsRecord, ToDur, SetDurationsRecord, ToNoteLengths (see usage in [[../examples/Form-Examples/FriendlyMusicExample.oz][this example]]) - Documentation - Demonstrate various MIDI file export facilities in the new file [[../examples/ControllingOutput-Examples/MIDI-output.oz]] - Added relatively complex examples which constrain the rhythmical, melodic, harmonic, and formal structure at the same time [[../examples/Form-Examples/FriendlyMusicExample.oz]] - Added realtime counterpoint example with Max interface: [[../examples/Realtime-Examples/]] - Minor additions - Score: added TransformScore and TransformScore2 - HS.rules: added several harmonic/melodic/contrapuntual rules: VoiceLeadingDistance, VoiceLeadingDistance_Percent, SmallIntervalProgressions, SmallIntervalProgressions_Percent, ClearDissonanceResolution, IntervalBetweenNonharmonicTonesIsConsonant, MaxInterval, MaxNonharmonicNoteSequence, MaxNonharmonicNotePercent, MaxRepetitions, MinPercentSteps - Out.outputScoreConstructor (and related score archiving procs): added arguments 'postfix', 'exclude', and 'clauses' - GUtils: added IsDivisible, Percent - HS.score: added RatioToInterval - Added OZRC file configured for MacOS - Out.midi.noteToMidi: added arg 'round' - PMotif.makeScript: added argument 'constructors' - Out.midi.getChannel added - Fenv: added ItemFenvsToMidiCC and ItemTempoCurveToMidi - Bug fixes and changes - Refactored score object method toInitRecord: now with arg 'clauses' (i.e., default output format -- defined by method 'getInitInfo' -- can be overwritten in 'toInitRecord' call) - Fenv.itemFenvY: interface changed slightly -- time argument now expected in present time unit, not in seconds - Tempo curve processing bug fixed (numeric integration approximation now OK) - Fixed bug in the harmony-related example in [[../examples/Form-Examples/PrototypeMotif-Examples.oz][PrototypeMotif-Examples.oz]] (with the new arg PMotif.makeScript arg 'constructors') - Refactored MIDI output (Out.midi.renderAndPlayMidiFile and friends affected) - Clauses given as arg are appended before default clauses, default clauses are not overwritten - Bug fixed for clauses resulting in nil - Updated precompiled files for examples to Mozart version 1.4.0 (now some examples do not work with 1.3.* anymore, unfortunately the binary format is incompatible) - examples/04-AutomaticMelodyHarmonsation.oz: customised Lilypond output works again with recent Lilypond versions - For further fixes see the [[../CHANGELOG.txt]]. * Changes in Version 0.9.6 (19 August 2008) - Main additions and changes - New models for constraining the musical form - Functor [[../contributions/anders/PrototypeMotif/doc/node1.html][PrototypeMotif]]: constraining the musical form based on motif prototypes - [[../contributions/anders/Pattern/doc/node1.html#entity28][Pattern.useMotifs]]: a flexible pattern constraint for motifs - [[../doc/api/node8.html][SDistro]]: Refactored the definition of distribution strategies and their documentation. More complex variable orderings are now conveniently defined with special constructor functions. The following procedures are added to [[../doc/api/node8.html][SDistro]]: Naive, Dom, Width, Deg, DomDivDeg, MakeDom, MakeDeg, MakeLeftToRight, MakeRightToLeft, TimeParams, MakeTimeParams, Min, Max, MakeMarkNextParam, and MakeVisitMarkedParamsFirst. The definitions of distribution strategies for harmonic CSPs in [[../contributions/anders/HarmonisedScore/source/Distribution.oz][HS.distro]] demonstrate how complex distribution strategies are defined concisely with these new procedures - [[../doc/api/node6.html][Score]]: The performance of the temporal item method =getSimultaneousItems= is much improved, and a method =findSimultaneousItem= added. Before, =getSimultaneousItems= blocked until the whole rhythmical structure was determined. Now the score only needs sufficient information whether some object is simultaneous or not to the given object, but their temporal parameters don't need to be determined. This speeds up the search process of CSPs which rely on this method (e.g., contrapuntual problems accessing sets of simultaneous notes and which also constrain the rhythmical structure) - Documentation - New examples - [[../examples/Form-Examples/MotifPattern-Examples.oz][MotifPattern-Examples.oz]] demonstrate the new pattern motif model ([[../contributions/anders/Pattern/doc/node1.html#entity28][Pattern.useMotifs]]) - [[../examples/Form-Examples/PrototypeMotif-Examples.oz][PrototypeMotif-Examples.oz]] demonstrate the new prototype motif model ([[../contributions/anders/PrototypeMotif/doc/node1.html][PrototypeMotif]]) - [[../examples/Form-Examples/VariationMotif-Examples.oz][VariationMotif-Examples.oz]] demonstrate the variation motif model, which existed before but had little examples so far ([[../contributions/anders/Motif/doc/node1.html][Motif]]). - [[../examples/Harmony-Examples/HomophonicChordProgression.oz][HomophonicChordProgression.oz]] implements a substantial subset of Schoenberg's [[http://www.amazon.com/Theory-Harmony-California-Library-Reprint/dp/0520049446/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1219087198&sr=8-1][Theory of Harmony]] - Examples added to [[../examples/Harmony-Examples/HarmonicProgressions-31ET.oz][HarmonicProgressions-31ET.oz]]: chord progression with 7-limit triads in septimal minor, chord progression in extended tonality with 7-limit tetrads, and chord progression with 7-limit tetrads forming a sequence (repetition of the sub-chord progressions at different pitches) - [[../examples/Harmony-Examples/SimpleHarmony.oz][SimpleHarmony.oz]]: a relatively simple harmonic CSP, using a different approach than the examples listed above - [[../examples/Realtime-Examples/][Realtime-Examples/Max_OSC_test.*]] shows how [[http://en.wikipedia.org/wiki/Max/MSP][Max/MSP]] and Strasheela communicate via OSC - [[../examples/ControllingOutput-Examples/PWGL-Output/][PWGL-Output/]] shows how Strasheela outputs to the [[http://www2.siba.fi/PWGL/enp.html][ENP]] score format of [[http://www2.siba.fi/PWGL/][PWGL]] - The files in the [[../examples][examples]] folder are reorganised - [[../examples/03-FloridCounterpoint-Canon.oz][03-FloridCounterpoint-Canon.oz]] revised. For example, it now features a simple cadence rule, and solutions differ more. Also, some constraints can be modified more easily by arguments to the script - [[../examples/ShowHarmonicDatabases.oz][ShowHarmonicDatabases.oz]] shows how to render the entries of [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]] chord, scale or interval databases in common music notation and as sound - All entries in the 22-ET and 31-ET databases (chords, scales, intervals) are listed in common music notation and as sound in files in [[../contributions/anders/ET22/doc-DB/]] and [[../contributions/anders/ET31/doc-DB/]] (created with [[../examples/ShowHarmonicDatabases.oz][ShowHarmonicDatabases.oz]]) - Minor additions - [[../doc/api/node3.html][GUtils]]: added MakeSingletonSet and IntsToFS (convenient interface between FD and FS variables) - Init.setMaxLilyRhythm added (specifies maximum Lilypond note duration written without tie) - [[../doc/api/node4.html][LUtils]]: added RemoveDuplicates - Class [[../doc/api/node6.html][Score]].item: added method percentageIsDet - [[../doc/api/node9.html][Out]].toNonmensuralENP: now also supports PWGL library KSQuant format (which the KSQuant object simple2score transformes into the mensural ENP format) - [[../doc/api/node8.html][SDistro]].makeSearchScript (and all Strasheela search engines): added generic variable ordering 'dom+deg' - [[../doc/api/node7.html][SMapping]]: added MapSimultaneousPairs/ForSimultaneousPairs (constraint applicators to simultaneous score objects), FilterSimultaneous, FindSimultaneous, and MapScore - [[../contributions/anders/Pattern/doc/node1.html][Pattern]]: added LocalMaxR, PercentEqual_Range, RotateList, and RotateSublists - [[../contributions/anders/HarmonisedScore/doc/node3.html][HS.score]]: added HarmoniseMotifs for more convenient definition of harmonic CSPs - [[../contributions/anders/HarmonisedScore/doc/node3.html][HS.score]]: added support for computing G. Mazzola's minimal cadential sets: MinimalCadentialSets, MinimalCadentialSets2, MakeAllContextScales - [[../contributions/anders/HarmonisedScore/doc/node4.html][HS.rules]]: added various harmonic constraints: ExpressAllChordPCs, ExpressAllChordPCs_AtChordStart, ExpressEssentialChordPCs, ExpressEssentialPCs_AtChordStart, ClearHarmonyAtChordBoundaries, ResolveNonharmonicNotesStepwise, GetInterval, and ConstrainMaxIntervalR - [[../contributions/anders/HarmonisedScore/doc/node6.html][HS.distro]]: ready-made distribution strategies for harmonic CSPs - [[../contributions/anders/HarmonisedScore/doc/node2.html][HS.db]]: added GetComment and GetName - [[../contributions/anders/ET22/doc/node1.html][ET22]].out: Lilypond notation of music in [[http://en.wikipedia.org/wiki/22_equal_temperament][22-tone equal temperament]] greatly improved by special accidentals - [[../contributions/anders/ET22/doc/node1.html][ET22]].out/[[../contributions/anders/ET31/doc/node1.html][ET31]].out: Lilypond notation of scale and chord objects (analytical score objects) refined: if scale/note objects are part of the score, then all their pitch classes are first notated as grace notes. A 'normally' notated single note indicates the duration of the chord/scale and the chord/scale root. - [[../contributions/anders/ET22/doc/node1.html][ET22]].setEnharmonicNotationTable: enharmonic notation can be customised - [[../contributions/anders/ET22/doc/node1.html][ET22]].db / [[../contributions/anders/ET31/doc/node1.html][ET31]].db: Added feature 'essentialPitchClasses' to chord entries - [[../contributions/anders/Fenv/doc/node1.html][Fenv]]: added method toList_Int to class Fenv - Added Lisp code for translating Lisp values into Oz values: [[../goodies/Lisp/Lisp2Oz.lisp]] - Convenient benchmark facilities for runtime and memory measurements of musical CSPs are added under [[../testing/zy_Efficiency/benchmark]] - Bug fixes and refactorings - Strasheela has been adapted for the new Mozart version 1.4.0 - Out.midi.note2Midi renamed into Out.midi.noteToMidi for consistency - GUtils.extendedScriptToScript: the argument order for extended scripts is swapped, so that extended scripts can be used conveniently as score creator functions in Score.makeScore. All code which uses extended scripts has been adapted (e.g., RT.scoreSearcherWithTimeout and all examples which use that class) - Fixed HS.score.chordsToScore bug: arg minIntervalToBass did constrain interval between soprano and next lower voice instead between bass and next higher voice - Fixed Score.scoreObject method init bug: replaced GUI warning by stdout warning (GUI warning causes exception if called within a local space during search) - Oz primitive Object.is blocks on undetermined FS vars: refactored all calls to it to check for FS vars first (e.g., various type checking functions) - Pattern.makeLSystem: fixed bug for N =< 0 (caused infinite loop) - Refactored method toInitRecord for class HS.score.note. It now potientially includes the initialisation arguments getChords, isRelatedChord, getScales, isRelatedScale (which are procedures). Nevertheless, by default these are skipped - Renamed scale in HS.dbs.default from 'minorPure' into 'natural minor' (comment feature of scale spec) - Archiving a score object as Strasheela code in a file (archive init record) was broken, now fixed - Outputting a FS variable as code (when archiving a score) could result in [] instead of nil, fixed - ET22.out.renderAndShowLilypond: argument wrapper was broken, now fixed - Fixed method isDet: now also works recursivly for containers - HS.score: fixed chord/scale implicit constraints: before determining the index parameter constrained/determined the pitch class set variable, but not the other way round. Now it works both ways - HS.score: fixed bug in class Interval: specifying index parameter in init method led to fail - ET22.db: removed chord 'major subdiminished'; this chord equals 'subminor 7th' - ET22.db: fixed bug in chord database: subdiminished 7th chord was completely wrong. Also the chord 'French augmented 6th' was wrongly called 'subminor 7th' - Out: Fixed lily bug: pause objects did not support lily info tag - HS.rules.schoenberg: fixed ResolveDescendingProgressions: decending progression "resolved" only in ascending progression (not superstrong), also fixed arg allowInterchangeProgression (added constraint) - Measure.uniformMeasures: fixed bug in method overlapsBarlineR (old def had logical error) - Score.item: added method getContainersRecursively - ET31.db: now only a single root defined for all chords and scales - Score.note: change default of argument amplitude to determined value (velocity 64), before it was variable and so it must be set always - Realtime: Default realtime solvers now implicitly reset the random seed, so they always create a different solution - LUtils: fixed bug in CFind/CFilter: blocked if result should be nil - There have been many other small changes, see the [[../CHANGELOG.txt]] for full details * Changes in Version 0.9.5 (16 April 2008) - Main addition - The actual playback pitches of notes can be defined by tuning tables for sound synthesis formats such as Csound or MIDI. These tables (Oz tuples) have a format similar to the [[http://www.xs4all.nl/~huygensf/scala/scl_format.html][scale format]] of [[http://www.xs4all.nl/~huygensf/scala][Scala]] (Scala scale file format import is on the TODO list). New procedures in [[../doc/api/node2.html][Init]]: SetTuningTable, UnsetTuningTable. Affected methods getValueInMidi ([[../doc/api/node6.html][Score]].pitch) and getPitchInMidi ([[../doc/api/node6.html][Score]].note). - Documentation - [[../examples/Microtonal-MIDI-examples.oz][Examples]] demonstrating different approaches for creating microtonal MIDI output (e.g., distributing notes over multiple MIDI channels in a round-robin fashion for detuning with pitchbend, and alternatively assigning each monophonic voice its own MIDI channel). Also, the use of tuning tables is demonstrated in these examples. - Edited documentation, e.g., of [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]] to reflect the new options with tuning tables - Slightly revised and extended the [[../doc/api/node11.html][Out.midi]] documentation - Fixes and minor changes - Lilypond output: setting the optional argument to false resulted in invalid lilypond code, an unbalanced "}" (thanks Graham for the patch!) - New warning: outputting a score which is not fully determined to Lilypond, MIDI or Csound now results in a warning that the output may block or fail - [[../doc/api/node11.html][Out.midi]]: added functions NoteToUserEvent, NoteToPitchbend, CentToPitchbend for MIDI output clause definitions - [[../doc/api/node7.html][SMapping]]: added argument excludeSelf to methods collect, forAll, forAllThreaded, mappend, mappend, count, filter, find (these methods are inherited by all score items such as notes and containers) - [[../doc/api/node7.html][SMapping]]: Refactored method collect. Tree traversal is now stateless internally (graph traversal still uses state for marking visited objects) - [[../doc/api/node6.html][Score]] Score.copyScore2 - For further fixes see the [[../CHANGELOG.txt]]. * Changes in Version 0.9.4 (10 April 2008) - Revised Lilypond output ([[../doc/api/node9.html][Out]]) - This Strasheela version outputs Lilypond version 2.10.0 code (latest stable release) - Several [[../examples/Lilypond-Examples.oz][examples]] demonstrate the new Lilypond output features - Support for enharmonic notation (for enharmonic note objects) - Revised output of chords: a simultaneous container in a staff containing only notes can result in a chord (i.e. notes on a single staff sharing a stem) - Support for single staff polyphony: a simultaneous container in a staff can contain further sequential and simultaneous containers which will be notated as polyphonic voices - Out.makeLilyTupletClauses: easy Lilypond customisation for tuplet support - All Lilypond output procedures and functions support an additional optional argument 'wrapper' for inserting arbitrary Lilypond code at the beginning and end of the Lilypond output file (remember that the previous release already introduced the 'lily' info-tag for inserting arbitrary score object related Lilypond code) - New rules for automatic score layout: a staff is implicitly created for a sequential container which is either at the top-level or contained in a top-level simultaneous container. Typical Strasheela score topology for Lilypond output: top-level container is a simultaneous container and its items are sequential containers corresponding to staffs. If the top-level container is a sequential, however, then there is only a single staff. You can define arbitrary other nestings, but in such cases you should explicitly specify which container corresponds to a staff using the mentioned lily info-tag. Moreover, you can also explicitly create staffs which last for the duration of a container only. The implicit staff creation can be switched off entirely by setting the optional argument 'implicitStaffs' to false. - Facilitated customisation by clauses: the following functions are added to [[../doc/api/node9.html][Out]]: ToLilypond2, IsOutmostSeq, IsSingleStaffPolyphony, SingleStaffPolyphonyToLily, IsLilyChord, SimToLilyChord, GetUserLily, LilyRest - Revised reference documentation for Out.toLilypond and other Lilypond output related functions - Fixed several bugs concerning offset time notation - Removed function: Out.outmostSimToLily - Further Additions - Functor [[../contributions/anders/ET22/doc/node1.html][ET22]] for composition in [[http://en.wikipedia.org/wiki/22_equal_temperament][22-tone equal temperament]] - [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].rule: Cadence - Functor [[../contributions/anders/ET12/doc/node1.html][ET12]]: convenient 12 ET pitch notation functions - [[../doc/api/node8.html][SDistro]].makeSearchScript (and all Strasheela search engines): Added generic variable ordering 'dom/deg' - Further Documentation - Added multiple tonal [[../examples/HarmonicProgressions-31ET.oz][chord progression example CSPs]] in 31 ET, partly demonstrating the new cadence constraint and the Schoenberg constraints (introduced in the previous release) - Added [[../examples/HarmonicProgressions-22ET.oz][chord progression example CSPs]] in 22 ET - [[../examples/02-Fuxian-firstSpecies-Counterpoint.oz][Fuxian counterpoint example]] revised (now follows Fux' cadence rule) - [[../contributions/anders/HarmonisedScore/examples/HS/Fuxian-Counterpoint-with-Scale.oz][Generalised Fuxian counterpoint example]]: the user can specify the cantus firmus, even in different modes. Also, this example demonstrates the use of scale objects together with note objects. - Fixes and minor additions - [[../doc/api/node3.html][GUtils]].randIntoRange never selected upper random limit (and so random value ordering never selected upper domain boundary) - The [[../doc/api/node6.html][Score]].pitch class method getValueInMidi now supports any equal temperament pitch unit which fits the pattern et+, e.g., et31 or et53. This automatically enables Csound output for these formats (and any other output definition which uses the note pitch method getPitchInMidi). - Revised [[../contributions/anders/ET31/doc/node1.html][ET31]] chord database (e.g., the root of utonal chords like minor is now defined according to common convention as the lower tone of the fifth, not the 1/1) - [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].rules: added constraints DiatonicChord NoteInPCCollection - [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].score: added classes FullChord, ChordNote, ScaleNote - Added [[../doc/api/node4.html][LUtils]].lastN - Fixed bugs in [[../examples/05-MicrotonalChordProgression.oz]] (harmony database specification and accessing score object info attribute were obsolete) - [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].rules.schoenberg: fixed ResolveDescendingProgressions (no root repetition by default), added ConstantProgressionR - [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].score.chordsToScore: fixed distribution strategy (was extremely slow if note octave was more restricted than pitch class) - For further fixes see the [[../CHANGELOG.txt]]. * Changes in Version 0.9.3 (30 March 2008) - Code additions - Functor [[../contributions/anders/HarmonisedScore/doc/node6.html][HS.rules.schoenberg]]: a generalised version of Schoenbergs guidelines on writing good tonal chord progressions have been implemented as constraints - Functor [[../contributions/anders/ET31/doc/node1.html][ET31]] for composition in [[http://en.wikipedia.org/wiki/31_equal_temperament][31-tone equal temperament]]. A [[../contributions/anders/ET31/testing/ET31-test.oz][simple example]] demonstrates this functor with one of the Schoenberg constraints. - [[../contributions/anders/HarmonisedScore/doc/node3.html#entity137][HS.score.chordsToScore]] - [[../contributions/anders/Pattern/doc/node1.html][Pattern]].percentTrue_Range - [[../doc/api/node9.html][Out]]: functions SeqToLily, SimToLily, OutmostSimToLily, and MakeNoteToLily2. These functions simplify customising Lilypond output of sequential and simultaneous containers resp. notes. A number of related functions have been briefly documented. - Documentation - [[../examples/LilypondOutputWithEnahrmonicNotationKeysignaturesEtc.oz][New example]] demonstrating how users can improve Lilypond output for their purposes: the example defines enharmonic notation, support for key signatures at the beginning of a container and more (these features are meanwhile also supported by the default Lilypond output). - Fixes - Added support for explicit pause objects and enharmonic notation (for enharmonic note objects like HS.score.enharmonicNote in 12 ET) to the default Lilypond output - Arbitrary Lilypond code can be added to container and note objects via a tuple with the label 'lily' given to the info attribute of the score object. - HS.score.cMajorDegreeToPC: use Pythagorean C-major scale as reference, not JI C-major scale. This constraint is used for deriving enharmonic information. - [[../contributions/anders/HarmonisedScore/doc/node3.html][HS.score]]: a number of type checks for mixing classes have been added: IsInScaleMixinForChord, IsScaleDegreeMixinForChord, IsInversionMixinForChord, IsInChordMixinForNote, IsInScaleMixinForNote, IsEnharmonicSpellingMixinForNote, IsScaleDegreeMixinForNote, IsChordDegreeMixinForNote, IsPitchClassMixin - For further fixes see the [[../CHANGELOG.txt]]. * Changes in Version 0.9.2 (20 March 2008) - Code additions - Support for IOzSeF search engines which can solve complex constraint problems more efficiently. For example, all IOzSeF solvers support adaptive recomputation -- a technique saving memory (see [[http://books.google.com/books?id=BYXNltNPDGAC&pg=PR1&ots=XEZwT73n-z&dq=Programming+Constraint+Services&sig=vfakyMOLFnvtSWHV3_aUGo94iX8][Programming Constraint Services]]). Note that you can enable score output information actions for the IOzSeF 'Explorer' by calling ={Init.addIOzSeFOuts}= (e.g., in your OZRC init file). Added to [[../doc/api/node8.html][SDistro]]: IozsefInit, IozsefInitBest, IozsefExploreOne, IozsefExploreAll, IozsefExploreBest, IozsefSearchOne, IozsefSearchAll, IozsefSearchBest, SearchOneDepth - Concurrent filtering functions, suitable for delayed constraint application Added to [[../doc/api/node4.html][LUtils]]: CFilter, CFind - Processing of tempo curves and time shift functions, plus further funtionality Added to [[../contributions/anders/Fenv/doc/node1.html][Fenv]]: TimeShiftToTimeMap, Integrate, TempoCurveToTimeMap, ConcatenateTempoCurves, Reciprocal, FenvToMidiCC, ItemFenvToMidiCC, ItemFenvY, TemporalFenvY - Minor additions - [[../doc/api/node11.html][Out.midi]].note2Midi - [[../contributions/anders/HarmonisedScore/doc/node1.html][HS]].rules.commonPCs_Card - Documentation - First three chapters of the [[StrasheelaTutorial][tutorial]] text and the structure of the tutorial have been revised (thanks Graham!) - Added examples which demonstrate how to use continuous controllers in the score, and how to output them to MIDI, see [[../examples/ContinuousControllersInScore-MidiOutput.oz][here]] - Revised documentation for [[../doc/api/node8.html][SDistro]].makeSearchScript (explains common interface of all solvers in SDistro). Note that Distro.makeFDDistribution is now marked obsolete (kept for now as some examples use it) - Fixes - Distribution strategy with random value ordering now supports recomputation This is a very important fix: a randomisation of the solution is crucial for many musical CSPs and recomputation is essential for solving highly complex problems which would take too much memory (recomputation trades RAM for runtime). Refactored SDistro.makeSearchScript, GUtils.makeRandomGenerator and added GUtils.setRandomGeneratorSeed - Out.scoreToEvents and Out.midi.scoreToEvents_Midi: now also support processing the top-level score container for output (if it passes the given test) - [[../contributions/anders/Memoize/doc/node1.html][Memo]].memoize now uses a more efficient stateful data structure internally (dictionary instead of record constraints), whereas Memo.memoize2 is fully stateless and thus can be used in a CSP, but is less efficient. Also, changed interface of Memo.memoize into {Memoize Fn ?ClearP ?MemoFn} - [[../doc/api/node6.html][Score]].scoreObject info attribute: now convenient adding of 'labeled' info tags as records with a label supported. Revised ScoreObject method hasThisInfo: in case some info value is a record, then it is checked whether its label is given info atom New ScoreObject method getInfoRecord returns info record with given label. - HS.score.pitchClassCollection: archiving chords and scales in a solution score is now more stable: the chord/scale index is omitted from the output if chord/scale pitch classes and transposition are determined. That way, even if the chord/scale database was edited later (e.g., chords were added) so that the indices changed, the archived score will still work as long as the set of pitch classes for the original chords did not change. - For further fixes see the [[../CHANGELOG.txt]]. * Changes in Version 0.9.1 (21 January 2008) - Code additions - Added support for MIDI file import, see its [[../contributions/anders/MidiInput/doc/node1.html][documentation]] and [[../contributions/anders/MidiInput/testing/MidiInput-test.oz][test file]]. - Extended the harmony model: added classes Interval, and InversionMixinForChord (plus related classes like MakeInversionChordClass) and procedures PitchClassToPitch2, NoteInterval, and TransposeNote to the functor HS.score, and convenience functions GetChordIndex, GetScaleIndex, and GetIntervalIndex to the functor HS.db. See the documentation for [[../contributions/anders/HarmonisedScore/doc/node3.html][HS.score]] and [[../contributions/anders/HarmonisedScore/doc/node2.html][HS.db]]. Some simple examples are in the test file [[../contributions/anders/HarmonisedScore/testing/Score-test.oz][Score-test.oz]] (an InversionMixinForChord example in the the middle of the file, an Interval example is at the bottom). - Added to MIDI file output (Out.midi) the definitions IsCSVEvent, HasType, IsNoteOn, IsNoteOff, HasChannel, TicksToBeats, see the [[../doc/api/node11.html][documentation]]. - Added class Score.leaveUninitialisedParameterMixin, see the [[../doc/api/node6.html][documentation]]. - Added class SMapping.forNumericRangeArgs, see the [[../doc/api/node7.html][documentation]]. - Documentation - Revised beginning of the tutorial (thanks Graham!!). - Extended the music representation chapter: added an explanation for user-defined export procedures. - Revised sections of the reference, e.g., the [[../contributions/anders/HarmonisedScore/doc/node1.html][introduction to the harmony model]] - I realised a more suitable approach for the convenient delayed constraint application, a technique for constraining score contexts which are inaccessible in the problem definition. See my thesis [[http://strasheela.sourceforge.net/documents/TorstenAnders-PhDThesis.pdf][Composing Music by Composing Rules]], Sec. 6.3 "Constraining Inaccessible Score Contexts" for a discussion of this matter, and the example [[../testing/zy_Efficiency/compare-DelayingConstraint-ReifiedConstraint.oz][here]] for a demonstration of the new approach. - Extended the installation documentation (e.g. documentation of the init file templates). - Fixed bugs etc. - Score.copyScore did not create variable copies before. - HS.score.pcSetToSequence could not handle cases where its arg Root is not in its arg PCFS. - HS.score.pitchClassToPitch and HS.score.pitchClassToPitch2 now can also be used like a deterministic functions. - HS.db.setDB now has a refined handling of optional arguments and I added support for arbitrary equal temperament tunings (e.g., if PitchesPerOctave is set to 31 -- meaning 31 tone equal temperament -- then atom 'et31' is created for the pitch unit). - New procedure Memo.memoize2 allows use of function memoization inside constraint scripts (in contrast to the original Memo.memoize). - Pattern.someTrue/Pattern.someTrueR wrongly behaved like Pattern.oneTrue (thanks Graham for the patch!). - Refactoring: moved ExtendedScriptToScript from Realtime to GUtils. - For further fixes see the [[../CHANGELOG.txt]]. * Changes in Version 0.9 (2 October 2007) - Added solvers for real-time constraint programming (see the documentation at [[../contributions/anders/Realtime/doc/index.html]], and examples at [[../contributions/anders/Realtime/examples]] and [[../contributions/anders/Realtime/testing]]) - Added an OpenSound Control interface (see the documentation at [[../contributions/anders/OSC/doc/index.html]], and examples at [[../contributions/anders/OSC/examples]] and [[../contributions/anders/OSC/testing]]) - Added example for multi-core CPU machines at [[../examples/Parallel-Search.oz]] (see the [[http://www.mozart-oz.org/documentation/system/node13.html][Oz documentation]] for details on parallel search engines) - The installation process has been simplified for package creators (cf. the [[Installation#forPackageCreators][installation notes for package creators]]) - Refactored MIDI output - Generalised Out.shell for arbitrary interactive commandline programs (examples in test file include the interactive ruby shell and the Steel Bank Common Lisp compiler) - Fixed bug in example 01-AllIntervalSeries.oz for length \= 12 - Fixed bug in OzServer: compiler now waits for results before outputting anything - For further fixes see [[../CHANGELOG.txt]] * Changes in Version 0.8.3 (5 August 2007) - Documentation Additions - [[StrasheelaTutorial][Interactive Oz/Strasheela tutorial]] (first version) - Monograph on Strasheela meanwhile available for [[http://strasheela.sourceforge.net/documents/TorstenAnders-PhDThesis.pdf][download]] - Extended documentation of [[StrasheelaExamples][Strasheela Examples]] - Template for Strasheela extensions at [[../contributions/ExtensionTemplate]] - Code Additions - [[../contributions/anders/ScoreInspector/doc/node1.html][ScoreInspector]] - Complete rewrite of [[../contributions/anders/Fenv/doc/node1.html][Fenv]] (function envelope) - [[../contributions/anders/Gnuplot/doc/node1.html][Gnuplot interface]] - Extended/refactored the [[../contributions/anders/Motif/doc/node1.html][Motif]] contribution (e.g. new Motif.makeVariation considerable simplifies Motif definition, the set of test cases/examples is extended) - Extended the [[../contributions/anders/HarmonisedScore/doc/node1.html][HS (HarmonisedScore)]] contribution: added notion of degrees (e.g., scale degrees, but implicitly also enharmonic spelling): see, e.g., classes FullNote, EnharmonicNote, ScaleDegreeNote, ChordDegreeNote, and ScaleDegreeChord in functor [[../contributions/anders/HarmonisedScore/doc/node3.html][HS.score]]. - [[../contributions/anders/SettingsGUI/doc/node1.html][SettingsGUI]] (first version) - Extensions of the core Strasheela music representation (e.g., Out.saveScore, Out.loadScore, Score.copyScore, methods to [[../doc/api/node6.html#entity172][Score.scoreObject]]: unify, '==') - Added reflection capabilities to score objects: all score objects inherit from class [[../doc/api/node6.html#entity217][Reflection]] methods such as getClass, getClassName, getFeatures, getAttrNames etc. - Other Fixes - Important improvement of Strasheela initialisation (i.e., [[../_ozrc]]): please update your OZRC accordingly - Fixed bug which prevented MIDI output (removed illegal empty line in CSV output...) - Refactored transformation of score objects into the textual score format. Fixed some issues, and simplified the definition of new user classes - Refactored Strasheela's error messaging - Extended [[http://www.amazon.com/gp/product/030680106X/sr=8-3/qid=1149574638/ref=pd_bbs_3/104-1993379-1061553?%5Fencoding=UTF8][Partch]] [[../contributions/anders/HarmonisedScore/doc/node8.html][harmony database]] (e.g. added information to intervals) - Fixed various documentation details in the reference - Many fixes in Oz' Path functor - Many, many other fixes, see [[../CHANGELOG.txt][Strasheela/CHANGELOG.txt]] for details * Changes in Version 0.8.2 (1 January 2007) - Substantial extensions and debugging of the [[../contributions/anders/OzServer/doc/node1.html][OzServer]] - Added a Lisp client for the OzServer which allows to call Strasheela from within Common Lisp and use the result of these calls in Lisp programs (see [[../contributions/anders/OzServer/clients/oz-server-lisp-client]]). For this purpose, the OzServer can transform results implicitly into Lisp syntax (see [[../doc/api/node9.html#entity339][Out.ozToLisp]]). Tests are provided for SBCL on Linux and LispWorks on MacOS - Lilypond output made ready for new [[http://lilypond.org][Lilypond]] versions (temporary solution: just calling convert-ly first) - Fixed Bug in MIDI output causing timing errors - More fixes (for details see [[../CHANGELOG.txt][Strasheela/CHANGELOG.txt]], and the Strasheela subversion interface at http://strasheela.svn.sourceforge.net/viewvc/strasheela/) * Changes in Version 0.8.1 (7 September 2006) - Revised [[Installation][installation instructions]] (reacting to frequently asked questions..) and other documentation - Added support for further output formats: ENP (the format of [[http://www2.siba.fi/PWGL/][PWGL]]), and [[http://common-lisp.net/project/fomus/][Fomus]] -- and that way export to Finale and Sibelius (thanks Kilian!) - Added example [[../examples/07-Harmonised-L-system.oz][Harmonised-L-system]], and revised explanation in existing examples - Added =handle= attribute to all score objects in textual Strasheela score (cf. the =handle= attribute in [[http://www.mozart-oz.org/documentation/mozart-stdlib/wp/qtk/html/index.html][QTk]]) - Added [[../contributions/anders/HarmonisedScore/doc/node3.html#entity89][HS.score.harmoniseScore]], a function to simplify the definition of harmonic CSPs - Bugfix for =Out.playSound= - Debugged Common Music output - Various other fixes (see [[../CHANGELOG.txt][Strasheela/CHANGELOG.txt]]) * Changes in Version 0.8 (5 June 2006, initial release) No changes in the initial release ;-)