def main(): musics = ['billiejean', 'wall'] for music in musics: folder = '/home/hparmantier/Montreux Analytics/Git/MarkovJazzFestival/Data/' intra = builder.IntraGraph(folder + music + '.mp3') path = intra.simulate(save=True, filename=music + '.wav') edge_path = nodes2edges(path)[::-1] d = {"array": edge_path} d["beat_duration"] = intra.beat_duration save2json(d, music)
def test_segmentation(self, song): song_graph = intra.IntraGraph(song) S = song_graph.similarity_matrix(filtering=False) seg_beats = self.segment_song(S, song_graph.nbeats) print(seg_beats) for i in range(len(seg_beats) - 1): filename = 'wall_%d.wav' % i librosa.output.write_wav( filename, song_graph.y[512 * song_graph.beats[seg_beats[i]]:512 * song_graph.beats[seg_beats[i + 1]]], song_graph.sr)
def build_aff_matrix(self): seg_list = [] fv = [] #feature vector song_limits = [0] songs = [] all_beats = [] c = 0 shift = 0 for filename in os.listdir(self.directory): if filename.endswith(".mp3"): print(filename) song_graph = intra.IntraGraph(self.directory + filename) song_limits.append(song_limits[-1] + song_graph.nbeats) #print(song_limits) features = song_graph.beat_features() seg = self.segment_song(song_graph.similarity_matrix(), song_graph.nbeats) for i in range(len(seg) - 1): print(i) mean_feat = np.mean(features[:, seg[i]:seg[i + 1]], axis=1) fv.append(mean_feat) self.song_seg.append((c, i)) song_graph.seg = seg songs.append(song_graph) all_beats.append(seg + shift * np.ones(len(seg))) shift += song_graph.nbeats c += 1 if c >= self.max_songs: break featvec = np.transpose(np.asarray(fv)) #pdb.set_trace() aff = librosa.segment.recurrence_matrix(featvec, width=1, metric='euclidean', sym=True, mode='affinity') self.songs = songs self.nsongs = len(songs) self.song_limits = song_limits self.all_beats = [ int(item) for sublist in all_beats for item in sublist ] print(self.all_beats) return aff
def init(): folder = '/home/hparmantier/Montreux Analytics/Git/MarkovJazzFestival/Data/' #musics = [os.path.splitext(f)[0] for f in os.listdir(folder)] musics = ['Jamiroquai-Cosmic Girl'] for i, music in enumerate(musics): print("########### " + music + " ############") print("########### " + str(i + 1) + "/" + str(len(musics)) + " #########") intra = builder.IntraGraph(folder + music + '.mp3') path = intra.simulate(save=True, filename=music + '.wav') edge_path = nodes2edges(path)[::-1] d = {"array": edge_path} ## d["beat_duration"] = intra.beat_duration ## save2json(d, music) ## neo = writer.connect_to_db() print("Pushing to Neo4j...") writer.intra_neo_from_nx(intra.G, edge_path, neo, music) print("Done")
def print_duration(): folder = '/home/hparmantier/Montreux Analytics/Git/MarkovJazzFestival/Data/' musics = ['together'] for music in musics: intra = builder.IntraGraph(folder + music + '.mp3') print(intra.beat_duration)
def check_duration(): folder = '/home/hparmantier/Montreux Analytics/Data/musics/inter/' musics = [os.path.splitext(f)[0] for f in os.listdir(folder)] for music in musics: intra = builder.IntraGraph(folder + music + '.mp3') print(music + ': ' + str(intra.beat_duration))