Ejemplo n.º 1
0
def get_songs(path):
    files = glob.glob('{}/*.mid*'.format(path))
    songs = []
    for f in tqdm(files):
        try:
            song = np.array(midi_manipulation.midiToNoteStateMatrix(f))
            if np.array(song).shape[0] > 50:
                songs.append(song)
        except Exception as e:
            raise e           
    return songs
Ejemplo n.º 2
0
def get_songs(path):
    files = glob.glob('{}/*.mid*'.format(path))
    songs = []
    for f in tqdm(files):
        try:
            song = np.array(midi_manipulation.midiToNoteStateMatrix(f))
            if np.array(song).shape[0] > 50:
                songs.append(song)
        except Exception as e:
            raise e
    return songs
Ejemplo n.º 3
0
def getStateMatrices():
	files = list_midis()
	stateMatrices = []
	i = 1
	for f in files:
		matrix = np.array(midi_manipulation.midiToNoteStateMatrix(f))
		if matrix.shape[0]>75:
			stateMatrices.append(matrix)
		os.system('clear')
		print "Loaded %d/%d files..."%(i, len(files))
		i = i+1
	return stateMatrices
Ejemplo n.º 4
0
def get_files(path):
    songs = []
    for a, b, c in os.walk(path):
        for f in c:
            song = os.path.join(a, f)
            try:
                n = np.array(midi_manipulation.midiToNoteStateMatrix(song))
                songs.append(n)
            except Exception as e:
                print("error: {} on file: {}".format(e, f))

    return songs
Ejemplo n.º 5
0
def get_songs(path):
    # search inside the path folder and read all files with .mid extension
    files = glob.glob(f'{ path }/*.mid*')
    songs = []
    for f in tqdm(files):
        try:
            song = np.array(midi_manipulation.midiToNoteStateMatrix(f))
            if np.array(song).shape[0] > 50:
                songs.append(song)
        except Exception as e:
            raise e
    return songs
Ejemplo n.º 6
0
def get_songs(path):
    # TODO: refine file choices
    # TODO: replace Pop_Music_Midi with out pop music repo
    files = glob.glob('{}/*.mid*'.format(path))
    songs = []
    for f in tqdm(files):
        try:
            song = np.array(midi_manipulation.midiToNoteStateMatrix(f))
            if np.array(song).shape[0] > 50:
                songs.append(song)
        except Exception as e:
            raise e
    return songs
Ejemplo n.º 7
0
def menu(output="output"):
    files = get_files()
    songs = np.zeros((0, 156))
    for f in tqdm(files):
        try:
            song = np.array(midi_manipulation.midiToNoteStateMatrix(f))
            songs = np.concatenate((songs, song))
        except Exception as e:
            raise e
    print("samples merging ...")
    print(np.shape(songs))
    if (not ".mid" in output):
        output += ".mid"

    midi_manipulation.noteStateMatrixToMidi(songs, output)
Ejemplo n.º 8
0
def create_dataset(min_length):
    songs = glob.glob('/home/elias/Documents/MuseScore2/Scores/mid/*.mid*')

    encoded_songs = []
    discarded = 0
    for song in songs:
        encoded_song = midi_manipulation.midiToNoteStateMatrix(song)
        encoded_song = make_one_hot_notes(encoded_song)
        if len(encoded_song) >= min_length:
            encoded_songs.append(encoded_song)
        else:
            discarded += 1
    print("{} songs processed".format(len(songs)))
    print("{} songs discarded".format(discarded))
    return encoded_songs
Ejemplo n.º 9
0
def get_histogram(midi_file):
    """
	Given a midi file, convert the midi file into state matrix and add all matrices to get the frequency
	of each note in the song
	"""
    song = midi_manipulation.midiToNoteStateMatrix(midi_file)
    song = np.array(song)

    x, y = song.shape
    total = np.zeros(y, )

    for i in range(x):
        total += song[i]

    return total
