Esempio n. 1
0
    def gen(self, path, nnotes=200, motif=None):
        self.t = 0
        if motif:
            motif = parse(motif)
        print "="*60
        print "Generating Shepard Tones"
        tobj = TrackObj(trackName="Track1")
        for i in range(nnotes):
            dur = 1
            if motif:
                j,dur = motif[i % len(motif)]
                if j == 'r':
                    self.t += dur*self.ticksPerBeat
                    continue
            else:
                j = i % 12
            #print i, j
            notes = self.getChord(j, dur)
            self.t += dur*self.ticksPerBeat
            for note in notes:
                tobj.addNote(note)

        midiObj = MidiObj()
        midiObj.addTrack(tobj)
        midiObj.saveAsJSON(path)
        mpath = path.replace(".json", ".mid")
        midiObj.saveAsMidi(mpath)
Esempio n. 2
0
def genTrack():
    t = TrackObj()
    for i in range(10):
        t0 = 400*i
        v1 = 50
        v2 = 90
        v3 = 30
        t.addNote(Note(50, t0,     v1,  25))
        t.addNote(Note(51, t0+50,  v2,  25))
        t.addNote(Note(52, t0+200, v2,  50))
        t.addNote(Note(53, t0+300, v2,  25))
        t.setMaxTime(t0 + 400)
    return t
Esempio n. 3
0
def genTrackBasicBeat1(resolution):
    t = TrackObj()
    numMeasures = 8
    tpb = resolution  # ticks per beat
    bpmeasure = 4           # beats per measure
    for m in range(numMeasures):
        b = m*bpmeasure
        t0 = b * tpb
        print "b: %3d t: %8.3f" % (b, t0)
        #              c  p   t          v    dur
        t.addNote(Note(0, 50, t0,        90,  0.25*tpb))
        t.addNote(Note(0, 50, t0+1*tpb,  70,  0.25*tpb))
        t.addNote(Note(0, 50, t0+2*tpb,  70,  0.25*tpb))
        t.addNote(Note(0, 50, t0+3*tpb,  70,  0.25*tpb))
    t.setMaxTime(t0 + bpmeasure*tpb)
    m = MidiObj(resolution=tpb)
    m.addTrack(t)
    return m
Esempio n. 4
0
 def remapv(self, tObj, v, tau=None, rtObj=None, ch=0, inst=0):
     print "------------------------"
     print "remapv", v
     T = tObj.getMaxTime()
     if rtObj == None:
         rtObj = TrackObj()
         rtObj.addEvent(ProgChangeEvent(0, ch, inst))
     print "T:", T
     if tau == None:
         tau = T
     tau = T
     rmap = RissetMapper(T, tau)
     reMax = rmap.get_te(T, 0)[0]
     print "rmap(T):", reMax
     tvals = tObj.events.keys()
     tvals.sort()
     nNotes = 0
     for tv in tvals:
         for ev in tObj.events[tv]:
             if not isinstance(ev, Note):
                 print "Skipping non note object", ev.__class__.__name__
                 continue
             tl = ev.t0
             dur = ev.dur
             tes = rmap.get_te(tl, v)
             #print "tl: %7.2f te: %s" % (tl, tes)
             for te in tes:
                 rate = rmap.get_rate(te, v)
                 p = self.power(rate)
                 #print "v: %d te: %6.2f rate: %5.2f p: %5.1f" % (v, te, rate, p)
                 dr = dur / rate
                 if rate > 2:
                     dr = dur
                 note = Note(ch, ev.pitch, round(te),
                             round(p * ev.velocity), dr)
                 rtObj.addNote(note)
                 nNotes += 1
     #rtObj.resolution = tObj.resolution
     rtObj.instruments = [inst]
     rtObj.channels = [ch]
     print "nNotes:", nNotes
     return rtObj
Esempio n. 5
0
 def remapv(self, tObj, v, tau=None, rtObj=None, ch=0, inst=0):
     print "------------------------"
     print "remapv", v
     T = tObj.getMaxTime()
     if rtObj == None:
         rtObj = TrackObj()
         rtObj.addEvent(ProgChangeEvent(0, ch, inst))
     print "T:", T
     if tau == None:
         tau = T
     tau = T
     rmap = RissetMapper(T, tau)
     reMax = rmap.get_te(T,0)[0]
     print "rmap(T):", reMax
     tvals = tObj.events.keys()
     tvals.sort()
     nNotes = 0
     for tv in tvals:
         for ev in tObj.events[tv]:
             if not isinstance(ev, Note):
                 print "Skipping non note object", ev.__class__.__name__
                 continue
             tl = ev.t0
             dur = ev.dur
             tes = rmap.get_te(tl, v)
             #print "tl: %7.2f te: %s" % (tl, tes)
             for te in tes:
                 rate = rmap.get_rate(te, v)
                 p = self.power(rate)
                 #print "v: %d te: %6.2f rate: %5.2f p: %5.1f" % (v, te, rate, p)
                 dr = dur/rate
                 if rate>2:
                     dr = dur
                 note = Note(ch, ev.pitch, round(te), round(p*ev.velocity), dr)
                 rtObj.addNote(note)
                 nNotes += 1
     #rtObj.resolution = tObj.resolution
     rtObj.instruments = [inst]
     rtObj.channels = [ch]
     print "nNotes:", nNotes
     return rtObj
