コード例 #1
0
def ns_performance(temperature, output_path):
	# Constants.
	t1 = time.time()
	BUNDLE_DIR = './bundles'
	MODEL_NAME = 'performance_with_dynamics'
	BUNDLE_NAME = MODEL_NAME + '.mag'

	BUNDLE_ABS_PATH = '/Users/bregy/PycharmProjects/neurospace/bundles/performance_with_dynamics.mag'

	#mm.notebook_utils.download_bundle(BUNDLE_NAME, BUNDLE_DIR)
	bundle = mm.sequence_generator_bundle.read_bundle_file(BUNDLE_ABS_PATH)
	#bundle = mm.sequence_generator_bundle.read_bundle_file(os.path.join(BUNDLE_DIR, BUNDLE_NAME))
	generator_map = performance_sequence_generator.get_generator_map()
	generator = generator_map[MODEL_NAME](checkpoint=None, bundle=bundle)
	generator.initialize()
	generator_options = generator_pb2.GeneratorOptions()
	generator_options.args['temperature'].float_value = temperature
	generate_section = generator_options.generate_sections.add(start_time=0, end_time=120)
	sequence = generator.generate(music_pb2.NoteSequence(), generator_options)

	# Play this masterpiece.

	t2 = time.time()

	midi = mm.sequence_proto_to_pretty_midi(sequence)

	a = midi.fluidsynth()
	write(output_path, 44100, a)
コード例 #2
0
def performance_rnn(record_file):
    start_time = 0.0
    timestep = 0.5
    end_time = 0.5
    melody_sequence = music_pb2.NoteSequence()
    with open(record_file, 'r') as record:
        for line in record:
            melody_sequence.notes.add(pitch=pitch_dict[line.strip()], \
                                start_time=start_time, end_time=end_time, velocity=80)
            start_time += timestep
            end_time += timestep
    melody_sequence.total_time = end_time
    melody_sequence.tempos.add(qpm=60)

    input_sequence = melody_sequence
    num_steps = 8192  # change this for shorter or longer sequences
    temperature = 1.0  # the higher the temperature the more random the sequence.

    bundle = mm.sequence_generator_bundle.read_bundle_file(
        '/home/ubuntu/team15/bundle/performance_with_dynamics.mag')
    generator_map = performance_sequence_generator.get_generator_map()
    generator = generator_map['performance_with_dynamics'](checkpoint=None,
                                                           bundle=bundle)
    generator.initialize()

    # Derive the total number of seconds to generate.
    seconds_per_step = 1.0 / generator.steps_per_second
    generate_end_time = num_steps * seconds_per_step

    # Specify start/stop time for generation based on starting generation at the
    # end of the priming sequence and continuing until the sequence is num_steps
    # long.
    generator_options = generator_pb2.GeneratorOptions()
    # Set the start time to begin when the last note ends.
    generate_section = generator_options.generate_sections.add(
        start_time=input_sequence.total_time, end_time=generate_end_time)

    generator_options.args[
        'temperature'].float_value = 1.0  # Higher is more random; 1.0 is default.

    sequence = generator.generate(input_sequence, generator_options)

    new_file_name = record_file.split('/')[-1].split(
        '.')[0] + '_performance_rnn.mid'
    mm.sequence_proto_to_midi_file(
        sequence, '/home/ubuntu/team15/midi/performance_rnn/' + new_file_name)
    return new_file_name
