docs: def audio_visual_key(name=None):
      """
      Creates the grammar for an Audio Visual Key code.
  
      This is a variation on the ISAN (International Standard Audiovisual Number)
  
      :param name: name for the field
      :return: grammar for an ISRC field
      """
  
      if name is None:
          name = 'AVI Field'
  
      society_code = basic.numeric(3)
      society_code = society_code.setName('Society Code') \
          .setResultsName('society_code')
  
      av_number = basic.alphanum(15, extended=True, isLast=True)
      field_empty = pp.Regex('[ ]{15}')
      field_empty.setParseAction(pp.replaceWith(''))
      av_number = av_number | field_empty
      av_number = av_number.setName('Audio-Visual Number') \
          .setResultsName('av_number')
  
      field = pp.Group(society_code + pp.Optional(av_number))
  
      field.setParseAction(lambda v: _to_avi(v[0]))
  
      field = field.setName(name)
  
      return field.setResultsName('audio_visual_key')