Esempio n. 6
0
    def gen(self, path, nnotes=200, motif=None):
        self.t = 0
        if motif:
            motif = parse(motif)
        print "="*60
        print "Generating Shepard Tones"
        tobj = TrackObj(trackName="Track1")
        for i in range(nnotes):
            dur = 1
            if motif:
                j,dur = motif[i % len(motif)]
            else:
                j = i % 12
            #print i, j
            notes = self.getChord(j, dur)
            for note in notes:
                tobj.addNote(note)

        midiObj = MidiObj()
        midiObj.addTrack(tobj)
        midiObj.saveAsJSON(path)
Esempio n. 7
0
    def gen(self, path, nnotes=200, motif=None):
        self.t = 0
        if motif:
            motif = parse(motif)
        print "=" * 60
        print "Generating Shepard Tones"
        tobj = TrackObj(trackName="Track1")
        for i in range(nnotes):
            dur = 1
            if motif:
                j, dur = motif[i % len(motif)]
            else:
                j = i % 12
            #print i, j
            notes = self.getChord(j, dur)
            for note in notes:
                tobj.addNote(note)

        midiObj = MidiObj()
        midiObj.addTrack(tobj)
        midiObj.saveAsJSON(path)
Esempio n. 8
0
def genShepard(path, nvoices=5, noctaves=5, nnotes=200, motif=None):
    if motif:
        motif = parse(motif)
    print "=" * 60
    print "Generating Shepard Tones"
    tobj = TrackObj(trackName="Track1")
    t = 0
    for v in range(nvoices):
        sv = ShepVoice(noctaves, 12 * v)
        for i in range(nnotes):
            j = i
            dur = 1
            if motif:
                j, dur = motif[i % len(motif)]
            #print j, dur
            tOn, note = sv.getNote(t, j, dur)
            t += sv.ticksPerBeat * dur
            if note:
                #print i, note.toList()
                tobj.addNote(note)
    midiObj = MidiObj()
    midiObj.addTrack(tobj)
    midiObj.saveAsJSON(path)
Esempio n. 9
0
def genShepard(path, nvoices=5, noctaves=5, nnotes=200, motif=None):
    if motif:
        motif = parse(motif)
    print "="*60
    print "Generating Shepard Tones"
    tobj = TrackObj(trackName="Track1")
    t = 0
    for v in range(nvoices):
        sv = ShepVoice(noctaves, 12*v)
        for i in range(nnotes):
            j = i
            dur = 1
            if motif:
                j,dur = motif[i % len(motif)]
            #print j, dur
            tOn, note = sv.getNote(t, j, dur)
            t += sv.ticksPerBeat*dur
            if note:
                #print i, note.toList()
                tobj.addNote(note)
    midiObj = MidiObj()
    midiObj.addTrack(tobj)
    midiObj.saveAsJSON(path)
Esempio n. 10
0
def genTrackBasicBeat0(resolution):
    t = TrackObj()
    numMeasures = 8
    tpb = resolution  # ticks per beat
    bpm = 4  # beats per measure
    for m in range(numMeasures):
        b = m * bpm
        t0 = b * tpb
        print "b: %3d t: %8.3f" % (b, t0)
        #              c  p   t          v    dur
        t.addNote(Note(0, 50, t0, 90, 0.5 * tpb))
        #t.addNote(Note(0, 51, t0+1*tpb,  60,  0.5*tpb))
        t.addNote(Note(0, 51, t0 + 0.5 * tpb, 60, 0.25 * tpb))
        t.addNote(Note(0, 52, t0 + 2 * tpb, 70, 0.25 * tpb))
        t.addNote(Note(0, 53, t0 + 3 * tpb, 70, 0.5 * tpb))
    t.setMaxTime(t0 + bpm * tpb)
    m = MidiObj(resolution=tpb)
    m.addTrack(t)
    return m