public Note[] GenerateMelody(MelodySequence inputSeq) { SampleSet set = new SampleSet(); var mainNotes = inputSeq.ToArray(); for (int j = INPUT_NOTES; j < mainNotes.Length && j < 200; j++) { Note[] prevNotes = new Note[INPUT_NOTES]; for(int k = 0; k < INPUT_NOTES; k++) { prevNotes[INPUT_NOTES - k-1] = mainNotes[j - k]; } Sample s = GetSample(prevNotes, null); set.Add(s); } List<Note> notes = new List<Note>(); var reverseHashes = Utils.ReverseDictionary(noteHashes); int mainTime = 0; int accompTime = 0; int i = 0; foreach (Sample sample in set) { var res = network.Compute(sample.Inputs); //Note n = new Note((NoteNames)((int)(res[0] * 12)), 6, (Durations)((int)(res[1] * 64.0))); Note n = new Note((int)(res[0] * 128), (int)(res[1] * 64.0)); n.Duration *= 2; n.StandardizeDuration(); if (mainTime >= accompTime) { notes.Add(n); accompTime += (int)n.Duration; } if(i++ % 20 == 0) { notes.Add(new Note(-1, mainTime - accompTime)); } mainTime += (int)(sample.Inputs[1] * 64); } return notes.ToArray(); }