Esempio n. 1
0
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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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
Esempio n. 4
0
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")
Esempio n. 5
0
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)
Esempio n. 6
0
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))