title: Editing tag data for .aiff files with Mutagen with errors "TypeError: not a Frame instance" and "ID3NoHeaderError: doesn't start with an ID3 tag"
body: <p>i'm trying to write tags to a tables .aif file using mutagen. so far not having much success...</p>
  
  <p>from the code in the mutagen documentation i try:</p>
  
  <pre><code>
  from mutagen.aiff import AIFF
  
  audio = AIFF(“example.aif”)
  audio["title"] = u"An example"
  audio.save()
  </code></pre>
  
  <p>this is base-level what i am trying to achieve, however i get the below:</p>
  
  <pre><code>
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/_file.py", line 75, in __setitem__
      self.tags[key] = value
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/id3/_tags.py", line 343, in __setitem__
      raise TypeError("%r not a Frame instance" % tag)
  TypeError: u'An example' not a Frame instance
  </code></pre>
  
  <p>can't get my head around frame instances, so i look for other ways to do this, such as the ID3 class as below:</p>
  
  <pre><code>
  
  from mutagen.id3 import ID3
  
      tags = ID3()
  
  tags.save("song.mp3")
  </code></pre>
  
  <p>returns no errors, however the .aif file returns corrupted. </p>
  
  <p>so i then look at loading the ID3 files from the .aif straight up - this fails because there are no ID3 tags in existence…</p>
  
  <pre><code>
  
  from mutagen.id3 import ID3, TIT2
  
      audio = ID3("example.aif”)
  
      audio.add(TIT2(encoding=3, text=u"An example"))
  
      audio.save()
  </code></pre>
  
  <blockquote>
    <blockquote>
      <blockquote>
        <p>audio = ID3("example.aif") gives:</p>
      </blockquote>
    </blockquote>
  </blockquote>
  
  <pre><code>
  Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/id3/_file.py", line 77, in __init__
      super(ID3, self).__init__(*args, **kwargs)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/id3/_tags.py", line 177, in __init__
      super(ID3Tags, self).__init__(*args, **kwargs)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/_util.py", line 533, in __init__
      super(DictProxy, self).__init__(*args, **kwargs)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/_tags.py", line 111, in __init__
      self.load(*args, **kwargs)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/_util.py", line 169, in wrapper
      return func(*args, **kwargs)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/_util.py", line 140, in wrapper
      return func(self, h, *args, **kwargs)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/id3/_file.py", line 154, in load
      self._header = ID3Header(fileobj)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/_util.py", line 169, in wrapper
      return func(*args, **kwargs)
    File "/Users/ef/anaconda2/lib/python2.7/site-packages/mutagen/id3/_tags.py", line 66, in __init__
      raise ID3NoHeaderError("%r doesn't start with an ID3 tag" % fn)
  mutagen.id3._util.ID3NoHeaderError: 'example.aif' doesn't start with an ID3 tag
  
  
  </code></pre>