/// <summary> /// CompositionStrategy constructor. /// </summary> /// <param name="noteChoices">The note choices</param> /// <param name="noteChoiceWeightGenerator">The note choice weight generator</param> /// <param name="compositionContexts">The composition contexts</param> public CompositionStrategy( NoteChoiceCollection noteChoices, NoteChoiceWeightGenerator noteChoiceWeightGenerator, CompositionContextCollection compositionContexts ) { _noteChoices = noteChoices; _noteChoiceWeightGenerator = noteChoiceWeightGenerator; _compositionContexts = compositionContexts; }
public static FuxExMachinaFactory GetTestFactory() { if (_instance != null) { return(_instance); } var random = new CryptoRandom(); var scaleDegreeEvaluator = new ScaleDegreeEvaluator(); var compositionContext = new CompositionContext(); var compositionContexts = new CompositionContextCollection(); var noteChoices = new NoteChoiceCollection(); var noteChoiceWeightGenerator = new NoteChoiceWeightGenerator(random); var ruleEvaluatorFactory = new RuleEvaluatorFactory( new AscendingSeventhRuleEvaluator(scaleDegreeEvaluator), new DissonanceRuleEvaluator(), new DissonantLeapRuleEvaluator(scaleDegreeEvaluator, compositionContext), new DoubledLeapRuleEvaluator(), new DoubledNoteRuleEvaluator(scaleDegreeEvaluator), new LeapReturnRuleEvaluator(), new MultipleLeapRuleEvaluator(), new ParallelPerfectsRuleEvaluator(scaleDegreeEvaluator) ); var aggregateEvaluator = new AggregateRuleEvaluator(ruleEvaluatorFactory); var mordentDecorator = new MordentDecorator(scaleDegreeEvaluator, random); var passingToneDecorator = new PassingToneDecorator(scaleDegreeEvaluator, random); var appogiaturaDecorator = new AppogiaturaDecorator(scaleDegreeEvaluator, random); _instance = new FuxExMachinaFactory( compositionContexts, noteChoices, noteChoiceWeightGenerator, scaleDegreeEvaluator, new CompositionEvaluator(aggregateEvaluator), new CompositionDecorator(passingToneDecorator, mordentDecorator, appogiaturaDecorator), new CryptoRandom(), new FuxExMachinaNullLogger() ); return(_instance); }
/// <summary> /// FuxExMachinaFactory constructor. /// </summary> /// <param name="compositionContexts">The composition contexts to use</param> /// <param name="noteChoices">The note choices to use</param> /// <param name="noteChoiceWeightGenerator">The note choice weight generator to use</param> /// <param name="scaleDegreeEvaluator">The scale degree evaluator to use</param> /// <param name="compositionEvaluator">The composition evaluator to use</param> /// <param name="compositionDecorator">The composition decorator to use</param> /// <param name="random">The random number generator to use</param> /// <param name="logger">The logger to use</param> public FuxExMachinaFactory( CompositionContextCollection compositionContexts, NoteChoiceCollection noteChoices, NoteChoiceWeightGenerator noteChoiceWeightGenerator, ScaleDegreeEvaluator scaleDegreeEvaluator, CompositionEvaluator compositionEvaluator, CompositionDecorator compositionDecorator, CryptoRandom random, IFuxExMachinaLogger logger ) { CompositionContexts = compositionContexts; NoteChoices = noteChoices; NoteChoiceWeightGenerator = noteChoiceWeightGenerator; ScaleDegreeEvaluator = scaleDegreeEvaluator; CompositionEvaluator = compositionEvaluator; CompositionDecorator = compositionDecorator; Random = random; Logger = logger; }