{ "nbformat": 4, "nbformat_minor": 2, "metadata": { "language_info": { "name": "python", "codemirror_mode": { "name": "ipython", "version": 3 }, "version": "3.8.2-final" }, "orig_nbformat": 2, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "npconvert_exporter": "python", "pygments_lexer": "ipython3", "version": 3, "kernelspec": { "name": "python38264bit90963b6dfcff4977b23d3abddad7c054", "display_name": "Python 3.8.2 64-bit" } }, "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "import music21\n", "from music21.midi import MidiFile" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "mf = MidiFile()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "filepath = '/home/altarin/praca-magisterska/docs/images/seq2seq_generated_midi_7.mid'\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "import mido" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": "\n\n\n\nprogram_change channel=0 program=30 time=0\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=60 velocity=100 time=0\nnote_on channel=0 note=48 velocity=0 time=220\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=55 velocity=100 time=0\nnote_on channel=0 note=60 velocity=0 time=0\nnote_on channel=0 note=60 velocity=100 time=0\nnote_on channel=0 note=48 velocity=0 time=220\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=55 velocity=0 time=0\nnote_on channel=0 note=55 velocity=100 time=0\nnote_on channel=0 note=60 velocity=0 time=0\nnote_on channel=0 note=60 velocity=100 time=0\nnote_on channel=0 note=48 velocity=0 time=440\nnote_on channel=0 note=55 velocity=0 time=0\nnote_on channel=0 note=60 velocity=0 time=0\nnote_on channel=0 note=48 velocity=0 time=110\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=45 velocity=100 time=770\nnote_on channel=0 note=50 velocity=100 time=0\nnote_on channel=0 note=57 velocity=100 time=0\nnote_on channel=0 note=45 velocity=0 time=220\nnote_on channel=0 note=46 velocity=100 time=0\nnote_on channel=0 note=50 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=57 velocity=0 time=0\nnote_on channel=0 note=58 velocity=100 time=0\nnote_on channel=0 note=46 velocity=0 time=220\nnote_on channel=0 note=46 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=58 velocity=0 time=0\nnote_on channel=0 note=58 velocity=100 time=0\nnote_on channel=0 note=46 velocity=0 time=220\nnote_on channel=0 note=46 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=58 velocity=0 time=0\nnote_on channel=0 note=58 velocity=100 time=0\nnote_on channel=0 note=46 velocity=0 time=440\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=58 velocity=0 time=0\nnote_on channel=0 note=60 velocity=100 time=0\nnote_on channel=0 note=48 velocity=0 time=440\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=60 velocity=0 time=0\nnote_on channel=0 note=60 velocity=100 time=0\nnote_on channel=0 note=48 velocity=0 time=220\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=60 velocity=0 time=0\nnote_on channel=0 note=48 velocity=0 time=220\nnote_on channel=0 note=51 velocity=100 time=0\nnote_on channel=0 note=48 velocity=100 time=220\nnote_on channel=0 note=51 velocity=0 time=0\nnote_on channel=0 note=48 velocity=0 time=220\nnote_on channel=0 note=60 velocity=100 time=0\nnote_on channel=0 note=51 velocity=100 time=220\nnote_on channel=0 note=60 velocity=0 time=0\nnote_on channel=0 note=51 velocity=0 time=220\nnote_on channel=0 note=51 velocity=100 time=0\nnote_on channel=0 note=51 velocity=0 time=220\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=46 velocity=100 time=440\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=58 velocity=100 time=0\nnote_on channel=0 note=46 velocity=0 time=990\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=58 velocity=0 time=0\nnote_on channel=0 note=46 velocity=100 time=110\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=58 velocity=100 time=0\nnote_on channel=0 note=46 velocity=0 time=220\nnote_on channel=0 note=46 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=58 velocity=0 time=0\nnote_on channel=0 note=58 velocity=100 time=0\nnote_on channel=0 note=41 velocity=100 time=220\nnote_on channel=0 note=46 velocity=0 time=0\nnote_on channel=0 note=48 velocity=100 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=53 velocity=100 time=0\nnote_on channel=0 note=57 velocity=100 time=0\nnote_on channel=0 note=58 velocity=0 time=0\nnote_on channel=0 note=41 velocity=0 time=220\nnote_on channel=0 note=48 velocity=0 time=0\nnote_on channel=0 note=53 velocity=0 time=0\nnote_on channel=0 note=57 velocity=0 time=0\n\n\nprogram_change channel=1 program=1 time=0\nnote_on channel=1 note=60 velocity=100 time=0\nnote_on channel=1 note=60 velocity=0 time=220\nnote_on channel=1 note=62 velocity=100 time=0\nnote_on channel=1 note=62 velocity=0 time=220\nnote_on channel=1 note=63 velocity=100 time=0\nnote_on channel=1 note=63 velocity=0 time=220\nnote_on channel=1 note=62 velocity=100 time=220\nnote_on channel=1 note=62 velocity=0 time=220\nnote_on channel=1 note=75 velocity=100 time=0\nnote_on channel=1 note=58 velocity=100 time=220\nnote_on channel=1 note=75 velocity=0 time=0\nnote_on channel=1 note=75 velocity=100 time=0\nnote_on channel=1 note=58 velocity=0 time=220\nnote_on channel=1 note=75 velocity=0 time=0\nnote_on channel=1 note=75 velocity=100 time=0\nnote_on channel=1 note=75 velocity=0 time=220\nnote_on channel=1 note=75 velocity=100 time=0\nnote_on channel=1 note=75 velocity=0 time=220\nnote_on channel=1 note=72 velocity=100 time=220\nnote_on channel=1 note=72 velocity=0 time=220\nnote_on channel=1 note=75 velocity=100 time=440\nnote_on channel=1 note=75 velocity=0 time=220\nnote_on channel=1 note=72 velocity=100 time=220\nnote_on channel=1 note=72 velocity=0 time=220\nnote_on channel=1 note=75 velocity=100 time=0\nnote_on channel=1 note=75 velocity=0 time=220\nnote_on channel=1 note=72 velocity=100 time=220\nnote_on channel=1 note=72 velocity=0 time=220\nnote_on channel=1 note=75 velocity=100 time=440\nnote_on channel=1 note=75 velocity=0 time=220\nnote_on channel=1 note=72 velocity=100 time=220\nnote_on channel=1 note=72 velocity=0 time=220\nnote_on channel=1 note=70 velocity=100 time=220\nnote_on channel=1 note=70 velocity=0 time=220\nnote_on channel=1 note=70 velocity=100 time=0\nnote_on channel=1 note=70 velocity=0 time=220\nnote_on channel=1 note=70 velocity=100 time=0\nnote_on channel=1 note=70 velocity=0 time=220\nnote_on channel=1 note=70 velocity=100 time=0\nnote_on channel=1 note=70 velocity=0 time=440\nnote_on channel=1 note=71 velocity=100 time=0\nnote_on channel=1 note=71 velocity=0 time=440\n\n\nprogram_change channel=2 program=35 time=0\nnote_on channel=2 note=22 velocity=100 time=0\nnote_on channel=2 note=22 velocity=0 time=220\nnote_on channel=2 note=22 velocity=100 time=0\nnote_on channel=2 note=22 velocity=0 time=220\nnote_on channel=2 note=22 velocity=100 time=0\nnote_on channel=2 note=22 velocity=0 time=220\nnote_on channel=2 note=22 velocity=100 time=0\nnote_on channel=2 note=22 velocity=0 time=220\nnote_on channel=2 note=22 velocity=100 time=0\nnote_on channel=2 note=22 velocity=0 time=220\nnote_on channel=2 note=22 velocity=100 time=0\nnote_on channel=2 note=22 velocity=0 time=220\nnote_on channel=2 note=22 velocity=100 time=0\nnote_on channel=2 note=22 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=29 velocity=100 time=0\nnote_on channel=2 note=29 velocity=0 time=220\nnote_on channel=2 note=31 velocity=100 time=0\nnote_on channel=2 note=31 velocity=0 time=220\nnote_on channel=2 note=31 velocity=100 time=0\nnote_on channel=2 note=31 velocity=0 time=220\nnote_on channel=2 note=32 velocity=100 time=220\nnote_on channel=2 note=32 velocity=0 time=220\nnote_on channel=2 note=32 velocity=100 time=0\nnote_on channel=2 note=32 velocity=0 time=220\nnote_on channel=2 note=34 velocity=100 time=220\nnote_on channel=2 note=34 velocity=0 time=220\nnote_on channel=2 note=34 velocity=100 time=0\nnote_on channel=2 note=24 velocity=100 time=220\nnote_on channel=2 note=34 velocity=0 time=0\nnote_on channel=2 note=24 velocity=0 time=220\nnote_on channel=2 note=24 velocity=100 time=0\nnote_on channel=2 note=24 velocity=0 time=220\nnote_on channel=2 note=24 velocity=100 time=0\nnote_on channel=2 note=24 velocity=0 time=220\nnote_on channel=2 note=24 velocity=100 time=0\nnote_on channel=2 note=24 velocity=0 time=220\nnote_on channel=2 note=24 velocity=100 time=0\nnote_on channel=2 note=24 velocity=0 time=220\nnote_on channel=2 note=24 velocity=100 time=0\nnote_on channel=2 note=24 velocity=0 time=220\nnote_on channel=2 note=24 velocity=100 time=0\nnote_on channel=2 note=24 velocity=0 time=220\nnote_on channel=2 note=24 velocity=100 time=0\nnote_on channel=2 note=24 velocity=0 time=220\n\n\nprogram_change channel=9 program=1 time=0\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=110\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=49 velocity=100 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=49 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=0 time=110\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=0 time=110\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=110\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=49 velocity=100 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=49 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=36 velocity=100 time=0\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\nnote_on channel=9 note=38 velocity=100 time=0\nnote_on channel=9 note=36 velocity=100 time=220\nnote_on channel=9 note=38 velocity=0 time=0\nnote_on channel=9 note=36 velocity=0 time=220\n\n" } ], "source": [ "mid = mido.MidiFile(filepath)\n", "for i, track in enumerate(mid.tracks):\n", " for msg in track:\n", " print(msg)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/png": "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\n" }, "metadata": { "image/png": { "width": 362, "height": 248 }, "needs_background": "light" } } ], "source": [ "x = np.arange(0,10)\n", "y = np.arange(0,10) + np.random.random(10)-0.5\n", "y_hat = np.arange(0,10)\n", "plt.scatter(x, y, c='k')\n", "plt.plot(x,y_hat, c='r')\n", "# plt.savefig('linear_reg.png')" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [] } ] }