GithubHelp home page GithubHelp logo

sumuzhao / cyclegan-music-style-transfer Goto Github PK

View Code? Open in Web Editor NEW
263.0 14.0 66.0 1.34 MB

Symbolic Music Genre Transfer with CycleGAN

License: MIT License

Python 100.00%
music-genre domain-transfer style-transfer deep-learning nerual-network cyclegan gan cnn

cyclegan-music-style-transfer's People

Contributors

brunnergino avatar kant avatar rohan2810 avatar sumuzhao avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cyclegan-music-style-transfer's Issues

Problem about dataset preprocessing

Great work!

I tried to use your code to reproduce this work from zero.
I want to ask some question about data preparation. I used your code midi cleaning, time signature selection and so on.
Finally before split a training and testing set, I have 24232 classic npy, 13286 jazz npy and 25995 pop nay files. That's too much compared to the npy dataset you offer. I don't know where I'm wrong. Could you please show me the script you used of generate training and testing spy file?

Best regards

How to correctly generate npy files from a midi file

I'm trying to train a model and test it, the first step being to generate npy files representing numpy arrays from midi files (as the current dataset uploaded only includes individual midi files). I'm trying the following code (from Testfile.py):

import math
import random
import os
import shutil
from dataprocessing import pretty_midi_to_piano_roll
import matplotlib.pyplot as plt
import pretty_midi
from pypianoroll import Multitrack, Track
import librosa.display
from utils import *

def get_bar_piano_roll(piano_roll):
    if int(piano_roll.shape[0] % 64) is not 0:
        if LAST_BAR_MODE == 'fill':
            piano_roll = np.concatenate((piano_roll, np.zeros((64 - piano_roll.shape[0] % 64, 128))), axis=0)
        elif LAST_BAR_MODE == 'remove':
            piano_roll = np.delete(piano_roll,  np.s_[-int(piano_roll.shape[0] % 64):], axis=0)
    piano_roll = piano_roll.reshape(-1, 64, 128)
    return piano_roll

LAST_BAR_MODE = 'remove'

# convert midi files to npy - midi files will be in the ./Classic/ directory

l = [f for f in os.listdir('./Classic/')]
count = 0
count2 = 0
for i in range(len(l)):
    try:
        multitrack = Multitrack(beat_resolution=4, name=os.path.splitext(l[i])[0])
        x = pretty_midi.PrettyMIDI(os.path.join('./Classic/', l[i]))
        multitrack.parse_pretty_midi(x)
        category_list = {'Piano': [], 'Drums': []}
        program_dict = {'Piano': 0, 'Drums': 0}
        for idx, track in enumerate(multitrack.tracks):
            if track.is_drum:
                category_list['Drums'].append(idx)
            else:
                category_list['Piano'].append(idx)
        tracks = []
        merged = multitrack[category_list['Piano']].get_merged_pianoroll()
        merged = multitrack.get_merged_pianoroll()
        tracks = [(Track(merged, program=0, is_drum=False, name=os.path.splitext(l[i])[0]))]
        mt = Multitrack(None, tracks, multitrack.tempo, multitrack.downbeat, multitrack.beat_resolution, multitrack.name)
        pr = get_bar_piano_roll(merged)
        pr_clip = pr[:, :, 24:108]
        if int(pr_clip.shape[0] % 4) != 0:
            pr_clip = np.delete(pr_clip, np.s_[-int(pr_clip.shape[0] % 4):], axis=0)
        pr_re = pr_clip.reshape(-1, 64, 84, 1)
        print(pr_re.shape)

        # pr_re.shape will be something like (4, 64, 84, 1) or (8, 64, 84, 1) etc

        for j in range(len(pr_re)):
            # this would save each part of pr_re, with each part being of shape (64, 84, 1)
            np.save(os.path.join('./datasets/Classic/train', 'classic_piano_train_' + str(count2) + '.npy'), pr_re[j])
            count2 += 1
        count += 1
        print(str(count))
    except:
        print('Wrong', l[i])
        continue

