MeowMix

About:

MeowMix is an interactive cat-sound sequencer.

Screenshots:

Grid Screen

“MeowMix1”

Interactive Screen

“MeowMix2”

Motivation:

In my research on sequencers, I found that sequencers are overwhelmingly functional. They tend to have a million features and can sequence any sound you want them to. However, my experiences using sequencers has taught me that they are almost never fun to use, partly because they have too many sounds and options, which can be overwhelming. In defiance of these trends, I decided that I wanted to make my sequencer fun and almost completely useless. The easiest way I could think of to accomplish both of these goals was to introduce some arbitrary thematic constraints on the sequencer. Cats are all the rage these days, and so I decided to make this my theme. I theorize that cats are loved so much because they are 1) cute as hell and 2) their behavior is incredibly amusing. I sought to take these aspects and imbue them into my sequencer.

Initial Design Sketches:

Grid Screen

“sketch2”

Interactive Screen

“sketch1”

Design:

The design of my sequencer system can be split into four aspects: time, audio, visuals, and interactivity. Naturally, all aspects of the sequencer are very highly integrated and dependent upon one another, but I will attempt to describe them individually below.

Time:

Time is kept track of in the audio call function. Since I am using ofSoundStream (kind of), this means the sequencer is buffer-accurate (to within 256 samples). Whenever the audio call function is run the time is updated, and it checks to see if enough time has passed to update the current step (one subdivision of a beat). Since there is some error inherent in this (up to 256 samples), the subsequent beat length is adjusted to account for the error. Thus, although individual beats may be slightly inaccurate, as a whole, the tempo remains consistent with no net error.

Audio:

As mentioned, I am using ofSoundStream to keep track of time; however, I am not actually using it for audio at all. Since I am only using sampled sounds, ofSoundPlayer was much easier to implement and totally sufficient for my purposes. Admittedly, this might be the hackiest thing ever I've ever done, and the obvious better solution would be to just implement a sample-accurate system that controls both timing and audio, but I decided that other aspects of the design of the sequencer held higher priority. Anyways, when the timing function decides that enough time has passed for a new step, any sounds located on this step are played.

Visuals:

Obviously, the grid represents the steps of the sequencer, and the sound items represent the different sounds. The positions of any sound objects placed on the grid are stored in an array, and a boundary function is used to determine what step that sound belongs to. Thus, when a new step occurs, the correct sound(s) are played at that time.

Interactivity:

To me, interactivity is the most important aspect to making something satisfying, so I strived to make the interactivity in MeowMix intuitive and interesting. The key to this was the cat objects. Instead of giving the user a bank of cat sounds, I decided to just use four cat objects, whose sound would change depending on the user's Tamagotchi-esque interaction with the cats. This constrains the user to up to only four unique sounds at once, which I think fosters a more enjoyable and satisfying experience through simplicity. In addition, I kept my input methods very simple and intuitive (mouse clicks for placing sounds and keystrokes for changing tempo, pitch, etc.) so as to not detract or distract from the overall intended experience of the sequencer itself, which is really just about making cat music.

Instructions:

Downloading:

To run using XCode:

  • Download the zip folder below containing all the project files
  • Download openFrameworks
  • Put the project folder in your myApps folder in the openFrameworks folder
  • Also download XCode if you dont have it
  • Open the MeowMix.xcodeproj file and run it
  • Using:

    Use the mouse to select sounds and place them on the grid. Alternatively, while the sequencer is playing, press enter to play and place the currently selected sound. Press space to start and stop the sequencer. Press m to turn the metronome on/off. Change the tempo using the up and down arrows. Change pitch using keys 1 through +/=. Press e to erase the most recently placed sound, press delete to erase all sounds. Press c to give the cats catnip and randomize the placement of the cats. Press shift to enter interactive mode. In interactive mode, click on the cats to give them love and improve their mood. Press i at any time for these instructions.

    Video:

  • Musical Statement Video
  • Project Files:

  • ProjectZip