예제 #1
0
def generate(startPitch, duration):
    """generate a sequence of notes note: doesn't quite work since we need to incorporate voice'"""
    sequence = []
    lastNote = startPitch
    #{"st": 8  ,  "pitch": 67,  "dur": 4 ,  "keysig": -1,  "timesig": 12,  "fermata": 0},
    #lets just say the keysig is -1 for now

    for i in range(duration):
        time = (i + 1) * 4
        note = singleGen(lastNote, probabilities)
        toAdd = {
            "st": time,
            "pitch": note,
            "dur": 4,
            "keysig": -1,
            "timesig": 12,
            "fermata": 0
        }
        toAdd["pitch"] = normalize.denormalize_pitch(toAdd)
        sequence.append(toAdd)
        lastNote = note

    print "Sequence is: "
    for note in sequence:
        print note

    s = "sequence_%s_%s.p" % (startPitch, duration)
    #print "Writing note sequence to ", s

    #midify the new sequence
    midify.midify(sequence, "genoutput%s%s" % (startPitch, duration))
예제 #2
0
 def testRoundTrip(self):
     jsonDict = midiTojson.genJson(midifile)
     midify.midify(jsonDict, miditempfile)
     newJsonDict = midiTojson.genJson("../dataset/midi/" + miditempfile +
                                      ".mid")
     #remidify
     midify.midify(newJsonDict, miditempfile2)
     print jsonDict
     print "_V" * 40
     print newJsonDict
     for i in range(0, len(newJsonDict) - 1):
         for j in range(0, len(newJsonDict[i]) - 1):
             if not newJsonDict[i][j]["pitch"] == jsonDict[i][j]["pitch"]:
                 print "i :: ", i
                 print "j :: ", j
                 print newJsonDict[i][j]
                 print jsonDict[i][j]
             if not newJsonDict[i][j]["dur"] == jsonDict[i][j]["dur"]:
                 print "i :: ", i
                 print "j :: ", j
                 print newJsonDict[i][j]
                 print jsonDict[i][j]
             self.assertEqual(newJsonDict[i][j]["pitch"],
                              jsonDict[i][j]["pitch"])
             self.assertEqual(newJsonDict[i][j]["dur"],
                              jsonDict[i][j]["dur"])
예제 #3
0
파일: graph.py 프로젝트: rsofaer/chorales
def chords_to_midi(chords):
    """takes a chord sequence from generate and jsons then midis it"""
    #first need to put it in json format (4 voices)
    json_dict = [[], [], [], []]
    note_template = {
        'timesig': None,
        'keysig': 0,
        'tempo': 90,
        'st': 0,
        'pitch': None,
        'dur': 0,
        'fermata': 0
    }

    chords = map(lambda c: denormalize_chord(c.chord), chords)

    for voice in range(len(chords[0])):
        cur_note = note_template.copy()
        cur_note['pitch'] = chords[0][voice]
        for time in range(0, len(chords)):
            if chords[time][voice] == cur_note['pitch']:
                cur_note['dur'] += 4
            else:
                json_dict[voice].append(cur_note)
                cur_note = note_template.copy()
                cur_note['st'] = time * 4
                cur_note['pitch'] = chords[time][voice]
                cur_note['dur'] = 4
        json_dict[voice].append(cur_note)

    midify(json_dict)
예제 #4
0
파일: graph.py 프로젝트: rsofaer/chorales
def chords_to_midi(chords):
    """takes a chord sequence from generate and jsons then midis it"""
    #first need to put it in json format (4 voices)
    json_dict = [[],[],[],[]]
    note_template = {'timesig': None, 'keysig': 0, 'tempo': 90, 'st': 0, 'pitch': None, 'dur': 0, 'fermata': 0}

    chords = map(lambda c: denormalize_chord(c.chord), chords)

    for voice in range(len(chords[0])):
        cur_note = note_template.copy()
        cur_note['pitch'] = chords[0][voice]
        for time in range(0, len(chords)):
            if chords[time][voice] == cur_note['pitch']:
               cur_note['dur'] += 4
            else:
               json_dict[voice].append(cur_note)
               cur_note = note_template.copy()
               cur_note['st'] = time*4
               cur_note['pitch'] = chords[time][voice]
               cur_note['dur'] = 4
        json_dict[voice].append(cur_note)

    midify(json_dict)
예제 #5
0
 def testRoundTrip(self):
     jsonDict = midiTojson.genJson(midifile)
     midify.midify(jsonDict, miditempfile)
     newJsonDict = midiTojson.genJson("../dataset/midi/" + miditempfile + ".mid")
     #remidify
     midify.midify(newJsonDict, miditempfile2)
     print jsonDict
     print "_V"*40
     print newJsonDict
     for i in range(0,len(newJsonDict)-1):
         for j in range(0, len(newJsonDict[i])-1):
             if not newJsonDict[i][j]["pitch"] == jsonDict[i][j]["pitch"]:
                 print "i :: ", i
                 print "j :: ", j
                 print newJsonDict[i][j]
                 print jsonDict[i][j]
             if not newJsonDict[i][j]["dur"] == jsonDict[i][j]["dur"]:
                 print "i :: ", i
                 print "j :: ", j
                 print newJsonDict[i][j]
                 print jsonDict[i][j]
             self.assertEqual(newJsonDict[i][j]["pitch"], jsonDict[i][j]["pitch"])
             self.assertEqual(newJsonDict[i][j]["dur"], jsonDict[i][j]["dur"])