Per the readme, this is of course incorrect as train data should be arrays of shape (1, 64, 84, 1) and in the above I'm generating them with shape (64, 84, 1). How should midi files be properly converted to numpy arrays in the shape (1, 64, 84, 1)?

Unable to train CycleGAN or genre classifier model

I'm trying to train a CycleGAN model as follows:

python main.py --dataset_A_dir='Pop' --dataset_B_dir='Classic' --type='cyclegan' --model='full' --sigma_d=1 --phase='train'

This doesn't seem to generate anything on my machine, though there is no error - I just get the following output:

generatorA2B/g_e1_c/Conv/weights:0
generatorA2B/g_e1_bn/scale:0
generatorA2B/g_e1_bn/offset:0
generatorA2B/g_e2_c/Conv/weights:0
generatorA2B/g_e2_bn/scale:0
generatorA2B/g_e2_bn/offset:0
generatorA2B/g_e3_c/Conv/weights:0
generatorA2B/g_e3_bn/scale:0
generatorA2B/g_e3_bn/offset:0
generatorA2B/g_r1_c1/Conv/weights:0
generatorA2B/g_r1_bn1/scale:0
generatorA2B/g_r1_bn1/offset:0
generatorA2B/g_r1_c2/Conv/weights:0
generatorA2B/g_r1_bn2/scale:0
generatorA2B/g_r1_bn2/offset:0
generatorA2B/g_r2_c1/Conv/weights:0
generatorA2B/g_r2_bn1/scale:0
generatorA2B/g_r2_bn1/offset:0
generatorA2B/g_r2_c2/Conv/weights:0
generatorA2B/g_r2_bn2/scale:0
generatorA2B/g_r2_bn2/offset:0
generatorA2B/g_r3_c1/Conv/weights:0
generatorA2B/g_r3_bn1/scale:0
generatorA2B/g_r3_bn1/offset:0
generatorA2B/g_r3_c2/Conv/weights:0
generatorA2B/g_r3_bn2/scale:0
generatorA2B/g_r3_bn2/offset:0
generatorA2B/g_r4_c1/Conv/weights:0
generatorA2B/g_r4_bn1/scale:0
generatorA2B/g_r4_bn1/offset:0
generatorA2B/g_r4_c2/Conv/weights:0
generatorA2B/g_r4_bn2/scale:0
generatorA2B/g_r4_bn2/offset:0
generatorA2B/g_r5_c1/Conv/weights:0
generatorA2B/g_r5_bn1/scale:0
generatorA2B/g_r5_bn1/offset:0
generatorA2B/g_r5_c2/Conv/weights:0
generatorA2B/g_r5_bn2/scale:0
generatorA2B/g_r5_bn2/offset:0
generatorA2B/g_r6_c1/Conv/weights:0
generatorA2B/g_r6_bn1/scale:0
generatorA2B/g_r6_bn1/offset:0
generatorA2B/g_r6_c2/Conv/weights:0
generatorA2B/g_r6_bn2/scale:0
generatorA2B/g_r6_bn2/offset:0
generatorA2B/g_r7_c1/Conv/weights:0
generatorA2B/g_r7_bn1/scale:0
generatorA2B/g_r7_bn1/offset:0
generatorA2B/g_r7_c2/Conv/weights:0
generatorA2B/g_r7_bn2/scale:0
generatorA2B/g_r7_bn2/offset:0
generatorA2B/g_r8_c1/Conv/weights:0
generatorA2B/g_r8_bn1/scale:0
generatorA2B/g_r8_bn1/offset:0
generatorA2B/g_r8_c2/Conv/weights:0
generatorA2B/g_r8_bn2/scale:0
generatorA2B/g_r8_bn2/offset:0
generatorA2B/g_r9_c1/Conv/weights:0
generatorA2B/g_r9_bn1/scale:0
generatorA2B/g_r9_bn1/offset:0
generatorA2B/g_r9_c2/Conv/weights:0
generatorA2B/g_r9_bn2/scale:0
generatorA2B/g_r9_bn2/offset:0
generatorA2B/g_r10_c1/Conv/weights:0
generatorA2B/g_r10_bn1/scale:0
generatorA2B/g_r10_bn1/offset:0
generatorA2B/g_r10_c2/Conv/weights:0
generatorA2B/g_r10_bn2/scale:0
generatorA2B/g_r10_bn2/offset:0
generatorA2B/g_d1_dc/Conv2d_transpose/weights:0
generatorA2B/g_d1_bn/scale:0
generatorA2B/g_d1_bn/offset:0
generatorA2B/g_d2_dc/Conv2d_transpose/weights:0
generatorA2B/g_d2_bn/scale:0
generatorA2B/g_d2_bn/offset:0
generatorA2B/g_pred_c/Conv/weights:0
generatorB2A/g_e1_c/Conv/weights:0
generatorB2A/g_e1_bn/scale:0
generatorB2A/g_e1_bn/offset:0
generatorB2A/g_e2_c/Conv/weights:0
generatorB2A/g_e2_bn/scale:0
generatorB2A/g_e2_bn/offset:0
generatorB2A/g_e3_c/Conv/weights:0
generatorB2A/g_e3_bn/scale:0
generatorB2A/g_e3_bn/offset:0
generatorB2A/g_r1_c1/Conv/weights:0
generatorB2A/g_r1_bn1/scale:0
generatorB2A/g_r1_bn1/offset:0
generatorB2A/g_r1_c2/Conv/weights:0
generatorB2A/g_r1_bn2/scale:0
generatorB2A/g_r1_bn2/offset:0
generatorB2A/g_r2_c1/Conv/weights:0
generatorB2A/g_r2_bn1/scale:0
generatorB2A/g_r2_bn1/offset:0
generatorB2A/g_r2_c2/Conv/weights:0
generatorB2A/g_r2_bn2/scale:0
generatorB2A/g_r2_bn2/offset:0
generatorB2A/g_r3_c1/Conv/weights:0
generatorB2A/g_r3_bn1/scale:0
generatorB2A/g_r3_bn1/offset:0
generatorB2A/g_r3_c2/Conv/weights:0
generatorB2A/g_r3_bn2/scale:0
generatorB2A/g_r3_bn2/offset:0
generatorB2A/g_r4_c1/Conv/weights:0
generatorB2A/g_r4_bn1/scale:0
generatorB2A/g_r4_bn1/offset:0
generatorB2A/g_r4_c2/Conv/weights:0
generatorB2A/g_r4_bn2/scale:0
generatorB2A/g_r4_bn2/offset:0
generatorB2A/g_r5_c1/Conv/weights:0
generatorB2A/g_r5_bn1/scale:0
generatorB2A/g_r5_bn1/offset:0
generatorB2A/g_r5_c2/Conv/weights:0
generatorB2A/g_r5_bn2/scale:0
generatorB2A/g_r5_bn2/offset:0
generatorB2A/g_r6_c1/Conv/weights:0
generatorB2A/g_r6_bn1/scale:0
generatorB2A/g_r6_bn1/offset:0
generatorB2A/g_r6_c2/Conv/weights:0
generatorB2A/g_r6_bn2/scale:0
generatorB2A/g_r6_bn2/offset:0
generatorB2A/g_r7_c1/Conv/weights:0
generatorB2A/g_r7_bn1/scale:0
generatorB2A/g_r7_bn1/offset:0
generatorB2A/g_r7_c2/Conv/weights:0
generatorB2A/g_r7_bn2/scale:0
generatorB2A/g_r7_bn2/offset:0
generatorB2A/g_r8_c1/Conv/weights:0
generatorB2A/g_r8_bn1/scale:0
generatorB2A/g_r8_bn1/offset:0
generatorB2A/g_r8_c2/Conv/weights:0
generatorB2A/g_r8_bn2/scale:0
generatorB2A/g_r8_bn2/offset:0
generatorB2A/g_r9_c1/Conv/weights:0
generatorB2A/g_r9_bn1/scale:0
generatorB2A/g_r9_bn1/offset:0
generatorB2A/g_r9_c2/Conv/weights:0
generatorB2A/g_r9_bn2/scale:0
generatorB2A/g_r9_bn2/offset:0
generatorB2A/g_r10_c1/Conv/weights:0
generatorB2A/g_r10_bn1/scale:0
generatorB2A/g_r10_bn1/offset:0
generatorB2A/g_r10_c2/Conv/weights:0
generatorB2A/g_r10_bn2/scale:0
generatorB2A/g_r10_bn2/offset:0
generatorB2A/g_d1_dc/Conv2d_transpose/weights:0
generatorB2A/g_d1_bn/scale:0
generatorB2A/g_d1_bn/offset:0
generatorB2A/g_d2_dc/Conv2d_transpose/weights:0
generatorB2A/g_d2_bn/scale:0
generatorB2A/g_d2_bn/offset:0
generatorB2A/g_pred_c/Conv/weights:0
discriminatorB/d_h0_conv/Conv/weights:0
discriminatorB/d_h1_conv/Conv/weights:0
discriminatorB/d_bn1/scale:0
discriminatorB/d_bn1/offset:0
discriminatorB/d_h3_pred/Conv/weights:0
discriminatorA/d_h0_conv/Conv/weights:0
discriminatorA/d_h1_conv/Conv/weights:0
discriminatorA/d_bn1/scale:0
discriminatorA/d_bn1/offset:0
discriminatorA/d_h3_pred/Conv/weights:0
discriminatorA_all/d_h0_conv/Conv/weights:0
discriminatorA_all/d_h1_conv/Conv/weights:0
discriminatorA_all/d_bn1/scale:0
discriminatorA_all/d_bn1/offset:0
discriminatorA_all/d_h3_pred/Conv/weights:0
discriminatorB_all/d_h0_conv/Conv/weights:0
discriminatorB_all/d_h1_conv/Conv/weights:0
discriminatorB_all/d_bn1/scale:0
discriminatorB_all/d_bn1/offset:0
discriminatorB_all/d_h3_pred/Conv/weights:0

