Skip to content

Instantly share code, notes, and snippets.

@dkohlsdorf
Last active June 23, 2020 09:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dkohlsdorf/4361033b6d93883ffbbfeb67efd77485 to your computer and use it in GitHub Desktop.
Save dkohlsdorf/4361033b6d93883ffbbfeb67efd77485 to your computer and use it in GitHub Desktop.
Fixing AIFF File in python
Display the source blob
Display the rendered blob
Raw
{
"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