コード例 #3
0
def generate_music():
    global PLAYING_MUSIC1
    global PLAYING_MUSIC2
    mm.musicxml_parser.DEFAULT_MIDI_PROGRAM = 3
    mm.notebook_utils.download_bundle(BUNDLE_NAME, BUNDLE_DIR)
    bundle = mm.sequence_generator_bundle.read_bundle_file(
        os.path.join(BUNDLE_DIR, BUNDLE_NAME))
    generator_map = performance_sequence_generator.get_generator_map()
    generator = generator_map[MODEL_NAME](checkpoint=None, bundle=bundle)
    generator.initialize()
    generator_options = generator_pb2.GeneratorOptions()
    generator_options.args[
        'temperature'].float_value = settings.TEMP  # Higher is more random; 1.0 is default.
    generate_section = generator_options.generate_sections.add(
        start_time=0, end_time=DURATION)
    sequence = generator.generate(music_pb2.NoteSequence(), generator_options)

    # Play and view this masterpiece.
    # mm.plot_sequence(sequence)
    # audio_object = modified_play_sequence(sequence, mm.midi_synth.fluidsynth, sample_rate=DEFAULT_SAMPLE_RATE * SAMPLE_MULT)
    # mm.play_sequence(sequence, mm.midi_synth.fluidsynth, sample_rate=DEFAULT_SAMPLE_RATE * SAMPLE_MULT)

    sample_rate = DEFAULT_SAMPLE_RATE * SAMPLE_MULT
    array_of_floats = mm.midi_synth.fluidsynth(sequence,
                                               sample_rate=sample_rate,
                                               sf2_path=SF2_PATH)
    write('/Users/wangan/Documents/calhacks2017/temp_wav/tempBass1.wav', 44100,
          array_of_floats)
    # audio_killed = int(sample_rate * 1)
    # array_of_floats = array_of_floats[audio_killed:]

    # IPython.display.Audio(array_of_floats, rate=sample_rate, autoplay=True)

    i = 1
    while (True):
        print("Size of NoteSequence: ", sys.getsizeof(sequence))
        performance_sequence_generator.DEFAULT_NOTE_DENSITY = settings.NOTE_DENSITY / REDUCTION
        performance_sequence_generator.DEFAULT_PITCH_HISTOGRAM = settings.PITCH
        while PLAYING_MUSIC1:
            time.sleep(0.00001)
        array_of_floats = []
        generator_map2 = performance_sequence_generator.get_generator_map()
        generator2 = generator_map2[MODEL_NAME](checkpoint=None, bundle=bundle)
        generator2.initialize()
        generator_options2 = generator_pb2.GeneratorOptions()
        generator_options2.args[
            'temperature'].float_value = settings.TEMP  # Higher is more random; 1.0 is default.
        generate_section = generator_options2.generate_sections.add(
            start_time=(i * DURATION), end_time=(i + 1) * DURATION)
        sequenceNew = generator2.generate(sequence, generator_options2)

        # Play and view this masterpiece.
        mm.plot_sequence(sequenceNew)
        # audio_object = modified_play_sequence(sequence, mm.midi_synth.fluidsynth, sample_rate=DEFAULT_SAMPLE_RATE * SAMPLE_MULT)
        # mm.play_sequence(sequence, mm.midi_synth.fluidsynth, sample_rate=DEFAULT_SAMPLE_RATE * SAMPLE_MULT)

        sample_rate = DEFAULT_SAMPLE_RATE * SAMPLE_MULT
        array_of_floats = mm.midi_synth.fluidsynth(sequenceNew,
                                                   sample_rate=sample_rate,
                                                   sf2_path=SF2_PATH)
        sequence = sequenceNew
        sequence.notes._values = sequence.notes._values[
            int(FRACTION * len(sequence.notes)):len(sequence.notes)]

        # audio_killed = int(sample_rate * 1.5)
        old_array_size = int(sample_rate * DURATION * i)
        array_of_floats = array_of_floats[old_array_size:]
        # array_of_floats = array_of_floats[:-audio_killed]
        write('/Users/wangan/Documents/calhacks2017/temp_wav/tempBass1.wav',
              44100, array_of_floats)
        del generator_map2
        del generator2
        del generator_options2
        del generate_section
        del sequenceNew
        i += 1

        performance_sequence_generator.DEFAULT_NOTE_DENSITY = settings.NOTE_DENSITY / REDUCTION
        performance_sequence_generator.DEFAULT_PITCH_HISTOGRAM = settings.PITCH
        while PLAYING_MUSIC2:
            time.sleep(0.00001)
        array_of_floats2 = []
        generator_map2 = performance_sequence_generator.get_generator_map()
        generator2 = generator_map2[MODEL_NAME](checkpoint=None, bundle=bundle)
        generator2.initialize()
        generator_options2 = generator_pb2.GeneratorOptions()
        generator_options2.args[
            'temperature'].float_value = settings.TEMP  # Higher is more random; 1.0 is default.
        generate_section = generator_options2.generate_sections.add(
            start_time=(i * DURATION), end_time=(i + 1) * DURATION)
        sequenceNew = generator2.generate(sequence, generator_options2)

        sample_rate = DEFAULT_SAMPLE_RATE * SAMPLE_MULT
        array_of_floats2 = mm.midi_synth.fluidsynth(sequenceNew,
                                                    sample_rate=sample_rate,
                                                    sf2_path=SF2_PATH)
        sequence = sequenceNew
        sequence.notes._values = sequence.notes._values[
            int(FRACTION * len(sequence.notes)):len(sequence.notes)]

        # audio_killed = int(sample_rate * 1.5)
        old_array_size = int(sample_rate * DURATION * i)
        array_of_floats2 = array_of_floats2[old_array_size:]
        # array_of_floats = array_of_floats[:-audio_killed]

        write('/Users/wangan/Documents/calhacks2017/temp_wav/tempBass2.wav',
              44100, array_of_floats2)
        del generator_map2
        del generator2
        del generator_options2
        del generate_section
        del sequenceNew
        i += 1
