def paginate_sound(): global sound_pages, sound_page_idx print 'start paginate' curseg = getseg() if curseg: print 'curseg', curseg.start, curseg.idx sound_pages = [] sound_page_idx = 0 if SOUND_ORDERINGS[sound_order_idx] == 'time': print 'order by time' segs = tape.getSegments() segs.sort(cmp=lambda x,y: int(44100*(x.start-y.start))) npages = 10 npp = len(segs) / npages for i in range(npages): psegs = segs[i*npp:(i+1)*npp] sound_pages.append(psegs) if curseg and curseg in psegs: print 'curseg in timepage', i sound_page_idx = i elif SOUND_ORDERINGS[sound_order_idx] == 'cluster': clusters = tape.getClusters() for idx,(k,v) in enumerate(sorted(clusters.items())): sound_pages.append(v) if curseg and curseg in v: print 'curseg in cluster', idx sound_page_idx = idx elif SOUND_ORDERINGS[sound_order_idx] == 'similarity': similarity_tape = Tape(tape.path, nbins=9) base = curseg nsegs = min(len(similarity_tape.getSegments()), 100) page = [] sound_pages.append(page) while len(page) < nsegs: cluster,idx = similarity_tape.getClosestUnused(base) base = similarity_tape.getClusters()[cluster][idx] similarity_tape.use(base) page.append(base) else: # closeness base = curseg page = [] ordered = tape.orderBySegment(base) sound_pages.append(ordered[:100]) print 'done paginate'
def paginate_sound(): global sound_pages, sound_page_idx print 'start paginate' curseg = getseg() if curseg: print 'curseg', curseg.start, curseg.idx sound_pages = [] sound_page_idx = 0 if SOUND_ORDERINGS[sound_order_idx] == 'time': print 'order by time' segs = tape.getSegments() segs.sort(cmp=lambda x, y: int(44100 * (x.start - y.start))) npages = 10 npp = len(segs) / npages for i in range(npages): psegs = segs[i * npp:(i + 1) * npp] sound_pages.append(psegs) if curseg and curseg in psegs: print 'curseg in timepage', i sound_page_idx = i elif SOUND_ORDERINGS[sound_order_idx] == 'cluster': clusters = tape.getClusters() for idx, (k, v) in enumerate(sorted(clusters.items())): sound_pages.append(v) if curseg and curseg in v: print 'curseg in cluster', idx sound_page_idx = idx elif SOUND_ORDERINGS[sound_order_idx] == 'similarity': similarity_tape = Tape(tape.path, nbins=9) base = curseg nsegs = min(len(similarity_tape.getSegments()), 100) page = [] sound_pages.append(page) while len(page) < nsegs: cluster, idx = similarity_tape.getClosestUnused(base) base = similarity_tape.getClusters()[cluster][idx] similarity_tape.use(base) page.append(base) else: # closeness base = curseg page = [] ordered = tape.orderBySegment(base) sound_pages.append(ordered[:100]) print 'done paginate'
import os import numm USAGE = 'python bsides.py SOURCE [COMPOSITION]' if len(sys.argv) < 2: print USAGE sys.exit(1) source = sys.argv[1] comppath = source + '.composition.pkl' if len(sys.argv) > 2: comppath = sys.argv[2] tape = Tape(source, nbins=9) # preload array tape.getArray() composition = Composition([]) if os.path.exists(comppath): composition = Composition.fromfile(comppath) for r in composition.rhythms: for g in r.groups: for s in g: tape.use(s) structure_init() numm.run(**globals())