Revision 9:1171de1838d7
| Vamp.ipynb | ||
|---|---|---|
| 14 | 14 |
"source": [ |
| 15 | 15 |
"### Setup\n", |
| 16 | 16 |
"\n", |
| 17 |
"First import some necessary modules.\n", |
|
| 17 |
"First we import some necessary modules.\n",
|
|
| 18 | 18 |
"\n", |
| 19 | 19 |
"The `vamp` module loads and runs Vamp plugins. `librosa` is an audio analysis module from LabROSA at Columbia University. We are using it here only to load audio files, though it can also carry out some analysis functions. `matplotlib` is the usual plotting library." |
| 20 | 20 |
] |
| ... | ... | |
| 23 | 23 |
"cell_type": "code", |
| 24 | 24 |
"execution_count": 1, |
| 25 | 25 |
"metadata": {
|
| 26 |
"collapsed": true
|
|
| 26 |
"collapsed": false
|
|
| 27 | 27 |
}, |
| 28 | 28 |
"outputs": [ |
| 29 | 29 |
{
|
| ... | ... | |
| 38 | 38 |
"source": [ |
| 39 | 39 |
"import vamp\n", |
| 40 | 40 |
"import librosa\n", |
| 41 |
"import matplotlib.pyplot as plt" |
|
| 42 |
] |
|
| 43 |
}, |
|
| 44 |
{
|
|
| 45 |
"cell_type": "markdown", |
|
| 46 |
"metadata": {},
|
|
| 47 |
"source": [ |
|
| 48 |
"This bit of magic ensures that plots show up in the notebook rather than in a separate window:" |
|
| 49 |
] |
|
| 50 |
}, |
|
| 51 |
{
|
|
| 52 |
"cell_type": "code", |
|
| 53 |
"execution_count": 2, |
|
| 54 |
"metadata": {
|
|
| 55 |
"collapsed": true |
|
| 56 |
}, |
|
| 57 |
"outputs": [], |
|
| 58 |
"source": [ |
|
| 41 |
"import matplotlib.pyplot as plt\n", |
|
| 59 | 42 |
"%matplotlib inline" |
| 60 | 43 |
] |
| 61 | 44 |
}, |
| ... | ... | |
| 72 | 55 |
}, |
| 73 | 56 |
{
|
| 74 | 57 |
"cell_type": "code", |
| 75 |
"execution_count": 3,
|
|
| 58 |
"execution_count": 2,
|
|
| 76 | 59 |
"metadata": {
|
| 77 |
"collapsed": true
|
|
| 60 |
"collapsed": false
|
|
| 78 | 61 |
}, |
| 79 | 62 |
"outputs": [ |
| 80 | 63 |
{
|
| ... | ... | |
| 178 | 161 |
" 'vamp-test-plugin:vamp-test-plugin-freq']" |
| 179 | 162 |
] |
| 180 | 163 |
}, |
| 181 |
"execution_count": 3,
|
|
| 164 |
"execution_count": 2,
|
|
| 182 | 165 |
"metadata": {},
|
| 183 | 166 |
"output_type": "execute_result" |
| 184 | 167 |
} |
| ... | ... | |
| 196 | 179 |
}, |
| 197 | 180 |
{
|
| 198 | 181 |
"cell_type": "code", |
| 199 |
"execution_count": 4,
|
|
| 182 |
"execution_count": 3,
|
|
| 200 | 183 |
"metadata": {
|
| 201 | 184 |
"collapsed": true |
| 202 | 185 |
}, |
| ... | ... | |
| 214 | 197 |
}, |
| 215 | 198 |
{
|
| 216 | 199 |
"cell_type": "code", |
| 217 |
"execution_count": 5,
|
|
| 200 |
"execution_count": 4,
|
|
| 218 | 201 |
"metadata": {
|
| 219 | 202 |
"collapsed": true |
| 220 | 203 |
}, |
| ... | ... | |
| 234 | 217 |
}, |
| 235 | 218 |
{
|
| 236 | 219 |
"cell_type": "code", |
| 237 |
"execution_count": 6,
|
|
| 220 |
"execution_count": 5,
|
|
| 238 | 221 |
"metadata": {
|
| 239 | 222 |
"collapsed": false |
| 240 | 223 |
}, |
| ... | ... | |
| 252 | 235 |
}, |
| 253 | 236 |
{
|
| 254 | 237 |
"cell_type": "code", |
| 255 |
"execution_count": 7,
|
|
| 238 |
"execution_count": 6,
|
|
| 256 | 239 |
"metadata": {
|
| 257 |
"collapsed": true
|
|
| 240 |
"collapsed": false
|
|
| 258 | 241 |
}, |
| 259 | 242 |
"outputs": [ |
| 260 | 243 |
{
|
| ... | ... | |
| 263 | 246 |
"22050" |
| 264 | 247 |
] |
| 265 | 248 |
}, |
| 266 |
"execution_count": 7,
|
|
| 249 |
"execution_count": 6,
|
|
| 267 | 250 |
"metadata": {},
|
| 268 | 251 |
"output_type": "execute_result" |
| 269 | 252 |
} |
| ... | ... | |
| 281 | 264 |
}, |
| 282 | 265 |
{
|
| 283 | 266 |
"cell_type": "code", |
| 284 |
"execution_count": 8,
|
|
| 267 |
"execution_count": 7,
|
|
| 285 | 268 |
"metadata": {
|
| 286 | 269 |
"collapsed": true |
| 287 | 270 |
}, |
| ... | ... | |
| 304 | 287 |
}, |
| 305 | 288 |
{
|
| 306 | 289 |
"cell_type": "code", |
| 307 |
"execution_count": 9,
|
|
| 290 |
"execution_count": 8,
|
|
| 308 | 291 |
"metadata": {
|
| 309 |
"collapsed": true
|
|
| 292 |
"collapsed": false
|
|
| 310 | 293 |
}, |
| 311 | 294 |
"outputs": [ |
| 312 | 295 |
{
|
| ... | ... | |
| 639 | 622 |
" 0.00000000e+00, 3.16866152e-02, 5.19289337e-02]], dtype=float32))}" |
| 640 | 623 |
] |
| 641 | 624 |
}, |
| 642 |
"execution_count": 9,
|
|
| 625 |
"execution_count": 8,
|
|
| 643 | 626 |
"metadata": {},
|
| 644 | 627 |
"output_type": "execute_result" |
| 645 | 628 |
} |
| ... | ... | |
| 659 | 642 |
}, |
| 660 | 643 |
{
|
| 661 | 644 |
"cell_type": "code", |
| 662 |
"execution_count": 10,
|
|
| 645 |
"execution_count": 9,
|
|
| 663 | 646 |
"metadata": {
|
| 664 | 647 |
"collapsed": false |
| 665 | 648 |
}, |
| ... | ... | |
| 670 | 653 |
}, |
| 671 | 654 |
{
|
| 672 | 655 |
"cell_type": "code", |
| 673 |
"execution_count": 11,
|
|
| 656 |
"execution_count": 10,
|
|
| 674 | 657 |
"metadata": {
|
| 675 |
"collapsed": true
|
|
| 658 |
"collapsed": false
|
|
| 676 | 659 |
}, |
| 677 | 660 |
"outputs": [ |
| 678 | 661 |
{
|
| ... | ... | |
| 681 | 664 |
" 0.092879819" |
| 682 | 665 |
] |
| 683 | 666 |
}, |
| 684 |
"execution_count": 11,
|
|
| 667 |
"execution_count": 10,
|
|
| 685 | 668 |
"metadata": {},
|
| 686 | 669 |
"output_type": "execute_result" |
| 687 | 670 |
} |
| ... | ... | |
| 699 | 682 |
}, |
| 700 | 683 |
{
|
| 701 | 684 |
"cell_type": "code", |
| 702 |
"execution_count": 12,
|
|
| 685 |
"execution_count": 11,
|
|
| 703 | 686 |
"metadata": {
|
| 704 |
"collapsed": true
|
|
| 687 |
"collapsed": false
|
|
| 705 | 688 |
}, |
| 706 | 689 |
"outputs": [ |
| 707 | 690 |
{
|
| ... | ... | |
| 710 | 693 |
"2048.00000895" |
| 711 | 694 |
] |
| 712 | 695 |
}, |
| 713 |
"execution_count": 12,
|
|
| 696 |
"execution_count": 11,
|
|
| 714 | 697 |
"metadata": {},
|
| 715 | 698 |
"output_type": "execute_result" |
| 716 | 699 |
} |
| ... | ... | |
| 721 | 704 |
}, |
| 722 | 705 |
{
|
| 723 | 706 |
"cell_type": "code", |
| 724 |
"execution_count": 13,
|
|
| 707 |
"execution_count": 12,
|
|
| 725 | 708 |
"metadata": {
|
| 726 |
"collapsed": true
|
|
| 709 |
"collapsed": false
|
|
| 727 | 710 |
}, |
| 728 | 711 |
"outputs": [ |
| 729 | 712 |
{
|
| ... | ... | |
| 732 | 715 |
"2048" |
| 733 | 716 |
] |
| 734 | 717 |
}, |
| 735 |
"execution_count": 13,
|
|
| 718 |
"execution_count": 12,
|
|
| 736 | 719 |
"metadata": {},
|
| 737 | 720 |
"output_type": "execute_result" |
| 738 | 721 |
} |
| ... | ... | |
| 750 | 733 |
}, |
| 751 | 734 |
{
|
| 752 | 735 |
"cell_type": "code", |
| 753 |
"execution_count": 14,
|
|
| 736 |
"execution_count": 13,
|
|
| 754 | 737 |
"metadata": {
|
| 755 |
"collapsed": true
|
|
| 738 |
"collapsed": false
|
|
| 756 | 739 |
}, |
| 757 | 740 |
"outputs": [ |
| 758 | 741 |
{
|
| 759 | 742 |
"data": {
|
| 760 | 743 |
"text/plain": [ |
| 761 |
"<matplotlib.image.AxesImage at 0x7fb0c6a80710>"
|
|
| 744 |
"<matplotlib.image.AxesImage at 0x7fc227986710>"
|
|
| 762 | 745 |
] |
| 763 | 746 |
}, |
| 764 |
"execution_count": 14,
|
|
| 747 |
"execution_count": 13,
|
|
| 765 | 748 |
"metadata": {},
|
| 766 | 749 |
"output_type": "execute_result" |
| 767 | 750 |
}, |
| ... | ... | |
| 769 | 752 |
"data": {
|
| 770 | 753 |
"image/png": "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\nYII=\n", |
| 771 | 754 |
"text/plain": [ |
| 772 |
"<matplotlib.figure.Figure at 0x7fb0c6d57cd0>"
|
|
| 755 |
"<matplotlib.figure.Figure at 0x7fc227c5acd0>"
|
|
| 773 | 756 |
] |
| 774 | 757 |
}, |
| 775 | 758 |
"metadata": {},
|
| ... | ... | |
| 784 | 767 |
"cell_type": "markdown", |
| 785 | 768 |
"metadata": {},
|
| 786 | 769 |
"source": [ |
| 770 |
"### How did we know which parameters were available?\n", |
|
| 771 |
"A bit further back, we set up some plugin parameters in a Python dictionary:" |
|
| 772 |
] |
|
| 773 |
}, |
|
| 774 |
{
|
|
| 775 |
"cell_type": "code", |
|
| 776 |
"execution_count": 14, |
|
| 777 |
"metadata": {
|
|
| 778 |
"collapsed": true |
|
| 779 |
}, |
|
| 780 |
"outputs": [], |
|
| 781 |
"source": [ |
|
| 782 |
"plugin_params = { \"tuningmode\": 1, \"s\": 0.9, \"chromanormalize\": 3 }"
|
|
| 783 |
] |
|
| 784 |
}, |
|
| 785 |
{
|
|
| 786 |
"cell_type": "markdown", |
|
| 787 |
"metadata": {},
|
|
| 788 |
"source": [ |
|
| 789 |
"We also included `output = chroma` in the `vamp.collect` call to make sure we got the right output from the plugin. How did we know which parameters and outputs were available?\n", |
|
| 790 |
"\n", |
|
| 791 |
"Outputs are pretty simple, there's a `vamp.get_outputs_of` call that returns them directly." |
|
| 792 |
] |
|
| 793 |
}, |
|
| 794 |
{
|
|
| 795 |
"cell_type": "code", |
|
| 796 |
"execution_count": 15, |
|
| 797 |
"metadata": {
|
|
| 798 |
"collapsed": false |
|
| 799 |
}, |
|
| 800 |
"outputs": [ |
|
| 801 |
{
|
|
| 802 |
"data": {
|
|
| 803 |
"text/plain": [ |
|
| 804 |
"['logfreqspec',\n", |
|
| 805 |
" 'tunedlogfreqspec',\n", |
|
| 806 |
" 'semitonespectrum',\n", |
|
| 807 |
" 'chroma',\n", |
|
| 808 |
" 'basschroma',\n", |
|
| 809 |
" 'bothchroma']" |
|
| 810 |
] |
|
| 811 |
}, |
|
| 812 |
"execution_count": 15, |
|
| 813 |
"metadata": {},
|
|
| 814 |
"output_type": "execute_result" |
|
| 815 |
} |
|
| 816 |
], |
|
| 817 |
"source": [ |
|
| 818 |
"vamp.get_outputs_of(\"nnls-chroma:nnls-chroma\")" |
|
| 819 |
] |
|
| 820 |
}, |
|
| 821 |
{
|
|
| 822 |
"cell_type": "markdown", |
|
| 823 |
"metadata": {},
|
|
| 824 |
"source": [ |
|
| 825 |
"Querying details of a plugin's parameters is a bit more tricky with the current version of the module. You have to use a lower-level interface for this. It looks like the following." |
|
| 826 |
] |
|
| 827 |
}, |
|
| 828 |
{
|
|
| 829 |
"cell_type": "code", |
|
| 830 |
"execution_count": 16, |
|
| 831 |
"metadata": {
|
|
| 832 |
"collapsed": false |
|
| 833 |
}, |
|
| 834 |
"outputs": [ |
|
| 835 |
{
|
|
| 836 |
"data": {
|
|
| 837 |
"text/plain": [ |
|
| 838 |
"[{'defaultValue': 1.0,\n",
|
|
| 839 |
" 'description': 'Toggles approximate transcription (NNLS).',\n", |
|
| 840 |
" 'identifier': 'useNNLS',\n", |
|
| 841 |
" 'isQuantized': True,\n", |
|
| 842 |
" 'maxValue': 1.0,\n", |
|
| 843 |
" 'minValue': 0.0,\n", |
|
| 844 |
" 'name': 'use approximate transcription (NNLS)',\n", |
|
| 845 |
" 'quantizeStep': 1.0,\n", |
|
| 846 |
" 'unit': ''},\n", |
|
| 847 |
" {'defaultValue': 0.0,\n",
|
|
| 848 |
" 'description': 'Consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [bass noise threshold] x [total energy] will be set to 0. A threshold value of 0 means that no bins will be changed.',\n", |
|
| 849 |
" 'identifier': 'rollon',\n", |
|
| 850 |
" 'isQuantized': True,\n", |
|
| 851 |
" 'maxValue': 5.0,\n", |
|
| 852 |
" 'minValue': 0.0,\n", |
|
| 853 |
" 'name': 'bass noise threshold',\n", |
|
| 854 |
" 'quantizeStep': 0.5,\n", |
|
| 855 |
" 'unit': '%'},\n", |
|
| 856 |
" {'defaultValue': 0.0,\n",
|
|
| 857 |
" 'description': 'Tuning can be performed locally or on the whole extraction segment. Local tuning is only advisable when the tuning is likely to change over the audio, for example in podcasts, or in a cappella singing.',\n", |
|
| 858 |
" 'identifier': 'tuningmode',\n", |
|
| 859 |
" 'isQuantized': True,\n", |
|
| 860 |
" 'maxValue': 1.0,\n", |
|
| 861 |
" 'minValue': 0.0,\n", |
|
| 862 |
" 'name': 'tuning mode',\n", |
|
| 863 |
" 'quantizeStep': 1.0,\n", |
|
| 864 |
" 'unit': '',\n", |
|
| 865 |
" 'valueNames': ['global tuning', 'local tuning']},\n", |
|
| 866 |
" {'defaultValue': 1.0,\n",
|
|
| 867 |
" 'description': 'Spectral whitening: no whitening - 0; whitening - 1.',\n", |
|
| 868 |
" 'identifier': 'whitening',\n", |
|
| 869 |
" 'isQuantized': False,\n", |
|
| 870 |
" 'maxValue': 1.0,\n", |
|
| 871 |
" 'minValue': 0.0,\n", |
|
| 872 |
" 'name': 'spectral whitening',\n", |
|
| 873 |
" 'unit': ''},\n", |
|
| 874 |
" {'defaultValue': 0.699999988079071,\n",
|
|
| 875 |
" 'description': 'Determines how individual notes in the note dictionary look: higher values mean more dominant higher harmonics.',\n", |
|
| 876 |
" 'identifier': 's',\n", |
|
| 877 |
" 'isQuantized': False,\n", |
|
| 878 |
" 'maxValue': 0.8999999761581421,\n", |
|
| 879 |
" 'minValue': 0.5,\n", |
|
| 880 |
" 'name': 'spectral shape',\n", |
|
| 881 |
" 'unit': ''},\n", |
|
| 882 |
" {'defaultValue': 0.0,\n",
|
|
| 883 |
" 'description': 'How shall the chroma vector be normalized?',\n", |
|
| 884 |
" 'identifier': 'chromanormalize',\n", |
|
| 885 |
" 'isQuantized': True,\n", |
|
| 886 |
" 'maxValue': 3.0,\n", |
|
| 887 |
" 'minValue': 0.0,\n", |
|
| 888 |
" 'name': 'chroma normalization',\n", |
|
| 889 |
" 'quantizeStep': 1.0,\n", |
|
| 890 |
" 'unit': '',\n", |
|
| 891 |
" 'valueNames': ['none', 'maximum norm', 'L1 norm', 'L2 norm']}]" |
|
| 892 |
] |
|
| 893 |
}, |
|
| 894 |
"execution_count": 16, |
|
| 895 |
"metadata": {},
|
|
| 896 |
"output_type": "execute_result" |
|
| 897 |
} |
|
| 898 |
], |
|
| 899 |
"source": [ |
|
| 900 |
"plug = vamp.vampyhost.load_plugin(\"nnls-chroma:nnls-chroma\", 44100, vamp.vampyhost.ADAPT_NONE)\n", |
|
| 901 |
"plug.parameters" |
|
| 902 |
] |
|
| 903 |
}, |
|
| 904 |
{
|
|
| 905 |
"cell_type": "markdown", |
|
| 906 |
"metadata": {},
|
|
| 907 |
"source": [ |
|
| 908 |
"From this we can work out that (for example) to set the chroma vector normalisation to \"L2 norm\" we should supply something like `parameters = { \"chromanormalize\" : 3 }` in the call to `vamp.collect`.\n",
|
|
| 909 |
"\n", |
|
| 910 |
"(Strictly speaking we're supposed to call" |
|
| 911 |
] |
|
| 912 |
}, |
|
| 913 |
{
|
|
| 914 |
"cell_type": "code", |
|
| 915 |
"execution_count": 17, |
|
| 916 |
"metadata": {
|
|
| 917 |
"collapsed": false |
|
| 918 |
}, |
|
| 919 |
"outputs": [ |
|
| 920 |
{
|
|
| 921 |
"data": {
|
|
| 922 |
"text/plain": [ |
|
| 923 |
"True" |
|
| 924 |
] |
|
| 925 |
}, |
|
| 926 |
"execution_count": 17, |
|
| 927 |
"metadata": {},
|
|
| 928 |
"output_type": "execute_result" |
|
| 929 |
} |
|
| 930 |
], |
|
| 931 |
"source": [ |
|
| 932 |
"plug.unload()" |
|
| 933 |
] |
|
| 934 |
}, |
|
| 935 |
{
|
|
| 936 |
"cell_type": "markdown", |
|
| 937 |
"metadata": {},
|
|
| 938 |
"source": [ |
|
| 939 |
"after doing the above, as well; otherwise a bit of memory is wasted.)" |
|
| 940 |
] |
|
| 941 |
}, |
|
| 942 |
{
|
|
| 943 |
"cell_type": "markdown", |
|
| 944 |
"metadata": {},
|
|
| 945 |
"source": [ |
|
| 787 | 946 |
"### Exporting the result to a CSV file\n", |
| 788 | 947 |
"This is a pretty standard use of Python's `csv` module." |
| 789 | 948 |
] |
| 790 | 949 |
}, |
| 791 | 950 |
{
|
| 792 | 951 |
"cell_type": "code", |
| 793 |
"execution_count": 15,
|
|
| 952 |
"execution_count": 18,
|
|
| 794 | 953 |
"metadata": {
|
| 795 | 954 |
"collapsed": true |
| 796 | 955 |
}, |
| ... | ... | |
| 822 | 981 |
}, |
| 823 | 982 |
{
|
| 824 | 983 |
"cell_type": "code", |
| 825 |
"execution_count": 16,
|
|
| 984 |
"execution_count": 19,
|
|
| 826 | 985 |
"metadata": {
|
| 827 | 986 |
"collapsed": true |
| 828 | 987 |
}, |
| ... | ... | |
| 846 | 1005 |
}, |
| 847 | 1006 |
{
|
| 848 | 1007 |
"cell_type": "code", |
| 849 |
"execution_count": 17,
|
|
| 1008 |
"execution_count": 20,
|
|
| 850 | 1009 |
"metadata": {
|
| 851 |
"collapsed": true
|
|
| 1010 |
"collapsed": false
|
|
| 852 | 1011 |
}, |
| 853 | 1012 |
"outputs": [ |
| 854 | 1013 |
{
|
| Vamp.v3.ipynb | ||
|---|---|---|
| 38 | 38 |
"source": [ |
| 39 | 39 |
"### Setup\n", |
| 40 | 40 |
"\n", |
| 41 |
"First import some necessary modules.\n", |
|
| 41 |
"First we import some necessary modules.\n",
|
|
| 42 | 42 |
"\n", |
| 43 | 43 |
"The `vamp` module loads and runs Vamp plugins. `librosa` is an audio analysis module from LabROSA at Columbia University. We are using it here only to load audio files, though it can also carry out some analysis functions. `matplotlib` is the usual plotting library." |
| 44 | 44 |
] |
| 45 | 45 |
}, |
| 46 | 46 |
{
|
| 47 | 47 |
"cell_type": "code", |
| 48 |
"collapsed": true,
|
|
| 48 |
"collapsed": false,
|
|
| 49 | 49 |
"input": [ |
| 50 | 50 |
"import vamp\n", |
| 51 | 51 |
"import librosa\n", |
| 52 |
"import matplotlib.pyplot as plt" |
|
| 52 |
"import matplotlib.pyplot as plt\n", |
|
| 53 |
"%matplotlib inline" |
|
| 53 | 54 |
], |
| 54 | 55 |
"language": "python", |
| 55 | 56 |
"metadata": {},
|
| ... | ... | |
| 69 | 70 |
"cell_type": "markdown", |
| 70 | 71 |
"metadata": {},
|
| 71 | 72 |
"source": [ |
| 72 |
"This bit of magic ensures that plots show up in the notebook rather than in a separate window:" |
|
| 73 |
] |
|
| 74 |
}, |
|
| 75 |
{
|
|
| 76 |
"cell_type": "code", |
|
| 77 |
"collapsed": true, |
|
| 78 |
"input": [ |
|
| 79 |
"%matplotlib inline" |
|
| 80 |
], |
|
| 81 |
"language": "python", |
|
| 82 |
"metadata": {},
|
|
| 83 |
"outputs": [], |
|
| 84 |
"prompt_number": 2 |
|
| 85 |
}, |
|
| 86 |
{
|
|
| 87 |
"cell_type": "markdown", |
|
| 88 |
"metadata": {},
|
|
| 89 |
"source": [ |
|
| 90 | 73 |
"### Getting started with the Vamp module\n", |
| 91 | 74 |
"\n", |
| 92 | 75 |
"List the plugins that are installed. The strings that are returned here are referred to in the module documentation as _plugin keys_ -- each one consists of the name of the library file that contains the plugin, then a colon, then the identifier for the plugin itself. So a set of plugins with the same text before the colon (such as `qm-vamp-plugins:`) were all distributed in the same plugin library file.\n", |
| ... | ... | |
| 96 | 79 |
}, |
| 97 | 80 |
{
|
| 98 | 81 |
"cell_type": "code", |
| 99 |
"collapsed": true,
|
|
| 82 |
"collapsed": false,
|
|
| 100 | 83 |
"input": [ |
| 101 | 84 |
"vamp.list_plugins()" |
| 102 | 85 |
], |
| ... | ... | |
| 106 | 89 |
{
|
| 107 | 90 |
"metadata": {},
|
| 108 | 91 |
"output_type": "pyout", |
| 109 |
"prompt_number": 3,
|
|
| 92 |
"prompt_number": 2,
|
|
| 110 | 93 |
"text": [ |
| 111 | 94 |
"['bbc-vamp-plugins:bbc-energy',\n", |
| 112 | 95 |
" 'bbc-vamp-plugins:bbc-intensity',\n", |
| ... | ... | |
| 207 | 190 |
] |
| 208 | 191 |
} |
| 209 | 192 |
], |
| 210 |
"prompt_number": 3
|
|
| 193 |
"prompt_number": 2
|
|
| 211 | 194 |
}, |
| 212 | 195 |
{
|
| 213 | 196 |
"cell_type": "markdown", |
| ... | ... | |
| 225 | 208 |
"language": "python", |
| 226 | 209 |
"metadata": {},
|
| 227 | 210 |
"outputs": [], |
| 228 |
"prompt_number": 4
|
|
| 211 |
"prompt_number": 3
|
|
| 229 | 212 |
}, |
| 230 | 213 |
{
|
| 231 | 214 |
"cell_type": "markdown", |
| ... | ... | |
| 243 | 226 |
"language": "python", |
| 244 | 227 |
"metadata": {},
|
| 245 | 228 |
"outputs": [], |
| 246 |
"prompt_number": 5
|
|
| 229 |
"prompt_number": 4
|
|
| 247 | 230 |
}, |
| 248 | 231 |
{
|
| 249 | 232 |
"cell_type": "markdown", |
| ... | ... | |
| 263 | 246 |
"language": "python", |
| 264 | 247 |
"metadata": {},
|
| 265 | 248 |
"outputs": [], |
| 266 |
"prompt_number": 6
|
|
| 249 |
"prompt_number": 5
|
|
| 267 | 250 |
}, |
| 268 | 251 |
{
|
| 269 | 252 |
"cell_type": "markdown", |
| ... | ... | |
| 274 | 257 |
}, |
| 275 | 258 |
{
|
| 276 | 259 |
"cell_type": "code", |
| 277 |
"collapsed": true,
|
|
| 260 |
"collapsed": false,
|
|
| 278 | 261 |
"input": [ |
| 279 | 262 |
"rate" |
| 280 | 263 |
], |
| ... | ... | |
| 284 | 267 |
{
|
| 285 | 268 |
"metadata": {},
|
| 286 | 269 |
"output_type": "pyout", |
| 287 |
"prompt_number": 7,
|
|
| 270 |
"prompt_number": 6,
|
|
| 288 | 271 |
"text": [ |
| 289 | 272 |
"22050" |
| 290 | 273 |
] |
| 291 | 274 |
} |
| 292 | 275 |
], |
| 293 |
"prompt_number": 7
|
|
| 276 |
"prompt_number": 6
|
|
| 294 | 277 |
}, |
| 295 | 278 |
{
|
| 296 | 279 |
"cell_type": "markdown", |
| ... | ... | |
| 313 | 296 |
"language": "python", |
| 314 | 297 |
"metadata": {},
|
| 315 | 298 |
"outputs": [], |
| 316 |
"prompt_number": 8
|
|
| 299 |
"prompt_number": 7
|
|
| 317 | 300 |
}, |
| 318 | 301 |
{
|
| 319 | 302 |
"cell_type": "markdown", |
| ... | ... | |
| 324 | 307 |
}, |
| 325 | 308 |
{
|
| 326 | 309 |
"cell_type": "code", |
| 327 |
"collapsed": true,
|
|
| 310 |
"collapsed": false,
|
|
| 328 | 311 |
"input": [ |
| 329 | 312 |
"out" |
| 330 | 313 |
], |
| ... | ... | |
| 334 | 317 |
{
|
| 335 | 318 |
"metadata": {},
|
| 336 | 319 |
"output_type": "pyout", |
| 337 |
"prompt_number": 9,
|
|
| 320 |
"prompt_number": 8,
|
|
| 338 | 321 |
"text": [ |
| 339 | 322 |
"{'matrix': ( 0.092879819,\n",
|
| 340 | 323 |
" array([[ 0.00000000e+00, 3.95574346e-02, 1.29732716e-05,\n", |
| ... | ... | |
| 664 | 647 |
] |
| 665 | 648 |
} |
| 666 | 649 |
], |
| 667 |
"prompt_number": 9
|
|
| 650 |
"prompt_number": 8
|
|
| 668 | 651 |
}, |
| 669 | 652 |
{
|
| 670 | 653 |
"cell_type": "markdown", |
| ... | ... | |
| 684 | 667 |
"language": "python", |
| 685 | 668 |
"metadata": {},
|
| 686 | 669 |
"outputs": [], |
| 687 |
"prompt_number": 10
|
|
| 670 |
"prompt_number": 9
|
|
| 688 | 671 |
}, |
| 689 | 672 |
{
|
| 690 | 673 |
"cell_type": "code", |
| 691 |
"collapsed": true,
|
|
| 674 |
"collapsed": false,
|
|
| 692 | 675 |
"input": [ |
| 693 | 676 |
"step" |
| 694 | 677 |
], |
| ... | ... | |
| 698 | 681 |
{
|
| 699 | 682 |
"metadata": {},
|
| 700 | 683 |
"output_type": "pyout", |
| 701 |
"prompt_number": 11,
|
|
| 684 |
"prompt_number": 10,
|
|
| 702 | 685 |
"text": [ |
| 703 | 686 |
" 0.092879819" |
| 704 | 687 |
] |
| 705 | 688 |
} |
| 706 | 689 |
], |
| 707 |
"prompt_number": 11
|
|
| 690 |
"prompt_number": 10
|
|
| 708 | 691 |
}, |
| 709 | 692 |
{
|
| 710 | 693 |
"cell_type": "markdown", |
| ... | ... | |
| 715 | 698 |
}, |
| 716 | 699 |
{
|
| 717 | 700 |
"cell_type": "code", |
| 718 |
"collapsed": true,
|
|
| 701 |
"collapsed": false,
|
|
| 719 | 702 |
"input": [ |
| 720 | 703 |
"float(step) * rate" |
| 721 | 704 |
], |
| ... | ... | |
| 725 | 708 |
{
|
| 726 | 709 |
"metadata": {},
|
| 727 | 710 |
"output_type": "pyout", |
| 728 |
"prompt_number": 12,
|
|
| 711 |
"prompt_number": 11,
|
|
| 729 | 712 |
"text": [ |
| 730 | 713 |
"2048.00000895" |
| 731 | 714 |
] |
| 732 | 715 |
} |
| 733 | 716 |
], |
| 734 |
"prompt_number": 12
|
|
| 717 |
"prompt_number": 11
|
|
| 735 | 718 |
}, |
| 736 | 719 |
{
|
| 737 | 720 |
"cell_type": "code", |
| 738 |
"collapsed": true,
|
|
| 721 |
"collapsed": false,
|
|
| 739 | 722 |
"input": [ |
| 740 | 723 |
"vamp.vampyhost.RealTime.to_frame(step, rate)" |
| 741 | 724 |
], |
| ... | ... | |
| 745 | 728 |
{
|
| 746 | 729 |
"metadata": {},
|
| 747 | 730 |
"output_type": "pyout", |
| 748 |
"prompt_number": 13,
|
|
| 731 |
"prompt_number": 12,
|
|
| 749 | 732 |
"text": [ |
| 750 | 733 |
"2048" |
| 751 | 734 |
] |
| 752 | 735 |
} |
| 753 | 736 |
], |
| 754 |
"prompt_number": 13
|
|
| 737 |
"prompt_number": 12
|
|
| 755 | 738 |
}, |
| 756 | 739 |
{
|
| 757 | 740 |
"cell_type": "markdown", |
| ... | ... | |
| 762 | 745 |
}, |
| 763 | 746 |
{
|
| 764 | 747 |
"cell_type": "code", |
| 765 |
"collapsed": true,
|
|
| 748 |
"collapsed": false,
|
|
| 766 | 749 |
"input": [ |
| 767 | 750 |
"plt.imshow(chroma.transpose(), origin=\"lower\")" |
| 768 | 751 |
], |
| ... | ... | |
| 772 | 755 |
{
|
| 773 | 756 |
"metadata": {},
|
| 774 | 757 |
"output_type": "pyout", |
| 775 |
"prompt_number": 14,
|
|
| 758 |
"prompt_number": 13,
|
|
| 776 | 759 |
"text": [ |
| 777 |
"<matplotlib.image.AxesImage at 0x7fb0c6a80710>"
|
|
| 760 |
"<matplotlib.image.AxesImage at 0x7fc227986710>"
|
|
| 778 | 761 |
] |
| 779 | 762 |
}, |
| 780 | 763 |
{
|
| ... | ... | |
| 782 | 765 |
"output_type": "display_data", |
| 783 | 766 |
"png": "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\nYII=\n", |
| 784 | 767 |
"text": [ |
| 785 |
"<matplotlib.figure.Figure at 0x7fb0c6d57cd0>"
|
|
| 768 |
"<matplotlib.figure.Figure at 0x7fc227c5acd0>"
|
|
| 786 | 769 |
] |
| 787 | 770 |
} |
| 788 | 771 |
], |
| 772 |
"prompt_number": 13 |
|
| 773 |
}, |
|
| 774 |
{
|
|
| 775 |
"cell_type": "markdown", |
|
| 776 |
"metadata": {},
|
|
| 777 |
"source": [ |
|
| 778 |
"### How did we know which parameters were available?\n", |
|
| 779 |
"A bit further back, we set up some plugin parameters in a Python dictionary:" |
|
| 780 |
] |
|
| 781 |
}, |
|
| 782 |
{
|
|
| 783 |
"cell_type": "code", |
|
| 784 |
"collapsed": true, |
|
| 785 |
"input": [ |
|
| 786 |
"plugin_params = { \"tuningmode\": 1, \"s\": 0.9, \"chromanormalize\": 3 }"
|
|
| 787 |
], |
|
| 788 |
"language": "python", |
|
| 789 |
"metadata": {},
|
|
| 790 |
"outputs": [], |
|
| 789 | 791 |
"prompt_number": 14 |
| 790 | 792 |
}, |
| 791 | 793 |
{
|
| 792 | 794 |
"cell_type": "markdown", |
| 793 | 795 |
"metadata": {},
|
| 794 | 796 |
"source": [ |
| 797 |
"We also included `output = chroma` in the `vamp.collect` call to make sure we got the right output from the plugin. How did we know which parameters and outputs were available?\n", |
|
| 798 |
"\n", |
|
| 799 |
"Outputs are pretty simple, there's a `vamp.get_outputs_of` call that returns them directly." |
|
| 800 |
] |
|
| 801 |
}, |
|
| 802 |
{
|
|
| 803 |
"cell_type": "code", |
|
| 804 |
"collapsed": false, |
|
| 805 |
"input": [ |
|
| 806 |
"vamp.get_outputs_of(\"nnls-chroma:nnls-chroma\")" |
|
| 807 |
], |
|
| 808 |
"language": "python", |
|
| 809 |
"metadata": {},
|
|
| 810 |
"outputs": [ |
|
| 811 |
{
|
|
| 812 |
"metadata": {},
|
|
| 813 |
"output_type": "pyout", |
|
| 814 |
"prompt_number": 15, |
|
| 815 |
"text": [ |
|
| 816 |
"['logfreqspec',\n", |
|
| 817 |
" 'tunedlogfreqspec',\n", |
|
| 818 |
" 'semitonespectrum',\n", |
|
| 819 |
" 'chroma',\n", |
|
| 820 |
" 'basschroma',\n", |
|
| 821 |
" 'bothchroma']" |
|
| 822 |
] |
|
| 823 |
} |
|
| 824 |
], |
|
| 825 |
"prompt_number": 15 |
|
| 826 |
}, |
|
| 827 |
{
|
|
| 828 |
"cell_type": "markdown", |
|
| 829 |
"metadata": {},
|
|
| 830 |
"source": [ |
|
| 831 |
"Querying details of a plugin's parameters is a bit more tricky with the current version of the module. You have to use a lower-level interface for this. It looks like the following." |
|
| 832 |
] |
|
| 833 |
}, |
|
| 834 |
{
|
|
| 835 |
"cell_type": "code", |
|
| 836 |
"collapsed": false, |
|
| 837 |
"input": [ |
|
| 838 |
"plug = vamp.vampyhost.load_plugin(\"nnls-chroma:nnls-chroma\", 44100, vamp.vampyhost.ADAPT_NONE)\n", |
|
| 839 |
"plug.parameters" |
|
| 840 |
], |
|
| 841 |
"language": "python", |
|
| 842 |
"metadata": {},
|
|
| 843 |
"outputs": [ |
|
| 844 |
{
|
|
| 845 |
"metadata": {},
|
|
| 846 |
"output_type": "pyout", |
|
| 847 |
"prompt_number": 16, |
|
| 848 |
"text": [ |
|
| 849 |
"[{'defaultValue': 1.0,\n",
|
|
| 850 |
" 'description': 'Toggles approximate transcription (NNLS).',\n", |
|
| 851 |
" 'identifier': 'useNNLS',\n", |
|
| 852 |
" 'isQuantized': True,\n", |
|
| 853 |
" 'maxValue': 1.0,\n", |
|
| 854 |
" 'minValue': 0.0,\n", |
|
| 855 |
" 'name': 'use approximate transcription (NNLS)',\n", |
|
| 856 |
" 'quantizeStep': 1.0,\n", |
|
| 857 |
" 'unit': ''},\n", |
|
| 858 |
" {'defaultValue': 0.0,\n",
|
|
| 859 |
" 'description': 'Consider the cumulative energy spectrum (from low to high frequencies). All bins below the first bin whose cumulative energy exceeds the quantile [bass noise threshold] x [total energy] will be set to 0. A threshold value of 0 means that no bins will be changed.',\n", |
|
| 860 |
" 'identifier': 'rollon',\n", |
|
| 861 |
" 'isQuantized': True,\n", |
|
| 862 |
" 'maxValue': 5.0,\n", |
|
| 863 |
" 'minValue': 0.0,\n", |
|
| 864 |
" 'name': 'bass noise threshold',\n", |
|
| 865 |
" 'quantizeStep': 0.5,\n", |
|
| 866 |
" 'unit': '%'},\n", |
|
| 867 |
" {'defaultValue': 0.0,\n",
|
|
| 868 |
" 'description': 'Tuning can be performed locally or on the whole extraction segment. Local tuning is only advisable when the tuning is likely to change over the audio, for example in podcasts, or in a cappella singing.',\n", |
|
| 869 |
" 'identifier': 'tuningmode',\n", |
|
| 870 |
" 'isQuantized': True,\n", |
|
| 871 |
" 'maxValue': 1.0,\n", |
|
| 872 |
" 'minValue': 0.0,\n", |
|
| 873 |
" 'name': 'tuning mode',\n", |
|
| 874 |
" 'quantizeStep': 1.0,\n", |
|
| 875 |
" 'unit': '',\n", |
|
| 876 |
" 'valueNames': ['global tuning', 'local tuning']},\n", |
|
| 877 |
" {'defaultValue': 1.0,\n",
|
|
| 878 |
" 'description': 'Spectral whitening: no whitening - 0; whitening - 1.',\n", |
|
| 879 |
" 'identifier': 'whitening',\n", |
|
| 880 |
" 'isQuantized': False,\n", |
|
| 881 |
" 'maxValue': 1.0,\n", |
|
| 882 |
" 'minValue': 0.0,\n", |
|
| 883 |
" 'name': 'spectral whitening',\n", |
|
| 884 |
" 'unit': ''},\n", |
|
| 885 |
" {'defaultValue': 0.699999988079071,\n",
|
|
| 886 |
" 'description': 'Determines how individual notes in the note dictionary look: higher values mean more dominant higher harmonics.',\n", |
|
| 887 |
" 'identifier': 's',\n", |
|
| 888 |
" 'isQuantized': False,\n", |
|
| 889 |
" 'maxValue': 0.8999999761581421,\n", |
|
| 890 |
" 'minValue': 0.5,\n", |
|
| 891 |
" 'name': 'spectral shape',\n", |
|
| 892 |
" 'unit': ''},\n", |
|
| 893 |
" {'defaultValue': 0.0,\n",
|
|
| 894 |
" 'description': 'How shall the chroma vector be normalized?',\n", |
|
| 895 |
" 'identifier': 'chromanormalize',\n", |
|
| 896 |
" 'isQuantized': True,\n", |
|
| 897 |
" 'maxValue': 3.0,\n", |
|
| 898 |
" 'minValue': 0.0,\n", |
|
| 899 |
" 'name': 'chroma normalization',\n", |
|
| 900 |
" 'quantizeStep': 1.0,\n", |
|
| 901 |
" 'unit': '',\n", |
|
| 902 |
" 'valueNames': ['none', 'maximum norm', 'L1 norm', 'L2 norm']}]" |
|
| 903 |
] |
|
| 904 |
} |
|
| 905 |
], |
|
| 906 |
"prompt_number": 16 |
|
| 907 |
}, |
|
| 908 |
{
|
|
| 909 |
"cell_type": "markdown", |
|
| 910 |
"metadata": {},
|
|
| 911 |
"source": [ |
|
| 912 |
"From this we can work out that (for example) to set the chroma vector normalisation to \"L2 norm\" we should supply something like `parameters = { \"chromanormalize\" : 3 }` in the call to `vamp.collect`.\n",
|
|
| 913 |
"\n", |
|
| 914 |
"(Strictly speaking we're supposed to call" |
|
| 915 |
] |
|
| 916 |
}, |
|
| 917 |
{
|
|
| 918 |
"cell_type": "code", |
|
| 919 |
"collapsed": false, |
|
| 920 |
"input": [ |
|
| 921 |
"plug.unload()" |
|
| 922 |
], |
|
| 923 |
"language": "python", |
|
| 924 |
"metadata": {},
|
|
| 925 |
"outputs": [ |
|
| 926 |
{
|
|
| 927 |
"metadata": {},
|
|
| 928 |
"output_type": "pyout", |
|
| 929 |
"prompt_number": 17, |
|
| 930 |
"text": [ |
|
| 931 |
"True" |
|
| 932 |
] |
|
| 933 |
} |
|
| 934 |
], |
|
| 935 |
"prompt_number": 17 |
|
| 936 |
}, |
|
| 937 |
{
|
|
| 938 |
"cell_type": "markdown", |
|
| 939 |
"metadata": {},
|
|
| 940 |
"source": [ |
|
| 941 |
"after doing the above, as well; otherwise a bit of memory is wasted.)" |
|
| 942 |
] |
|
| 943 |
}, |
|
| 944 |
{
|
|
| 945 |
"cell_type": "markdown", |
|
| 946 |
"metadata": {},
|
|
| 947 |
"source": [ |
|
| 795 | 948 |
"### Exporting the result to a CSV file\n", |
| 796 | 949 |
"This is a pretty standard use of Python's `csv` module." |
| 797 | 950 |
] |
| ... | ... | |
| 809 | 962 |
"language": "python", |
| 810 | 963 |
"metadata": {},
|
| 811 | 964 |
"outputs": [], |
| 812 |
"prompt_number": 15
|
|
| 965 |
"prompt_number": 18
|
|
| 813 | 966 |
}, |
| 814 | 967 |
{
|
| 815 | 968 |
"cell_type": "markdown", |
| ... | ... | |
| 850 | 1003 |
"language": "python", |
| 851 | 1004 |
"metadata": {},
|
| 852 | 1005 |
"outputs": [], |
| 853 |
"prompt_number": 16
|
|
| 1006 |
"prompt_number": 19
|
|
| 854 | 1007 |
}, |
| 855 | 1008 |
{
|
| 856 | 1009 |
"cell_type": "code", |
| 857 |
"collapsed": true,
|
|
| 1010 |
"collapsed": false,
|
|
| 858 | 1011 |
"input": [ |
| 859 | 1012 |
"for file in glob.glob(\"data/Music/*.flac\"):\n", |
| 860 | 1013 |
" extract_chroma(file)" |
| ... | ... | |
| 870 | 1023 |
] |
| 871 | 1024 |
} |
| 872 | 1025 |
], |
| 873 |
"prompt_number": 17
|
|
| 1026 |
"prompt_number": 20
|
|
| 874 | 1027 |
}, |
| 875 | 1028 |
{
|
| 876 | 1029 |
"cell_type": "markdown", |
Also available in: Unified diff