Patatap

www.patatap.com

Patatap is an interactive animation/sound effects playground which was created by Jono Brandel in collaboration with the music composers Lullatone, In terms of technologies that help people make music even if they haven no idea what they are doing.

 

The Key of patatap is " turning your keyboard into an instrument for musical animations. Whether its on your laptop, desktop, mobile phone, or tablet Patatap invites creators of all ages to engage the mind and senses in a different type of creation process.

 

The motivation behind Patatap is to introduce the medium of Visual Music to a broad audience. Artists working in this field vary in discipline but many aim to express the broader condition of Synesthesia, in which stimulation of one sensory input leads to automatic experiences in another. Hearing smells or seeing sounds are examples of possible synesthesia. In the case of Patatap, sounds trigger colorful visual animations.

Lullatone

 Lullatone is the music composer unit of Shawn James Seymour and Yoshimi Seymour. Based in Nagoya, Japan, the duo have released more than 10 albums and soundtrack films. With each sound they try to bring out the everyday wonder of overlooked moments and make the mundane seem magical.

 

They created compelling sounds to accompany the animations. Each color palette has a unique corpus of sounds. Each set comprises sounds that enable a full-bodied composition both in terms of sound and visuals. These sounds are geared toward making tapping as melodic as possible, similar to a keyboard of drum pads. The result is a visceral and rewarding experience.

Live Performance in 2013

Patatap - loop

Technology

(function(exports, $container){

  var SL = {

      beatsPerLoop: 16,

      beatsPerMinute: 200,

      _loops: {},

      _stop: false,

      add: function(name, beats) {

        this._loops[name] = beats.split(' ');

        return this;

      },

      remove: function(name, beats) {

        delete this._loops[name];

      },

      list: function() {

        var count = 0;

        for (key in this._loops) {

          console.log(key + ': ' + this._loops[key].join(' '));

          count++;

        }

        console.log(count + ' loop(s)');

      },

      clear: function() {

        this._loops = {};

      },

      stop: function() {

        this._stop = true;

      },

      start: function() {

        this._stop = false

        superloop(0, this.beatsPerLoop, this.beatsPerMinute);

      }

  }

 

  function playBeat(loop, beat) {

    if(loop[beat] !== '-'){

      var e = jQuery.Event("keydown");

      try {

        e.which = loop[beat].toUpperCase().charCodeAt(0);

      } catch(error) {

        console.warn('Typo at beat ' + beat + '');

      }

      $("input").val(String.fromCharCode(e.which));

      $("html").trigger(e);

    }

  }

 

  function superloop(beat, bpl, bpm) {

    _.each(SL._loops, function(loop) {

      playBeat(loop, beat);

    });

    if (SL._stop)

      return

    setTimeout(function(){

      var nextBeat = (beat+1)%bpl;

      superloop(nextBeat, bpl, bpm);

    }, (1000 * 60) / bpm);

  }

 

  superloop(0, SL.beatsPerLoop, SL.beatsPerMinute);

  exports.superloops = SL;

  if ($container) {

    $container.append('<div style="position:fixed; top: 10px; left: 10px;font-family:helvetica; font-size: 30px;color: white; padding: 20px;background-color: rgba(0,0,0,0.2);border: 5px solid black;">github.com/reimertz/patatap-looper</div>');

  }

  console.clear()

})(window, $("html"));

 

 

 

superloops.add('base', 'e - - - e - - - e - - - e - - -')

          .add('snare', '- - o - - - o - - - o - - - o -')

          .add('love', '- p - h - e - a - r - t - m - -');