예제 #1
0
    def play(self, num=None, save=False, autosave=False):
        """
        This function takes in a song in ABC format string and plays it using music21 and pygame modules
        Note: Timidity must also be installed, as it's config file is required for the stream object.
        :param num: index of the ABC song
        :param save: If true, prompts the user if they want to save the tune after playing.
        superseded by autosave
        :param autosave: If true, automatically save the song after playing it.
        :return: None
        """

        if num is None: num = random.randint(0, len(self.tunes)-1)
        abc = self.header + self.tunes[num]

        try:
            # convert abc format to stream object and add the harp instrument
            tune = converter.parse(abc, format='abc')
            for p in tune.parts: p.insert(0, instrument.Flute())

            # Emit a tone to break up consecutive plays
            player = StreamPlayer(converter.parse(self.header + 'z12C12z12', format='abc'))
            player.play()

            # play music using pygame stream player
            player = StreamPlayer(tune)
            print("Playing tune #{}\nABC:   {}\n".format(num, self.tunes[num]))
            player.play()

            if autosave:
                self.save_tune(num)
            elif save and input('Would you like to save the song as a MIDI file? Y/N:   ').upper() == 'Y':
                self.save_tune(num)
        except AccidentalException:
            print('Accidental Exception thrown in ABC:')
            print(abc)
예제 #2
0
def playSound(n, speedfactor):
    if has_simpleaudio:
        soundof([n], n.duration / speedfactor)
    else:
        try:
            s = Stream()
            if n.isChord: n = n.chord21
            else: s.append(n.note21)
            sp = StreamPlayer(s)
            sp.play()
            # if n.isChord:
            #     s.append(n)
            # else:
            #     nn = Note(n.nameWithOctave)
            #     s.append(nn)
            # sp = StreamPlayer(s)
            # sp.play()
        except:
            print('Unable to play sounds, add -z option')
        return
예제 #3
0
 def playsound(self, n):
     s = Stream() 
     if n.isChord: n = n.chord21
     else: s.append(n.note21)
     sp = StreamPlayer(s)
     sp.play()
예제 #4
0
        for i in range(len(mf.tracks)):
            mf.tracks[i].events = [
                ev for ev in mf.tracks[i].events if ev.channel != 10
            ]

    return midiFileToStream(mf)


if __name__ == '__main__':
    # midi_stream = open_midi('music_samples_input/FFIX_Piano.mid', True)
    # midi_stream.plot('pianoroll')
    # midi_stream.plot('3dbars')
    # time_signature = midi_stream.getTimeSignatures()[0]
    # music_analysis = midi_stream.analyze('key')
    # print('Music time signature: {0}/{1}'.format(time_signature.beatCount, time_signature.denominator))
    # print('Expected music key: {0}'.format(music_analysis))
    # print('Music key confidence: {0}'.format(music_analysis.correlationCoefficient))

    # midi_stream = open_midi(
    #     'C:\\Users\\admin\\Downloads\\CREAM_SODA_-_Nikakix_Bolshe_Vecherinok.mp3.mid', False
    # )
    # midi_stream = music21.converter.parse(
    #     # 'C:\\Users\\admin\\Downloads\\CREAM_SODA_-_Nikakix_Bolshe_Vecherinok.mp3.mid'
    #     # 'C:\\Users\\admin\\Downloads\\07_Maroon_5___This_Love.mid'
    # )
    midi_stream = get_midi_stream_1()
    midi_stream.insert(0, ElectricBass())
    player = StreamPlayer(midi_stream)
    player.play()
    midi_stream.plot('pianoroll')
np.fill_diagonal(similarity_arr, 1)

for _, row in df.iterrows():
	if row['name1'] in name_map and row['name2'] in name_map:
		similarity_arr[name_map[row['name1']], name_map[row['name2']]] = row['score']

input('loaded! Press enter to begin...')
print('')

prefs = np.zeros(len(names))

curr = np.random.randint(len(names))

while curr != -1:
	curr_name = names[curr]
	sp = StreamPlayer(stream_map[curr_name])
	print('now playing %s' % curr_name)
	sp.play()
	ans = input('did you like it (q to quit)? (y)/n: ')

	if ans == 'q':
		break

	prefs /= 2
	prefs += similarity_arr[curr] * (-1 if ans == 'n' else 1)
	prefs[curr] = -np.inf
	top = np.argsort(-prefs)[:3]
	for i, t in enumerate(top):
		print('%d. %s' % (i + 1, names[t]))
	try:
		ans = int(input('choose from your new recommendations: ')) - 1
예제 #6
0
 def play_gameover(self):
     player = StreamPlayer(self.sheperd_tone(0, 1, instrument.Trombone()))
     player.play()
예제 #7
0
 def play(self, i):
     print("play " + str(i))
     player = StreamPlayer(self.sheperd_tone(i))
     player.play()