Ejemplo n.º 10
0
def menu(output="output"):
    files = get_files()
    songs = np.zeros((0,156))
    for f in tqdm(files):
        try:
            song = np.array(midi_manipulation.midiToNoteStateMatrix(f))

            if np.array(song).shape[0] > 10:
                #songs.append(song)
                songs = np.concatenate((songs,song))
        except Exception as e:
            raise e
    print "samples merging ..."
    print np.shape(songs)
    if(not ".mid" in output):
        output+=".mid"

    midi_manipulation.noteStateMatrixToMidi(songs, output)
    miditomp3.midi_to_mp3(output)
    os.remove(output)
Ejemplo n.º 11
0
import numpy as np
from tqdm import tqdm
import glob
#sudo pip install msgpack-python
import msgpack
import midi_manipulation

#files = glob.glob('{}/*.mid*'.format(path))
try:
    files = glob.glob('generated*.mid*')
except Exception as e:
    raise e

songs = np.zeros((0, 156))
for f in tqdm(files):
    try:
        song = np.array(midi_manipulation.midiToNoteStateMatrix(f))

        if np.array(song).shape[0] > 10:
            #songs.append(song)
            songs = np.concatenate((songs, song))
    except Exception as e:
        raise e
print "samlpes merging ..."
print np.shape(songs)
midi_manipulation.noteStateMatrixToMidi(songs, "final")
Ejemplo n.º 12
0
highest_note = 102  # the index of the highest note on the piano roll
note_range = highest_note - lowest_note  # the note range

# files = glob.glob('{}/*.mid*'.format('midis'))
files = glob.glob('{}/*.mid*'.format('midis'))
songs = []

pos = 0
neg = 0
print(len(files))
counter = 0
for i, file in enumerate(files):
    try:
        if i % 10 == 0:
            print(i)
        song = np.asarray(midiToNoteStateMatrix(file))
        if len(song) < 2:
            pos += 1
            print(pos)
            os.remove(file)
        else:
            neg += 1
            end = (np.floor(song.shape[0] / num_timesteps) *
                   num_timesteps).astype(np.int16)
            song = song[:end]

            song2 = np.hstack([song[:, 1:], np.zeros([song.shape[0], 1])])
            song3 = np.hstack([song2[:, 1:], np.zeros([song.shape[0], 1])])

            noteStateMatrixToMidi(song, name=("mynewdata/sample_" + str(i)))
Ejemplo n.º 13
0
def generate_feedable_song_from_file(midi_file):
    with open(midi_file, "r") as f:
        song = np.array(midi_manipulation.midiToNoteStateMatrix(f))
        if not np.array(song).shape[0] > SONG_SLICE_START + SONG_SLICE_COUNT:
            raise Exception("MIDI File too short.")
        return slice_song(song)
Ejemplo n.º 14
0
# author chinabluewu@github

import numpy as np
from tqdm import tqdm
import glob
#sudo pip install msgpack-python
import msgpack
import midi_manipulation

#files = glob.glob('{}/*.mid*'.format(path))
try:
    files = glob.glob('generated*.mid*')
except Exception as e:
    raise e

songs = np.zeros((0,156))
for f in tqdm(files):
    try:
        song = np.array(midi_manipulation.midiToNoteStateMatrix(f))

        if np.array(song).shape[0] > 10:
            #songs.append(song)
            songs = np.concatenate((songs,song))
    except Exception as e:
        raise e
print "samlpes merging ..."
print np.shape(songs)
midi_manipulation.noteStateMatrixToMidi(songs, "final")
import midi
import midi_manipulation as mm
import numpy as np

#pattern = midi.read_midifile("try.mid")
notestatematrix = mm.midiToNoteStateMatrix(
    "Pop_Music_Midi/Around The World - Chorus.midi")

count = 0
for track in notestatematrix:
    count += 1
    print(len(track))

print(count)
"""
statematrix = mm.midiToNoteStateMatrix("Pop_Music_Midi/All The Small Things - Chorus.midi")

span = 78

statematrix = np.array(statematrix)

if not len(statematrix.shape) == 3:

    statematrix = np.dstack((statematrix[:, :span], statematrix[:, span:]))

statematrix = np.asarray(statematrix)

pattern = midi.Pattern()

track = midi.Track()
pattern.append(track)