GarageBand: Difference between revisions

From MultimediaWiki
Jump to navigation Jump to search
(Add to multimedia projects category.)
No edit summary
Line 1: Line 1:
Garageband is Apple's consumer multitrack editor.
Garageband is Apple's consumer multitrack editor.


Garageband files are actually directories with a .band extenstion.
Garageband files are actually directories with a ".band" extenstion.


= Structure of the ".band" directory =
== Old versions of GarageBand ==
The ".band" directory contained:
* projectData
* Media/  - a directory containing source aiffs.


Within the directory there is a projectData file and a Media directory containing source aiffs.
== Previous version (GarageBand v6? april 2014?) ==
The ".band" directory contained:
* projectData
* Contents/
** Contents/PkgInfo
* Media/
** Media/Images/
** Media/Recording/
* Output/
** Output/arrange_screenshot.tiff
** Output/metadata.plist
** Output/Output.aif
* Thumbs/


== Version 10.0.3 (oct. 2014) ==
The ".band" directory contains:
projectData
* Alternatives/
** Alternatives/000/
*** Alternatives/000/Autosave/
**** Alternatives/000/Autosave/.dummy
**** Alternatives/000/DisplayState.plist
**** Alternatives/000/MetaData.plist
*** Alternatives/000/Previews/
**** Alternatives/000/Previews/Output.aif
*** Alternatives/000/ProjectData
*** Alternatives/000/Undo Data.nosync/
*** Alternatives/000/WindowImage.jpg
* Contents/
** Contents/PkgInfo
* Media/
** Media/Audio Files/
** Media/Freeze Files.nosync/
* Output/
** Output/Output.aif
* Resources/
** Resources/ProjectInformation.plist


The projectData file is an xml file describing the project along with a large chunk of base64 encoded data within the <data> tags.
= Structure of the "projectData" file =
The "projectData" file is an xml file describing the project along with a large chunk of base64 encoded data within the <data> tags.


Once base64 decoded, this data tag still contains some binary data with human readable strings which can be fuond from the Terminal with a command like:
<nowiki>cat "foo.band/projectData" \
    | sed -n '/<data>/,/<\/data>/{//!p;}' \
    | base64 -D \
    | strings \
    | less
</nowiki>
These strings can be filtered out. For example, the following command gets (almost) only the names of the instruments used in the project:
<nowiki>cat "foo.band/projectData" \
    | sed -n '/<data>/,/<\/data>/{//!p;}' \
    | base64 -D \
    | strings \
    | awk ' /^ Inst 1$/{flag=1} /^ Inst 12$/{flag=0} flag { print }'
</nowiki>
= Samples =
Samples can be found here: [http://nin.com/access/only/]
Samples can be found here: [http://nin.com/access/only/]


[[Category:Multimedia Programs]]
[[Category:Multimedia Programs]]

Revision as of 02:54, 26 March 2015

Garageband is Apple's consumer multitrack editor.

Garageband files are actually directories with a ".band" extenstion.

Structure of the ".band" directory

Old versions of GarageBand

The ".band" directory contained:

  • projectData
  • Media/ - a directory containing source aiffs.

Previous version (GarageBand v6? april 2014?)

The ".band" directory contained:

  • projectData
  • Contents/
    • Contents/PkgInfo
  • Media/
    • Media/Images/
    • Media/Recording/
  • Output/
    • Output/arrange_screenshot.tiff
    • Output/metadata.plist
    • Output/Output.aif
  • Thumbs/

Version 10.0.3 (oct. 2014)

The ".band" directory contains: projectData

  • Alternatives/
    • Alternatives/000/
      • Alternatives/000/Autosave/
        • Alternatives/000/Autosave/.dummy
        • Alternatives/000/DisplayState.plist
        • Alternatives/000/MetaData.plist
      • Alternatives/000/Previews/
        • Alternatives/000/Previews/Output.aif
      • Alternatives/000/ProjectData
      • Alternatives/000/Undo Data.nosync/
      • Alternatives/000/WindowImage.jpg
  • Contents/
    • Contents/PkgInfo
  • Media/
    • Media/Audio Files/
    • Media/Freeze Files.nosync/
  • Output/
    • Output/Output.aif
  • Resources/
    • Resources/ProjectInformation.plist

Structure of the "projectData" file

The "projectData" file is an xml file describing the project along with a large chunk of base64 encoded data within the tags.

Once base64 decoded, this data tag still contains some binary data with human readable strings which can be fuond from the Terminal with a command like:

cat "foo.band/projectData"	\
    | sed -n '/<data>/,/<\/data>/{//!p;}'	\
    | base64 -D	\
    | strings	\
    | less

These strings can be filtered out. For example, the following command gets (almost) only the names of the instruments used in the project:

cat "foo.band/projectData"	\
    | sed -n '/<data>/,/<\/data>/{//!p;}'	\
    | base64 -D	\
    | strings	\
    | awk ' /^ Inst 1$/{flag=1} /^ Inst 12$/{flag=0} flag { print }'

Samples

Samples can be found here: [1]