@classmethod
def tokenize_content(cls, content):
    """ Take tokenizable ChordSpec content and return the tokens """
    tokens = []
    cursor = 0
    while cursor < len(content):
        subspec = content[cursor:]
        found = False
        for token_str, token in cls._sorted_token_string_tuples():
            if subspec.startswith(token_str):
                tokens.append(token)
                cursor += len(token_str)
                found = True
                break
        if not found:
            raise ValueError('found garbage character "{}" at position {}'.
                format(subspec[0], cursor))
    if len(tokens) == 0:
        tokens.append(cls.TOKEN_MAJOR)
    return tokens
