From 0d31e7a2c8f8fef4f4d383a486a8a37bc164b6cd Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 15:34:17 -0400 Subject: [PATCH 1/9] add input example --- input.midi | Bin 0 -> 3746 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 input.midi diff --git a/input.midi b/input.midi new file mode 100644 index 0000000000000000000000000000000000000000..096cab1f05b9b38faaea506362f5d853ce158dd9 GIT binary patch literal 3746 zcmd5I(8|?%Y3kyk;LJ&c8m!QU=O+djyF@>PWg80BM&}^Y%5%CMwKkyU$ z6iZA0AZ8to*L!X@H;W=xmvd+4%$dh7yY-#uNJNIDAjQIKedqE-WNcE}+XKT-Gt%B2 z94t|=Yy{P^)Mf>o@Or4XXkV0 zgn0Nf_SMh)Hb#Be2U92KVQlkc?@g9&y+?lR0d(L#dw*FEW1l{szb~Hq&bVKG^~2mv z-RK+Zu(98tb^JB{Z+d^K$BxI`%yYwbyodGP%nNg8|DVps<}>;9-qoA6x6sFW*x%0Q z^4s;hc3(W_XMe_=kL}FI*jFFhIlg;7yx({pjPd@%KKbnI@4kn9`h4|pJY$aUUO(z_ z=l@%L%H#Hn`B@+ItDoDyy!*uboFDnr&)*N`^Tp@&XMMhSw)c+DKM&^1i_ssA<9WJz zv>tvw&2t4F-h;flxNnSYK3Au0H~N&v-6OpR59)LMm>2!)&1;@#_U~PnKR@*7$@6nD z{Gpfiuw60wf&TQ{PxC$cnEtp(4G_hL6j4Dk(=-#Sd6#ArL#bq zhn0=l@^U?tczV8aT9)Q{P>YYND{-SLQr)%uSvLh9!RMw&FzJy ZxDkqkYnuy_hL&pU@qSHiM?* Date: Wed, 7 Jul 2021 15:37:41 -0400 Subject: [PATCH 2/9] gradio demo --- gradio/demo.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 gradio/demo.py diff --git a/gradio/demo.py b/gradio/demo.py new file mode 100644 index 0000000..5c7b8d4 --- /dev/null +++ b/gradio/demo.py @@ -0,0 +1,43 @@ +from model import PopMusicTransformer +import os +os.environ['CUDA_VISIBLE_DEVICES'] = '-1' +import tensorflow as tf +tf.compat.v1.disable_eager_execution() +import gradio as gr +import requests + +url = 'https://github.com/AK391/remi/blob/master/input.midi?raw=true' +r = requests.get(url, allow_redirects=True) +open("input.midi", 'wb').write(r.content) + +# declare model +model = PopMusicTransformer( + checkpoint='REMI-tempo-checkpoint', + is_training=False) + +def inference(midi): + # generate continuation + model.generate( + n_target_bar=4, + temperature=1.2, + topk=5, + output_path='./result/continuation.midi', + prompt=midi.name) + return './result/continuation.midi' + + +title = "Remi" +description = "demo for Remi. To use it, simply upload your midi file, or click one of the examples to load them. Read more at the links below." +article = "

Pop Music Transformer: Beat-based Modeling and Generation of Expressive Pop Piano Compositions | Github Repo

" +examples = [ + ['input.midi'] +] +gr.Interface( + inference, + gr.inputs.File(label="Input Midi"), + gr.outputs.File(label="Output Midi"), + title=title, + description=description, + article=article, + examples=examples + ).launch() From 4b531d7ad8018207cb5e382bfb5a4be9ac0a815a Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 15:39:13 -0400 Subject: [PATCH 3/9] Create requirements.txt --- requirements.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 requirements.txt diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..9dea8b5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +miditoolkit +tensorflow-gpu==1.14.0 +gradio From 9363bb825ae4f38ea71d254b34bb88e657ece031 Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 15:59:51 -0400 Subject: [PATCH 4/9] add zip --- gradiodemo.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 gradiodemo.py diff --git a/gradiodemo.py b/gradiodemo.py new file mode 100644 index 0000000..dfc64c7 --- /dev/null +++ b/gradiodemo.py @@ -0,0 +1,51 @@ +from model import PopMusicTransformer +import os +os.environ['CUDA_VISIBLE_DEVICES'] = '-1' +import tensorflow as tf +tf.compat.v1.disable_eager_execution() +import gradio as gr +import requests +import torchtext +import zipfile + +torchtext.utils.download_from_url("https://drive.google.com/uc?id=1gxuTSkF51NP04JZgTE46Pg4KQsbHQKGo", root=".") +torchtext.utils.download_from_url("https://drive.google.com/uc?id=1nAKjaeahlzpVAX0F9wjQEG_hL4UosSbo", root=".") + +with zipfile.ZipFile("REMI-tempo-checkpoint.zip","r") as zip_ref: + zip_ref.extractall(".") +with zipfile.ZipFile("REMI-tempo-chord-checkpoint.zip","r") as zip_ref: + zip_ref.extractall(".") + +url = 'https://github.com/AK391/remi/blob/master/input.midi?raw=true' +r = requests.get(url, allow_redirects=True) +open("input.midi", 'wb').write(r.content) + + +# declare model +model = PopMusicTransformer( + checkpoint='REMI-tempo-checkpoint', + is_training=False) + +def inference(midi): + # generate continuation + model.generate( + n_target_bar=4, + temperature=1.2, + topk=5, + output_path='./result/continuation.midi', + prompt=midi.name) + return './result/continuation.midi' + + +title = "Remi" +description = "demo for Remi. To use it, simply upload your midi file, or click one of the examples to load them. Read more at the links below." +article = "

