One of the many neat little touches in Figure (a fun music app/toy for iPhone/iPad/iOS) is how it names documents.

Instead of using the typical "Untitled 1" (or similar) approach, it generates a nonsense word. I like this because you're not forced to think up a name but you still still get a "meaningful" name/handle to use to refer to your lil song doodle thing. Examples: Dukadygo, Hudolyka, Tejugy.

I really liked this idea, and wanted to use it in SuperCollider, so I wrote a little String extension to generate pseudowords.

+ String {
  // Generate a random "word" between 2-5 syllables.
  * randomWord { | minSyllables=2, maxSyllables=5 |
    var
    consonants = "bcdfghjklmnpqrstvwxyz",
    vowels = [
      'a', 'e', 'i', 'o', 'u'
    ],
    longvowels = [
      'ee', 'oo'
    ],
    dipthongs = [
      'ae', 'ai', 'ao', 'au',
      'ea', 'ei', 'eo', 'eu',
      'ia', 'ie', 'io', 'iu',
      'oa', 'oe', 'oi', 'ou'
    ],
    word = Array.fill(rrand(minSyllables, maxSyllables).round, {
      var syllableMode = 20.rand;
      case
      // 10% chance of a diphthong vowel
      {syllableMode >= 18} {consonants.choose ++ dipthongs.choose}
      // 10% chance of a long vowel
      {syllableMode >= 16} {consonants.choose ++ longvowels.choose}
      // 5% chance of no vowel!
      {syllableMode == 6} {consonants.choose}
      // otherwise "typical" syllable (75% chance)
      {syllableMode >= 0} {consonants.choose ++ vowels.choose}
      ;
    }).flatten.join;
    ^word
  }
}

I'll be using this in SuperCollider for naming little midi patterns, song sections etc, as opposed to beat, bass1, bridgechords etc.

Other potential applications of this concept:

  • blog post 'slug' - the url key for a post (coming soon to drongo)
  • names of characters, technologies, plants or animals in creative writing
  • name for your new company/brand.