Last active
June 23, 2020 09:18
-
-
Save dkohlsdorf/4361033b6d93883ffbbfeb67efd77485 to your computer and use it in GitHub Desktop.
Fixing AIFF File in python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 95, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import matplotlib.pyplot as plt\n", | |
"import os\n", | |
"import struct\n", | |
"import matplotlib.pyplot as plt" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Fixing Fixing Aiff Files\n", | |
"\n", | |
"The file definition can be found here: https://www2.ak.tu-berlin.de/~fhein/Alias/Studio/ProTools/audio-formate/aiff/overview.html\n", | |
"\n", | |
"0. I opend a regular audio file in audacity\n", | |
"1. I changed the project to the desired sample rate: `44100 Hz` \n", | |
"2. I changed the encoding to the desired sample width: `16 bit`\n", | |
"3. I saved the file as an AIFF file.\n", | |
"4. I then opened the file in a hex editor and copied the header" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 99, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"preamble = \"464F524D\"\n", | |
"header = \"41494646434F4D4D0000001200010000DE840010400EAC4400000000000053534E44\"\n", | |
"end = \"0000000000000000\"\n", | |
"bheader = bytearray.fromhex(header)\n", | |
"bpre = bytearray.fromhex(preamble)\n", | |
"bend = bytearray.fromhex(end)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Fixing the files\n", | |
"\n", | |
"I read all the files, copy the content and attach the header in the front" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 113, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"signature_whistles/fixed/HAVANA_07049201-3755b.aiff: 5.05625850340136\n", | |
"signature_whistles/fixed/HAVANA_06179101-5447b.aiff: 2.7950340136054423\n", | |
"signature_whistles/fixed/HAVANA_05109302-4642b.aiff: 4.653628117913832\n", | |
"signature_whistles/fixed/HAVANA_05109302-4418b.aiff: 4.653628117913832\n", | |
"signature_whistles/fixed/HAVANA_05049501-3319b.aiff: 2.7941269841269842\n", | |
"signature_whistles/fixed/HAVANA_07049201-3741b.aiff: 3.7238321995464854\n", | |
"signature_whistles/fixed/HAVANA_05259301-649b.aiff: 4.6525850340136055\n", | |
"signature_whistles/fixed/HAVANA_05109302-4448b.aiff: 4.653764172335601\n", | |
"signature_whistles/fixed/HAVANA_08199202-424b.aiff: 2.7952607709750565\n", | |
"signature_whistles/fixed/LUNA_07079103-127d.aiff: 2.7949886621315194\n", | |
"signature_whistles/fixed/LUNA_08219502-5716d.aiff: 4.17907029478458\n", | |
"signature_whistles/fixed/LUNA_9139202-4548d.aiff: 2.7950340136054423\n", | |
"signature_whistles/fixed/LUNA_08219502-11426d.aiff: 4.17907029478458\n", | |
"signature_whistles/fixed/LUNA_5119001-10540d.aiff: 2.7950793650793653\n", | |
"signature_whistles/fixed/LUNA_9069001-4711d.aiff: 2.7950793650793653\n", | |
"signature_whistles/fixed/LUNA_8179202-2101d.aiff: 2.9808390022675737\n", | |
"signature_whistles/fixed/LUNA_06039301-1000d.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/LUNA_7269203-1606d.aiff: 2.7954421768707483\n", | |
"signature_whistles/fixed/LUNA_08179301-4340d.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/LUNA_9199202-2356d.aiff: 5.1525396825396825\n", | |
"signature_whistles/fixed/LUNA_06179101-11002d.aiff: 2.7950340136054423\n", | |
"signature_whistles/fixed/LUNA_5119001-10530d.aiff: 2.7953061224489795\n", | |
"signature_whistles/fixed/LUNA_06039301-0939d.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/LUNA_06149404-11120d.aiff: 3.2502721088435376\n", | |
"signature_whistles/fixed/LUNA_9139202-4425d.aiff: 2.79562358276644\n", | |
"signature_whistles/fixed/LUNA_08179301-4600d.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/LUNA_06149404-11045d.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/LUNA_06149404-11100d.aiff: 3.2502721088435376\n", | |
"signature_whistles/fixed/LUNA_06309301-5800d.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/LUNA_09069001-4600d.aiff: 9.287460317460317\n", | |
"signature_whistles/fixed/LUNA_09109003-0401d.aiff: 7.438798185941043\n", | |
"signature_whistles/fixed/LUNA_06149404-11055d.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/LUNA_05259301-0406d.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/LUNA_7099201-10531d.aiff: 2.7949886621315194\n", | |
"signature_whistles/fixed/LUNA_9199202-1518d.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/LUNA_05259301-1309d.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/LUNA_06309301-5800Bd.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/LATITUDE_5079301-1508c.aiff: 0.9385714285714286\n", | |
"signature_whistles/fixed/LATITUDE_5099303-1822c.aiff: 4.653628117913832\n", | |
"signature_whistles/fixed/LATITUDE_5149303-2751c.aiff: 4.653628117913832\n", | |
"signature_whistles/fixed/LATITUDE_07279101-1110c.aiff: 2.7950793650793653\n", | |
"signature_whistles/fixed/LATITUDE_8179202-1930c.aiff: 2.98156462585034\n", | |
"signature_whistles/fixed/LATITUDE_8029201-819c.aiff: 2.7950340136054423\n", | |
"signature_whistles/fixed/LATITUDE_7109201-1153c.aiff: 2.7957596371882087\n", | |
"signature_whistles/fixed/LATITUDE_5259301-3040c.aiff: 5.96047619047619\n", | |
"signature_whistles/fixed/LATITUDE_9199202-1924c.aiff: 3.723922902494331\n", | |
"signature_whistles/fixed/LATITUDE_08179301-4210c.aiff: 4.643469387755102\n", | |
"signature_whistles/fixed/LATITUDE_5259301-4032c.aiff: 2.7961224489795917\n", | |
"signature_whistles/fixed/LATITUDE_3099303-3850c.aiff: 4.653673469387755\n", | |
"signature_whistles/fixed/LATITUDE_05279301-10759c.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/LATITUDE_07279101-1030c.aiff: 2.7950793650793653\n", | |
"signature_whistles/fixed/LATITUDE_8019201-5224c.aiff: 2.7949886621315194\n", | |
"signature_whistles/fixed/LATITUDE_07279101-400c.aiff: 2.7950340136054423\n", | |
"signature_whistles/fixed/LATITUDE_5079301-1511c.aiff: 4.653718820861678\n", | |
"signature_whistles/fixed/LATITUDE_5259301-3030c.aiff: 5.984331065759637\n", | |
"signature_whistles/fixed/LATITUDE_9199202-2010c.aiff: 3.7241043083900225\n", | |
"signature_whistles/fixed/MEL_05099303-3002e.aiff: 5.915986394557823\n", | |
"signature_whistles/fixed/MEL_05109302-5012e.aiff: 5.970997732426304\n", | |
"signature_whistles/fixed/MEL_05099303-3800e.aiff: 5.980521541950114\n", | |
"signature_whistles/fixed/MEL_05099303-3124e.aiff: 4.653628117913832\n", | |
"signature_whistles/fixed/MEL_05109302-5025e.aiff: 4.653673469387755\n", | |
"signature_whistles/fixed/MEL_05099303-3456e.aiff: 4.653582766439909\n", | |
"signature_whistles/fixed/MEL_05099303-3441e.aiff: 4.653673469387755\n", | |
"signature_whistles/fixed/MEL_07109202-2104e.aiff: 2.7957596371882087\n", | |
"signature_whistles/fixed/Nippy_07069101-1250g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1315g.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/Nippy_06139001-0023g.aiff: 9.287460317460317\n", | |
"signature_whistles/fixed/Nippy_05279001-2840g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nippy_08309301-125g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1420g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1400g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1124g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nippy_07069101-1415g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1310g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_05159301-5634g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07159302-3850g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nippy_07279105-620g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nippy_07069101-1430g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1130g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nippy_07069101-1425g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1540g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07149303-120g.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/Nippy_07069101-1500g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_06139001-308g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nippy_07069101-1520g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07159302-2404g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1415g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1100g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nippy_07069101-1300g.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nippy_07069101-1117g.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Caroh_08309301-1300a.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Caroh_07119301-0609a.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Caroh_06259301-4200a.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/Caroh_06259301-4400a.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Caroh_06229601-734acopy.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/Caroh_08309301-1310a.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Caroh_07159302-2715a.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Caroh_08309301-12930a.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Caroh_07159302-2740a.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Caroh_06229601-734a.aiff: 3.714671201814059\n", | |
"signature_whistles/fixed/Caroh_07119301-0621a.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/Caroh_07159302-2900a.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Caroh_06259301-4500a.aiff: 1.3926757369614513\n", | |
"signature_whistles/fixed/Caroh_07149303-112a.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_08189101-4620f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_07149302-115f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07069101-1138f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07149302-111bf.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/Nassau_09149001-2156f.aiff: 7.429863945578231\n", | |
"signature_whistles/fixed/Nassau_06219002-10006f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_07149302-113bf.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_06219207-1527f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_05049501-1350f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_06219201-1052f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_07069101-1026f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07069101-1030f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_06159001-2600f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_07149302-114f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07149302-109f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07149302-113f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07149302-110bf.aiff: 1.3926757369614513\n", | |
"signature_whistles/fixed/Nassau_05299201-5758f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_09149001-3117f.aiff: 7.429863945578231\n", | |
"signature_whistles/fixed/Nassau_07069101-1144f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07149302-112f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_07149302-108f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_08189101-4608f.aiff: 0.9282766439909297\n", | |
"signature_whistles/fixed/Nassau_07149302-111f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07149302-110f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07069101-331f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_05299201-5413f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_07159302-3320f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_09159001-3120f.aiff: 2.785873015873016\n", | |
"signature_whistles/fixed/Nassau_06219201-1441f.aiff: 1.8570748299319728\n", | |
"signature_whistles/fixed/Nassau_07159302-3300f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07069101-1048f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07069101-317f.aiff: 2.3214739229024945\n", | |
"signature_whistles/fixed/Nassau_07069101-1140f.aiff: 3.2502721088435376\n" | |
] | |
} | |
], | |
"source": [ | |
"labels = ['HAVANA', 'LUNA', 'LATITUDE', 'MEL', 'Nippy', 'Caroh', 'Nassau']\n", | |
"\n", | |
"def find_label(folder):\n", | |
" for label in labels:\n", | |
" if label in folder:\n", | |
" return label\n", | |
" return None\n", | |
"\n", | |
"for folder in os.listdir('signature_whistles'):\n", | |
" f = find_label(folder)\n", | |
" if f is not None:\n", | |
" for file in os.listdir('signature_whistles/{}'.format(folder)):\n", | |
" if file.endswith('.aif'):\n", | |
" key = file.replace('.aif', '').replace(' ','').strip()\n", | |
" output = \"signature_whistles/fixed/{}_{}.aiff\".format(f, key)\n", | |
" data = open('signature_whistles/{}/{}'.format(folder, file), \"rb\").read() \n", | |
" n = len(data) \n", | |
" n1 = n - len(bpre)\n", | |
" n2 = n - len(bheader) - len(bpre)\n", | |
" n3 = n - len(bheader) - len(bpre) - len(bend)\n", | |
" \n", | |
" w = open(output, 'wb')\n", | |
" print(\"{}: {}\".format(output, n3 / 2 / 44100))\n", | |
" \n", | |
" w.write(bpre)\n", | |
" w.write(n1.to_bytes(4, 'big'))\n", | |
" w.write(bheader)\n", | |
" w.write(n2.to_bytes(4, 'big'))\n", | |
" w.write(bend)\n", | |
" w.write(data)\n", | |
" w.close()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": {}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.7.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment