public Models.Track FileToString(string path) { Sequence midiSequence = new Sequence(); midiSequence.Load(path); MidiConverter mc = new MidiConverter(); return(mc.ConvertMidiToStaff(midiSequence)); }
private static void Main(string[] args) { var converter = new MidiConverter(); var midi = MidiFile.Read(@"Files\hey-jude.mid"); var input = converter.MidiToMelody(midi); var inputToSave = converter.MelodyToMidi(input); converter.SaveMidi(inputToSave, @"Files\input.mid"); var measureMutationOperator = new List <IMeasureMutationOperator> { new MeasureInversionOperator(), new MeasureReorganizationOperator(), new MeasureReplacementOperator(), new MeasureBrokerOperator(), new MeasureExchangeOperator(), }; var melodyMutationOperators = new List <IMelodyMutationOperator> { new MelodyExchangeOperator(), new MelodyInversionOperator(), }; var crossoverOperator = new RandomCutOffCrossoverOperator(measureMutationOperator, melodyMutationOperators); var initializer = new RandomInitializer(input); var selector = new TournamentSelector(); var replacementOperator = new HalfReplacementOperator(crossoverOperator, selector); var fitnessCalculator = new MelodySimilarityFitnessCalculator(); var stoppingCriterionChecker = new MultipleStoppingCriterionChecker(); var geneticAlgorithm = new MelodyGenerator(crossoverOperator, fitnessCalculator, initializer, measureMutationOperator, melodyMutationOperators, replacementOperator, selector, stoppingCriterionChecker); var geneticEventsManager = Singleton <GeneticEventsManager> .Instance(); geneticEventsManager.Set(input); // Test new List <Melody>() { input }.ForEach(currentMelody => fitnessCalculator.Calculate(input, currentMelody)); var output = geneticAlgorithm.Generate(); var outputToSave = converter.MelodyToMidi(output); converter.SaveMidi(outputToSave, @"Files\output.mid"); Console.ReadLine(); }
public MidiSaver() { _musicConverter = new MidiConverter(true); FilterName = "Midi"; Extension = ".mid"; }