読者です 読者をやめる 読者になる 読者になる

ポケミクと自作ソフトでマックのポテトが揚がった音を再現してみた

マックのポテトが揚がったときの音

 この前こんなツイートを見つけてしまいました

 その瞬間、からあげに…電撃…走る!!一瞬の閃き!

 ポケミクに…マックのポテトの揚がったときの音を歌わせる。これだっ!!

 というわけで30分くらいで作ってみました。

完成した動画

 大人の科学 ポケット・ミクとProcessingというプログラミング言語で作った自作ソフトで実現しています。

使用したオリジナルキャラ

 ○ナル○さんとは一切関係ありません。
f:id:karaage:20140510140445j:plain
f:id:karaage:20140510140236j:plain

関連記事

iPhoneの着信音をマックのポテトが揚がった時の音にしてみました - karaage. [からあげ]
ポケット・ミク関連情報まとめ - karaage. [からあげ]

 一部の人からは「意味不明」「宇宙語」と言われているソフトの作り方(ソースコード)。見たい人だけ続きをクリックしてね☆

必要なもの

  • Processing2.0
  • The minibusのライブラリ
  • mmjライブラリ
  • ポテトの絵

 ポテトの絵は自分で作ってもこの上のオリジナルキャラを使ってもOKです(フリー素材)。
他はグーグルさんに聞けばダウンロードできるはず!下記記事とかも参考にしてみて下さい☆

Processingでポケット・ミクの簡易シーケンサを自作してみました - karaage. [からあげ]

ソースコード

import themidibus.*;
import de.humatic.mmj.*; // OSX specific
PImage img1, img2;
int potato_state = 0;
int cnt = 0;
//// Please refer http://www.humatic.de/htools/mmj/doc/
//CoreMidiDevice[] cmd;    // OSX specific
MidiOutput mo_vocaloid;  // OSX specific
MidiSystem ms;           // OSX specific
 
MidiBus vocaloid;
 
byte[] data = {(byte)0xF0, (byte)0x43, (byte)0x79, (byte)0x09, // header(SysEx)
               (byte)0x11, (byte)0x0A, (byte)0x00,             // header(SysEx)
               (byte)0x55,                                     // PO
               (byte)0x2C,                                     // TE
               (byte)0x2D,                                     // TO
               (byte)0xF7  // footer(SysEx)
             };

void setup() {
  size(800, 600);
  background(255);
  MidiBus.list();
  vocaloid = new MidiBus(this, "NSX-39 " , "NSX-39 ");

  img1 = loadImage("POTATO 1.jpg");
  img2 = loadImage("POTATO 2.jpg");

  detectMidiDevices();
}

void detectMidiDevices(){
  String midiDevices[] = MidiSystem.getOutputs();
  String pokemikuName = "NSX-39  - NSX-39 ";
  int devNumb = 0;
  int detect = 0;
  for(int i = 0; i < MidiSystem.getNumberOfOutputs(); i++){
      println(i);
      println(midiDevices[i]);
    
    if(midiDevices[i].equals(pokemikuName)){
      println("NSX-39 OK");
      devNumb = i;
      detect = 1;
    }
  }

  mo_vocaloid = ms.openMidiOutput(0);     // OSX specific
  mo_vocaloid = ms.openMidiOutput(devNumb);     // OSX specific
}

 
void draw() {
  if(potato_state==1){
    image(img2, 0, 0, width, height);

    if(cnt > 0){
      mo_vocaloid.sendMidi(data);             // OSX specific
      vocaloid.sendNoteOn(0, 79, 80);
      delay(80);
      delay(120);
      vocaloid.sendNoteOn(0, 77, 80);
      delay(150);
      delay(50);
      vocaloid.sendNoteOn(0, 79, 80);
      delay(200);
      vocaloid.sendNoteOff(0, 79, 80);
      delay(250);
    }
    cnt++;
  }else{
    cnt = 0;
    image(img1, 0, 0, width, height);
  }  
}

void keyPressed(){
  if(key == 'p'){
    if(potato_state == 1){
      potato_state = 0;
    }else{
      potato_state = 1;
    }
  }
}

void exit() {
  vocaloid.close(); // bye bye!
  mo_vocaloid.close(); // bye bye!
  super.exit();
}

使い方

 ポケミク繋いで電源オンした後にソフト起動して'p'ボタンを押すだけ!簡単だね☆