It seems that on its 2016 MacBook Pro’s Apple has deactivated it’s famous startup sound / chime.
This cought my attention and I was interested to find out where this sound is stored (on older Mac’s). As I learned it is (or used to be at least) part of the Macs firmware. While so far I couldn’t find a way to extract the sound from an Intel / EFI based firmware, there seem to be ways to get the sound from PowerPC based Macs.
This is roughly how to do it:
- Get a firmware from a PowerPC Mac as these are based on OpenFirmware (not EFI) and thus easier to extract. For example this one from the Xserve G5 XServeFirmwareUpdate.dmg
- Open the downloaded DMG file
- Look for the file XServeFirmwareUpdate.pkg and show its package contents
- In the sub folder named Contents is the file: Archive.pax.gz
- Extract Archive.pax.gz (for ex. double click it in finder)
- In the extracted folder locate Applications\Utilities\Xserve Firmware-Updater and show its package contents
- locate the file Contents\Resources\BootROMFirmware
Well the BootROMFirmware contains the famous startup sound / chime.
The sound chime has a size of 0xE4B4 (58548) bytes and starts at offset 0xC881C (=821276). So we can just use dd in terminal to extract it:
dd if=~/Desktop/BootROMFirmware of=~/Desktop/start-chime.raw bs=1 skip=821276 count=58548
So now you have the extracted raw start-chime of 58,548 bytes file size. It is encoded using Apple’s version (IMA 4:1) of the IMA ADPCM compression format. To play it you would have to mux it into an AIFF file with correct header and chunk data (FORM, COMM, SSND,…) . You can use also ocenaudio to preview the sound (in messy quality).
If someone finds an easy way to play the raw file, just post a comment 🙂
You need these settings:
- Sample Bits: 16
- Channels: Mono
- Sample Rate: 44,100
- Compression: IMA 4:1
- Data Offset: 16 (Sun Audio / Next)
So far I couldn’t get a decent raw sound import on a more current application & platform.
There seems to be a pastebin of the startup sound raw file here.
Its base64 encoded so to decode:
openssl base64 -d -in paste.txt -out snd.raw