# Ignore a bunch of deprecation warnings
import sys
sys.path.append('../..')
import warnings
warnings.filterwarnings("ignore")
import copy
import os
import time
from tqdm import tqdm
import math
import ddsp
import ddsp.training
from data_handling.ddspdataset import DDSPDataset
from utils.training_utils import print_hparams, set_seed, save_results, str2bool
from hparams_midiae_interp_cond import hparams as hp
from midiae_interp_cond.get_model import get_model, get_fake_data
import librosa
import matplotlib.pyplot as plt
import numpy as np
import tensorflow.compat.v2 as tf
import tensorflow_datasets as tfds
import pandas as pd
from notebook_utils import *
set_seed(1234)
# Helper Functions
sample_rate = 16000
print('Done!')
from utils.audio_io import load_audio
Below contains the result of guitar tone transfer from saxophone and violin in the solo-inst dataset. The note-expression based tone transfer is compared with the original DDSP ld+f0 tone transfer.
TLDR: For instruments that have similar strong attack as guitar, such as saxophone, the DDSP ld+f0 tone transfer actually works fine. But for instruments with dissimilar attack and decay such as violin, the DDSP ld+f0 tone transfer performs poorly and the note-expression based tone transfer can have good and idiomatic results.
Source
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/sax_to_gtr/source/4.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='source')
DDSP ld+f0 tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/sax_to_gtr/transfer_ddsp/4.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='DDSP ld+f0 tone transfer')
note-expression based tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/sax_to_gtr/transfer_note/4.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='note-expression based tone transfer')
Source
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/sax_to_gtr/source/21.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='source')
DDSP ld+f0 tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/sax_to_gtr/transfer_ddsp/21.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='DDSP ld+f0 tone transfer')
note-expression based tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/sax_to_gtr/transfer_note/21.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='note-expression based tone transfer')
Source
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/vn_to_gtr/source/10.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='source')
DDSP ld+f0 tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/vn_to_gtr/transfer_ddsp/10.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='DDSP ld+f0 tone transfer')
note-expression based tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/vn_to_gtr/transfer_note/10.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='note-expression based tone transfer')
Source
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/vn_to_gtr/source/24.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='source')
DDSP ld+f0 tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/vn_to_gtr/transfer_ddsp/24.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='DDSP ld+f0 tone transfer')
note-expression based tone transfer
wav = r'/data/ddsp-experiment/logs/tone_transfer_comparison/vn_to_gtr/transfer_note/24.wav'
plot_spec(load_audio(wav, sample_rate), sample_rate, title='note-expression based tone transfer')