コード例 #4
0
ファイル: magenta_midi.py プロジェクト: zgsxwsdxg/magenta
    'end_call_control_number',
    'panic_control_number',
    'mutate_control_number',
    'min_listen_ticks_control_number',
    'max_listen_ticks_control_number',
    'response_ticks_control_number',
    'temperature_control_number',
    'tempo_control_number',
    'loop_control_number',
    'generator_select_control_number',
    'state_control_number']

# A map from a string generator name to its class.
_GENERATOR_MAP = melody_rnn_sequence_generator.get_generator_map()
_GENERATOR_MAP.update(drums_rnn_sequence_generator.get_generator_map())
_GENERATOR_MAP.update(performance_sequence_generator.get_generator_map())
_GENERATOR_MAP.update(pianoroll_rnn_nade_sequence_generator.get_generator_map())
_GENERATOR_MAP.update(polyphony_sequence_generator.get_generator_map())


class CCMapper(object):
  """A class for mapping control change numbers to specific controls.

  Args:
    cc_map: A dictionary containing mappings from signal names to control
        change numbers (or None). This dictionary will be updated by the class.
    midi_hub_: An initialized MidiHub to receive inputs from.
  """

  def __init__(self, cc_map, midi_hub_):
    self._cc_map = cc_map
コード例 #5
0
ファイル: magenta_midi.py プロジェクト: adarob/magenta
    'end_call_control_number',
    'panic_control_number',
    'mutate_control_number',
    'min_listen_ticks_control_number',
    'max_listen_ticks_control_number',
    'response_ticks_control_number',
    'temperature_control_number',
    'tempo_control_number',
    'loop_control_number',
    'generator_select_control_number',
    'state_control_number']

# A map from a string generator name to its class.
_GENERATOR_MAP = melody_rnn_sequence_generator.get_generator_map()
_GENERATOR_MAP.update(drums_rnn_sequence_generator.get_generator_map())
_GENERATOR_MAP.update(performance_sequence_generator.get_generator_map())
_GENERATOR_MAP.update(pianoroll_rnn_nade_sequence_generator.get_generator_map())
_GENERATOR_MAP.update(polyphony_sequence_generator.get_generator_map())


class CCMapper(object):
  """A class for mapping control change numbers to specific controls.

  Args:
    cc_map: A dictionary containing mappings from signal names to control
        change numbers (or None). This dictionary will be updated by the class.
    midi_hub_: An initialized MidiHub to receive inputs from.
  """

  def __init__(self, cc_map, midi_hub_):
    self._cc_map = cc_map
コード例 #6
0
ファイル: performance_rnn.py プロジェクト: carusocr/misc_ml
import magenta.music as mm

# Necessary until pyfluidsynth is updated (>1.2.5).
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning)

# Constants.
BUNDLE_DIR = '/tmp/'
MODEL_NAME = 'performance_with_dynamics'
BUNDLE_NAME = MODEL_NAME + '.mag'

mm.notebook_utils.download_bundle(BUNDLE_NAME, BUNDLE_DIR)

"""# Generate a sequence"""

bundle = mm.sequence_generator_bundle.read_bundle_file(os.path.join(BUNDLE_DIR, BUNDLE_NAME))
generator_map = performance_sequence_generator.get_generator_map()
generator = generator_map[MODEL_NAME](checkpoint=None, bundle=bundle)
generator.initialize()
generator_options = generator_pb2.GeneratorOptions()
generator_options.args['temperature'].float_value = 1.6 
generate_section = generator_options.generate_sections.add(start_time=0, end_time=60)
sequence = generator.generate(music_pb2.NoteSequence(), generator_options)

# Play and view this masterpiece.
mm.plot_sequence(sequence)
mm.play_sequence(sequence, mm.midi_synth.fluidsynth,
                 sf2_path='/tmp/Yamaha-C5-Salamander-JNv5.1.sf2')