While with the genre classifier, If I try for example:

python main.py --dataset_A_dir='Pop' --dataset_B_dir='Classic' --type='classifier' --sigma_c=1 --phase='train'
I get the following:

Traceback (most recent call last):
  File "main.py", line 72, in <module>
    tf.app.run()
  File "/home/paperspace/anaconda3/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 126, in run
    _sys.exit(main(argv))
  File "main.py", line 68, in main
    classifier.train(args) if args.phase == 'train' else classifier.test(args)
  File "/home/paperspace/music/CycleGAN-Music-Style-Transfer/style_classifier.py", line 124, in train
    gaussian_noise = np.random.normal(0, self.sigma_c, [data_test.shape[0], data_test.shape[1],
IndexError: tuple index out of range

np.shape incompatible error in style_classifier.py

I'm currently using the following command in command prompt on a PC to train the models using the split numpy arrays in ascending order as instructed in the data section of the README: python3 main.py --dataset_A_dir=jazz --dataset_B_dir=classic --type=classifier --model=base --sigma_c=0 --sigma_d=0 --phase=train --which_direction=AtoB

My data is in the np.shape (1, 64, 84, 1), as specified, but the gaussian noise being added is not of the right dimension in style_classifier.py. Is my data in the wrong format? What needs to be changed? Thanks!

failed to interpret .midi file as a pickle

When trying to train like the following:

python main.py --dataset_A_dir='Classic' --dataset_B_dir='Jazz' --type='cyclegan' --model='full' --sigma_d=1 --phase='train'

The code fails where it tries to load a .midi file as a numpy array in the load_npy_data() function (added print statements):

def load_npy_data(npy_data):
    print('printing npy_data for the load_npy_data function...') 
    print(npy_data)
    npy_A = np.load(npy_data[0]) * 1.
    npy_B = np.load(npy_data[1]) * 1.
    npy_AB = np.concatenate((npy_A.reshape(npy_A.shape[0], npy_A.shape[1], 1),
                             npy_B.reshape(npy_B.shape[0], npy_B.shape[1], 1)), axis=2)
    return npy_AB

As follows:

printing npy_data for the load_npy_data function...
('./datasets/Classic/train/WoO051 Sonatina 1-2 movs.mid', './datasets/Jazz/train/arrividerci_darling-1954-kar-1_jpp.mid')
Traceback (most recent call last):
  File "/home/paperspace/anaconda3/lib/python3.6/site-packages/numpy/lib/npyio.py", line 428, in load
    return pickle.load(fid, **pickle_kwargs)
_pickle.UnpicklingError: could not find MARK

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 72, in <module>
    tf.app.run()
  File "/home/paperspace/anaconda3/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 126, in run
    _sys.exit(main(argv))
  File "main.py", line 64, in main
    model.train(args) if args.phase == 'train' else model.test(args)
  File "/home/paperspace/music/CycleGAN-Music-Style-Transfer/model.py", line 242, in train
    batch_images = [load_npy_data(batch_file) for batch_file in batch_files]
  File "/home/paperspace/music/CycleGAN-Music-Style-Transfer/model.py", line 242, in <listcomp>
    batch_images = [load_npy_data(batch_file) for batch_file in batch_files]
  File "/home/paperspace/music/CycleGAN-Music-Style-Transfer/utils.py", line 101, in load_npy_data
    npy_A = np.load(npy_data[0]) * 1.
  File "/home/paperspace/anaconda3/lib/python3.6/site-packages/numpy/lib/npyio.py", line 431, in load
    "Failed to interpret file %s as a pickle" % repr(file))
OSError: Failed to interpret file './datasets/Classic/train/WoO051 Sonatina 1-2 movs.mid' as a pickle

Question regarding the dataset and model training

Hey thank you for this amazing code. I have some questions about the code. I'm able to run the code without any errors but the model isn't being trained and nothing is happening with the testing part. Weights, offsets and scales all show zero. Could you please help out with this, @sumuzhao ?

ValueError on some training runs: no beat timings present/learned

When training your model, you offer the opportunity to save some generated samples every k steps. On some runs, I have a problem with visualizing several samples, mostly the cyclic mapping back to the origin domain.
However, this is not present in every run, but mostly in runs with a large number of epochs (50 or so).

A traceback while trying to visualize a sample (in another script) is shown here:

Traceback (most recent call last):
  File "<ipython-input-56-c8394e1b4f1b>", line 7, in visualize_dir
    multitrack = pypianoroll.read(directory+"/"+name)
  File "/usr/local/lib/python3.6/dist-packages/pypianoroll/inputs.py", line 336, in read
    return from_pretty_midi(PrettyMIDI(str(path)), **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/pypianoroll/inputs.py", line 186, in from_pretty_midi
    raise ValueError("Cannot get beat timings to quantize the piano roll.")
ValueError: Cannot get beat timings to quantize the piano roll.

Opening these files with MuseScore only shows a blank page.

If you or any other user has experienced the same or a similar problem, please share them here.
I am open to any suggestions and can image working on a fix together.
Ideally, if somebody already has a solution, or knows why this happens, leave a comment.

Thanks in advance.

ImportError: No module named 'metrics'

E:\Users\Raytine\Anaconda3\python.exe F:/voice/CycleGAN-Music-Style-Transfer-master/main.py --dataset_A_dir='data/JC_J' --dataset_B_dir='data/JC_C' --type='cyclegan' --model='base' --sigma_d=0 --phase='train'
Traceback (most recent call last):
File "F:/voice/CycleGAN-Music-Style-Transfer-master/main.py", line 4, in
from model import cyclegan
File "F:\voice\CycleGAN-Music-Style-Transfer-master\model.py", line 13, in
from metrics import *
ImportError: No module named 'metrics'

Questions about data

Congratulations on your groundbreaking work!

I know that you and the musegan's data are different from the audio track.But I can't understand the difference in time.

His time is 496. Yours seems to be 416, but you write directly to 64, which means that your four bars are a phrase and there is no bar length for him. Is this the meaning?

cannot start training

Hi, sumuzhao, i've tried to start training your network with your dataset under the instructions python main.py --dataset_A_dir='JC_J' --dataset_B_dir='JC_C' --type='cyclegan' --model='base' --sigma_d=0 --phase='train' but things didnot go right. here's what comes out:
2019-04-11 17:31:09.960154: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2019-04-11 17:31:11.424925: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1432] Found device 0 with properties: name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235 pciBusID: 0000:8b:00.0 totalMemory: 11.17GiB freeMemory: 11.10GiB 2019-04-11 17:31:11.425039: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1511] Adding visible gpu devices: 0 2019-04-11 17:31:12.042054: I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] Device interconnect StreamExecutor with strength 1 edge matrix: 2019-04-11 17:31:12.042099: I tensorflow/core/common_runtime/gpu/gpu_device.cc:988] 0 2019-04-11 17:31:12.042112: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1001] 0: N 2019-04-11 17:31:12.043982: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 10758 MB memory) -> physical GPU (device: 0, name: Tesla K80, pci bus id: 0000:8b:00.0, compute capability: 3.7) WARNING:tensorflow:From /home/lab-xie.yulin/graduateDesign/CycleGAN-Music-Style-Transfer/ops.py:110: calling reduce_max (from tensorflow.python.ops.math_ops) with keep_dims is deprecated and will be removed in a future version. Instructions for updating: keep_dims is deprecated, use keepdims instead generatorA2B/g_e1_c/Conv/weights:0 generatorA2B/g_e1_bn/scale:0 generatorA2B/g_e1_bn/offset:0 generatorA2B/g_e2_c/Conv/weights:0 generatorA2B/g_e2_bn/scale:0 generatorA2B/g_e2_bn/offset:0 generatorA2B/g_e3_c/Conv/weights:0 generatorA2B/g_e3_bn/scale:0 generatorA2B/g_e3_bn/offset:0 generatorA2B/g_r1_c1/Conv/weights:0 generatorA2B/g_r1_bn1/scale:0 generatorA2B/g_r1_bn1/offset:0 generatorA2B/g_r1_c2/Conv/weights:0 generatorA2B/g_r1_bn2/scale:0 generatorA2B/g_r1_bn2/offset:0 generatorA2B/g_r2_c1/Conv/weights:0 generatorA2B/g_r2_bn1/scale:0 generatorA2B/g_r2_bn1/offset:0 generatorA2B/g_r2_c2/Conv/weights:0 generatorA2B/g_r2_bn2/scale:0 generatorA2B/g_r2_bn2/offset:0 generatorA2B/g_r3_c1/Conv/weights:0 generatorA2B/g_r3_bn1/scale:0 generatorA2B/g_r3_bn1/offset:0 generatorA2B/g_r3_c2/Conv/weights:0 generatorA2B/g_r3_bn2/scale:0 generatorA2B/g_r3_bn2/offset:0 generatorA2B/g_r4_c1/Conv/weights:0 generatorA2B/g_r4_bn1/scale:0 generatorA2B/g_r4_bn1/offset:0 generatorA2B/g_r4_c2/Conv/weights:0 generatorA2B/g_r4_bn2/scale:0 generatorA2B/g_r4_bn2/offset:0 generatorA2B/g_r5_c1/Conv/weights:0 generatorA2B/g_r5_bn1/scale:0 generatorA2B/g_r5_bn1/offset:0 generatorA2B/g_r5_c2/Conv/weights:0 generatorA2B/g_r5_bn2/scale:0 generatorA2B/g_r5_bn2/offset:0 generatorA2B/g_r6_c1/Conv/weights:0 generatorA2B/g_r6_bn1/scale:0 generatorA2B/g_r6_bn1/offset:0 generatorA2B/g_r6_c2/Conv/weights:0 generatorA2B/g_r6_bn2/scale:0 generatorA2B/g_r6_bn2/offset:0 generatorA2B/g_r7_c1/Conv/weights:0 generatorA2B/g_r7_bn1/scale:0 generatorA2B/g_r7_bn1/offset:0 generatorA2B/g_r7_c2/Conv/weights:0 generatorA2B/g_r7_bn2/scale:0 generatorA2B/g_r7_bn2/offset:0 generatorA2B/g_r8_c1/Conv/weights:0 generatorA2B/g_r8_bn1/scale:0 generatorA2B/g_r8_bn1/offset:0 generatorA2B/g_r8_c2/Conv/weights:0 generatorA2B/g_r8_bn2/scale:0 generatorA2B/g_r8_bn2/offset:0 generatorA2B/g_r9_c1/Conv/weights:0 generatorA2B/g_r9_bn1/scale:0 generatorA2B/g_r9_bn1/offset:0 generatorA2B/g_r9_c2/Conv/weights:0 generatorA2B/g_r9_bn2/scale:0 generatorA2B/g_r9_bn2/offset:0 generatorA2B/g_r10_c1/Conv/weights:0 generatorA2B/g_r10_bn1/scale:0 generatorA2B/g_r10_bn1/offset:0 generatorA2B/g_r10_c2/Conv/weights:0 generatorA2B/g_r10_bn2/scale:0 generatorA2B/g_r10_bn2/offset:0 generatorA2B/g_d1_dc/Conv2d_transpose/weights:0 generatorA2B/g_d1_bn/scale:0 generatorA2B/g_d1_bn/offset:0 generatorA2B/g_d2_dc/Conv2d_transpose/weights:0 generatorA2B/g_d2_bn/scale:0 generatorA2B/g_d2_bn/offset:0 generatorA2B/g_pred_c/Conv/weights:0 generatorB2A/g_e1_c/Conv/weights:0 generatorB2A/g_e1_bn/scale:0 generatorB2A/g_e1_bn/offset:0 generatorB2A/g_e2_c/Conv/weights:0 generatorB2A/g_e2_bn/scale:0 generatorB2A/g_e2_bn/offset:0 generatorB2A/g_e3_c/Conv/weights:0 generatorB2A/g_e3_bn/scale:0 generatorB2A/g_e3_bn/offset:0 generatorB2A/g_r1_c1/Conv/weights:0 generatorB2A/g_r1_bn1/scale:0 generatorB2A/g_r1_bn1/offset:0 generatorB2A/g_r1_c2/Conv/weights:0 generatorB2A/g_r1_bn2/scale:0 generatorB2A/g_r1_bn2/offset:0 generatorB2A/g_r2_c1/Conv/weights:0 generatorB2A/g_r2_bn1/scale:0 generatorB2A/g_r2_bn1/offset:0 generatorB2A/g_r2_c2/Conv/weights:0 generatorB2A/g_r2_bn2/scale:0 generatorB2A/g_r2_bn2/offset:0 generatorB2A/g_r3_c1/Conv/weights:0 generatorB2A/g_r3_bn1/scale:0 generatorB2A/g_r3_bn1/offset:0 generatorB2A/g_r3_c2/Conv/weights:0 generatorB2A/g_r3_bn2/scale:0 generatorB2A/g_r3_bn2/offset:0 generatorB2A/g_r4_c1/Conv/weights:0 generatorB2A/g_r4_bn1/scale:0 generatorB2A/g_r4_bn1/offset:0 generatorB2A/g_r4_c2/Conv/weights:0 generatorB2A/g_r4_bn2/scale:0 generatorB2A/g_r4_bn2/offset:0 generatorB2A/g_r5_c1/Conv/weights:0 generatorB2A/g_r5_bn1/scale:0 generatorB2A/g_r5_bn1/offset:0 generatorB2A/g_r5_c2/Conv/weights:0 generatorB2A/g_r5_bn2/scale:0 generatorB2A/g_r5_bn2/offset:0 generatorB2A/g_r6_c1/Conv/weights:0 generatorB2A/g_r6_bn1/scale:0 generatorB2A/g_r6_bn1/offset:0 generatorB2A/g_r6_c2/Conv/weights:0 generatorB2A/g_r6_bn2/scale:0 generatorB2A/g_r6_bn2/offset:0 generatorB2A/g_r7_c1/Conv/weights:0 generatorB2A/g_r7_bn1/scale:0 generatorB2A/g_r7_bn1/offset:0 generatorB2A/g_r7_c2/Conv/weights:0 generatorB2A/g_r7_bn2/scale:0 generatorB2A/g_r7_bn2/offset:0 generatorB2A/g_r8_c1/Conv/weights:0 generatorB2A/g_r8_bn1/scale:0 generatorB2A/g_r8_bn1/offset:0 generatorB2A/g_r8_c2/Conv/weights:0 generatorB2A/g_r8_bn2/scale:0 generatorB2A/g_r8_bn2/offset:0 generatorB2A/g_r9_c1/Conv/weights:0 generatorB2A/g_r9_bn1/scale:0 generatorB2A/g_r9_bn1/offset:0 generatorB2A/g_r9_c2/Conv/weights:0 generatorB2A/g_r9_bn2/scale:0 generatorB2A/g_r9_bn2/offset:0 generatorB2A/g_r10_c1/Conv/weights:0 generatorB2A/g_r10_bn1/scale:0 generatorB2A/g_r10_bn1/offset:0 generatorB2A/g_r10_c2/Conv/weights:0 generatorB2A/g_r10_bn2/scale:0 generatorB2A/g_r10_bn2/offset:0 generatorB2A/g_d1_dc/Conv2d_transpose/weights:0 generatorB2A/g_d1_bn/scale:0 generatorB2A/g_d1_bn/offset:0 generatorB2A/g_d2_dc/Conv2d_transpose/weights:0 generatorB2A/g_d2_bn/scale:0 generatorB2A/g_d2_bn/offset:0 generatorB2A/g_pred_c/Conv/weights:0 discriminatorB/d_h0_conv/Conv/weights:0 discriminatorB/d_h1_conv/Conv/weights:0 discriminatorB/d_bn1/scale:0 discriminatorB/d_bn1/offset:0 discriminatorB/d_h3_pred/Conv/weights:0 discriminatorA/d_h0_conv/Conv/weights:0 discriminatorA/d_h1_conv/Conv/weights:0 discriminatorA/d_bn1/scale:0 discriminatorA/d_bn1/offset:0 discriminatorA/d_h3_pred/Conv/weights:0
and as i take a lood at the log, it shows that is not UTF-8 encoded.
Could you tell me what is going on as i am not sure why the training just stops without many errors? Thanks in advance for your help. Appreciate that.

multi-track multi-domain genre transfer with stargan

Hi,
I'm trying to revise you code to do some multi-track multi-domain genre transfer with stargan, there are three track as my channel which are drum, bass and guitar. Here is some problem happened:

  1. It is easy to transfer drum pattern from one genre to another. However, it's really hard to transfer guitar and bass track. the problem would be like chord variation is almost unlimited, and it's relatively easier to transfer drum pattern.
  2. even though lambda is set to be 10 (cycle consistency loss parameter), the output of cycle_midi still can't not transfer B->A back in guitar and bass.

Do you have any idea to solve this problem?

your work is really interesting, thanks a lot.

Combining midi files

Per Testfile.py I've been able to convert a midi file into multiple numpy arrays of shape (64, 84, 1) which I can then run a trained model on. This will return a midi file (cycle, transfer) for each individual numpy array, which will of course only be a few seconds in length each. Is there code for combining midi files? I assume this must have been done for the examples given where full songs are converted.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.