├── .gitignore ├── LICENSE ├── README.md ├── dataset.py ├── demo ├── downstream_generation │ ├── 16bar_generation_1 │ │ ├── 16bar_latent-z_1.mid │ │ ├── 16bar_midi_event_1.mid │ │ └── 16bar_simunote-emb_1.mid │ ├── 16bar_generation_2 │ │ ├── 16bar_latent-z_2.mid │ │ ├── 16bar_midi_event_2.mid │ │ └── 16bar_simunote-emb_2.mid │ ├── 16bar_generation_3 │ │ ├── 16bar_latent-z_3.mid │ │ ├── 16bar_midi_event_3.mid │ │ └── 16bar_simunote-emb_3.mid │ ├── 16bar_generation_4 │ │ ├── 16bar_latent-z_4.mid │ │ ├── 16bar_midi_event_4.mid │ │ └── 16bar_simunote-emb_4.mid │ ├── 16bar_generation_5 │ │ ├── 16bar_latent-z_5.mid │ │ ├── 16bar_midi_event_5.mid │ │ └── 16bar_simunote-emb_5.mid │ ├── 16bar_generation_6 │ │ ├── 16bar_latent-z_6.mid │ │ ├── 16bar_midi_event_6.mid │ │ └── 16bar_simunote-emb_6.mid │ ├── 8bar_generation_1 │ │ ├── 8bar_latent-z_1.mid │ │ ├── 8bar_midi_event_1.mid │ │ └── 8bar_simunote-emb_1.mid │ ├── 8bar_generation_2 │ │ ├── 8bar_latent-z_2.mid │ │ ├── 8bar_midi_event_2.mid │ │ └── 8bar_simunote-emb_2.mid │ ├── 8bar_generation_3 │ │ ├── 8bar_latent-z_3.mid │ │ ├── 8bar_midi_event_3.mid │ │ └── 8bar_simunote-emb_3.mid │ ├── 8bar_generation_4 │ │ ├── 8bar_latent-z_4.mid │ │ ├── 8bar_midi_event_4.mid │ │ └── 8bar_simunote-emb_4.mid │ ├── 8bar_generation_5 │ │ ├── 8bar_latent-z_5.mid │ │ ├── 8bar_midi_event_5.mid │ │ └── 8bar_simunote-emb_5.mid │ └── 8bar_generation_6 │ │ ├── 8bar_latent-z_6.mid │ │ ├── 8bar_midi_event_6.mid │ │ └── 8bar_simunote-emb_6.mid ├── latent_space_interpolation │ ├── sample1 │ │ ├── interp_midi-seq_1.mid │ │ ├── interp_pianotree_1.mid │ │ ├── interp_pr-cnn_1.mid │ │ ├── interp_pr-fc_1.mid │ │ └── interp_pr-rnn_1.mid │ ├── sample2 │ │ ├── interp_midi-seq_2.mid │ │ ├── interp_pianotree_2.mid │ │ ├── interp_pr-cnn_2.mid │ │ ├── interp_pr-fc_2.mid │ │ └── interp_pr-rnn_2.mid │ ├── sample3 │ │ ├── interp_midi-seq_3.mid │ │ ├── interp_pianotree_3.mid │ │ ├── interp_pr-cnn_3.mid │ │ ├── interp_pr-fc_3.mid │ │ └── interp_pr-rnn_3.mid │ ├── sample4 │ │ ├── interp_midi-seq_4.mid │ │ ├── interp_pianotree_4.mid │ │ ├── interp_pr-cnn_4.mid │ │ ├── interp_pr-fc_4.mid │ │ └── interp_pr-rnn._4mid.mid │ └── sample5 │ │ ├── interp_midi-seq_5.mid │ │ ├── interp_pianotree_5.mid │ │ ├── interp_pr-cnn_5.mid │ │ ├── interp_pr-fc_5.mid │ │ └── interp_pr-rnn_5.mid └── readme.txt ├── model.py ├── model_config.json ├── train.py └── utils.py /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/README.md -------------------------------------------------------------------------------- /dataset.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/dataset.py -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_1/16bar_latent-z_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_1/16bar_latent-z_1.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_1/16bar_midi_event_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_1/16bar_midi_event_1.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_1/16bar_simunote-emb_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_1/16bar_simunote-emb_1.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_2/16bar_latent-z_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_2/16bar_latent-z_2.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_2/16bar_midi_event_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_2/16bar_midi_event_2.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_2/16bar_simunote-emb_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_2/16bar_simunote-emb_2.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_3/16bar_latent-z_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_3/16bar_latent-z_3.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_3/16bar_midi_event_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_3/16bar_midi_event_3.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_3/16bar_simunote-emb_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_3/16bar_simunote-emb_3.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_4/16bar_latent-z_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_4/16bar_latent-z_4.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_4/16bar_midi_event_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_4/16bar_midi_event_4.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_4/16bar_simunote-emb_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_4/16bar_simunote-emb_4.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_5/16bar_latent-z_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_5/16bar_latent-z_5.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_5/16bar_midi_event_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_5/16bar_midi_event_5.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_5/16bar_simunote-emb_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_5/16bar_simunote-emb_5.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_6/16bar_latent-z_6.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_6/16bar_latent-z_6.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_6/16bar_midi_event_6.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_6/16bar_midi_event_6.mid -------------------------------------------------------------------------------- /demo/downstream_generation/16bar_generation_6/16bar_simunote-emb_6.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/16bar_generation_6/16bar_simunote-emb_6.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_1/8bar_latent-z_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_1/8bar_latent-z_1.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_1/8bar_midi_event_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_1/8bar_midi_event_1.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_1/8bar_simunote-emb_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_1/8bar_simunote-emb_1.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_2/8bar_latent-z_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_2/8bar_latent-z_2.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_2/8bar_midi_event_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_2/8bar_midi_event_2.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_2/8bar_simunote-emb_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_2/8bar_simunote-emb_2.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_3/8bar_latent-z_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_3/8bar_latent-z_3.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_3/8bar_midi_event_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_3/8bar_midi_event_3.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_3/8bar_simunote-emb_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_3/8bar_simunote-emb_3.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_4/8bar_latent-z_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_4/8bar_latent-z_4.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_4/8bar_midi_event_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_4/8bar_midi_event_4.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_4/8bar_simunote-emb_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_4/8bar_simunote-emb_4.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_5/8bar_latent-z_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_5/8bar_latent-z_5.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_5/8bar_midi_event_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_5/8bar_midi_event_5.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_5/8bar_simunote-emb_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_5/8bar_simunote-emb_5.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_6/8bar_latent-z_6.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_6/8bar_latent-z_6.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_6/8bar_midi_event_6.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_6/8bar_midi_event_6.mid -------------------------------------------------------------------------------- /demo/downstream_generation/8bar_generation_6/8bar_simunote-emb_6.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/downstream_generation/8bar_generation_6/8bar_simunote-emb_6.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample1/interp_midi-seq_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample1/interp_midi-seq_1.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample1/interp_pianotree_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample1/interp_pianotree_1.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample1/interp_pr-cnn_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample1/interp_pr-cnn_1.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample1/interp_pr-fc_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample1/interp_pr-fc_1.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample1/interp_pr-rnn_1.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample1/interp_pr-rnn_1.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample2/interp_midi-seq_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample2/interp_midi-seq_2.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample2/interp_pianotree_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample2/interp_pianotree_2.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample2/interp_pr-cnn_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample2/interp_pr-cnn_2.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample2/interp_pr-fc_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample2/interp_pr-fc_2.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample2/interp_pr-rnn_2.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample2/interp_pr-rnn_2.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample3/interp_midi-seq_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample3/interp_midi-seq_3.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample3/interp_pianotree_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample3/interp_pianotree_3.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample3/interp_pr-cnn_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample3/interp_pr-cnn_3.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample3/interp_pr-fc_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample3/interp_pr-fc_3.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample3/interp_pr-rnn_3.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample3/interp_pr-rnn_3.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample4/interp_midi-seq_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample4/interp_midi-seq_4.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample4/interp_pianotree_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample4/interp_pianotree_4.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample4/interp_pr-cnn_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample4/interp_pr-cnn_4.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample4/interp_pr-fc_4.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample4/interp_pr-fc_4.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample4/interp_pr-rnn._4mid.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample4/interp_pr-rnn._4mid.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample5/interp_midi-seq_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample5/interp_midi-seq_5.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample5/interp_pianotree_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample5/interp_pianotree_5.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample5/interp_pr-cnn_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample5/interp_pr-cnn_5.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample5/interp_pr-fc_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample5/interp_pr-fc_5.mid -------------------------------------------------------------------------------- /demo/latent_space_interpolation/sample5/interp_pr-rnn_5.mid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/latent_space_interpolation/sample5/interp_pr-rnn_5.mid -------------------------------------------------------------------------------- /demo/readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/demo/readme.txt -------------------------------------------------------------------------------- /model.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/model.py -------------------------------------------------------------------------------- /model_config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/model_config.json -------------------------------------------------------------------------------- /train.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/train.py -------------------------------------------------------------------------------- /utils.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZZWaang/PianoTree-VAE/HEAD/utils.py --------------------------------------------------------------------------------