Adversarial Open Domain Adaption for Sketch-to-Photo Synthesis | Github Repo

" + +gr.Interface( + inference, + gr.inputs.File(label="Input Midi"), + gr.outputs.File(label="Output Midi"), + title=title, + description=description, + article=article + ).launch(debug=True) From cbd0c0a0a0ebe8170ce7637a5e3dcf260a54d0af Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 16:00:10 -0400 Subject: [PATCH 5/9] Delete demo.py --- gradio/demo.py | 43 ------------------------------------------- 1 file changed, 43 deletions(-) delete mode 100644 gradio/demo.py diff --git a/gradio/demo.py b/gradio/demo.py deleted file mode 100644 index 5c7b8d4..0000000 --- a/gradio/demo.py +++ /dev/null @@ -1,43 +0,0 @@ -from model import PopMusicTransformer -import os -os.environ['CUDA_VISIBLE_DEVICES'] = '-1' -import tensorflow as tf -tf.compat.v1.disable_eager_execution() -import gradio as gr -import requests - -url = 'https://github.com/AK391/remi/blob/master/input.midi?raw=true' -r = requests.get(url, allow_redirects=True) -open("input.midi", 'wb').write(r.content) - -# declare model -model = PopMusicTransformer( - checkpoint='REMI-tempo-checkpoint', - is_training=False) - -def inference(midi): - # generate continuation - model.generate( - n_target_bar=4, - temperature=1.2, - topk=5, - output_path='./result/continuation.midi', - prompt=midi.name) - return './result/continuation.midi' - - -title = "Remi" -description = "demo for Remi. To use it, simply upload your midi file, or click one of the examples to load them. Read more at the links below." -article = "

Pop Music Transformer: Beat-based Modeling and Generation of Expressive Pop Piano Compositions | Github Repo

" -examples = [ - ['input.midi'] -] -gr.Interface( - inference, - gr.inputs.File(label="Input Midi"), - gr.outputs.File(label="Output Midi"), - title=title, - description=description, - article=article, - examples=examples - ).launch() From 36900d5e4ffb7a7d9e6d8b2394be47ef4ca8790d Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 16:00:33 -0400 Subject: [PATCH 6/9] debug comment --- gradiodemo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradiodemo.py b/gradiodemo.py index dfc64c7..8439860 100644 --- a/gradiodemo.py +++ b/gradiodemo.py @@ -48,4 +48,4 @@ def inference(midi): title=title, description=description, article=article - ).launch(debug=True) + ).launch() From 7b4a1df133c02de05d6ad4a79db987b06f64d3d8 Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 16:00:56 -0400 Subject: [PATCH 7/9] torchtext --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 9dea8b5..a5a3b63 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ miditoolkit tensorflow-gpu==1.14.0 gradio +torchtext From 6a1874e3d7c79ed6d53debc9dd98ad8e41c40e16 Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 16:16:55 -0400 Subject: [PATCH 8/9] add example --- gradiodemo.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gradiodemo.py b/gradiodemo.py index 8439860..ba07eb9 100644 --- a/gradiodemo.py +++ b/gradiodemo.py @@ -37,15 +37,19 @@ def inference(midi): return './result/continuation.midi' -title = "Remi" -description = "demo for Remi. To use it, simply upload your midi file, or click one of the examples to load them. Read more at the links below." -article = "

Adversarial Open Domain Adaption for Sketch-to-Photo Synthesis | Github Repo

" +title = "Pop Music Transformer" +description = "demo for Pop Music Transformer. To use it, simply upload your midi file, or click one of the examples to load them. Read more at the links below." +article = "

Pop Music Transformer: Beat-based Modeling and Generation of Expressive Pop Piano Compositions | Github Repo

" +examples = [ + ['input.midi'] +] gr.Interface( inference, gr.inputs.File(label="Input Midi"), gr.outputs.File(label="Output Midi"), title=title, description=description, - article=article + article=article, + examples=examples ).launch() From 2bfc4900a47213dd9c4dd4846ab99c0f409d8559 Mon Sep 17 00:00:00 2001 From: AK391 <81195143+AK391@users.noreply.github.com> Date: Wed, 7 Jul 2021 17:16:48 -0400 Subject: [PATCH 9/9] add link --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 255dee7..397e12e 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ Authors: [Yu-Siang Huang](https://remyhuang.github.io/), [Yi-Hsuan Yang](http:// [**Paper (arXiv)**](https://arxiv.org/abs/2002.00212) | [**Blog**](https://ailabs.tw/human-interaction/pop-music-transformer/) | [**Audio demo (Google Drive)**](https://drive.google.com/open?id=1LzPBjHPip4S0CBOLquk5CNapvXSfys54) | [**Online interactive demo**](https://vibertthio.com/transformer/) +## Gradio Demo +[Gradio Web Demo](https://gradio.app/hub/AK391/remi) + REMI, which stands for `REvamped MIDI-derived events`, is a new event representation we propose for converting MIDI scores into text-like discrete tokens. Compared to the MIDI-like event representation adopted in exising Transformer-based music composition models, REMI provides sequence models a metrical context for modeling the rhythmic patterns of music. Using REMI as the event representation, we train a Transformer-XL model to generate minute-long Pop piano music with expressive, coherent and clear structure of rhythm and harmony, without needing any post-processing to refine the result. The model also provides controllability of local tempo changes and chord progression. ## Citation