Processing and ...

Pure Data 紹介(導入からFFTまで)なんてのをやってた 友人から、スマホのアプリを作りたいんだけど、開発用のアプリはどんなのがお勧めって聞かれた。スマホは何? アンドロドロイドだそうだ。

iphoneとかだと、macを持っていないと開発出来ないはずだから、少しは楽そう。いや、一択って言う制限が無いから、悩むんだろうね。と、えらそーに言ってるけど、オイラーはこの方面はからきし弱いのさ。

図書館から日経のムック本を借りてきた。 GUIもWebもAndroidも!『これならできる Java入門』。

これによると、JDKを突っ込んでから、ググル様製の Android Stadio ってのをかぶせればいいらしい。

Javaって言う一点をもって、オイラーは尻尾を巻いて逃げ出しますよ。ボラクルは不穏な動きをしてるし、XMLだとか筋が悪すぎ。まあ、みんなが踊るんで、教本には事かなないけどね。でも、こうします、ああしますって説明がダラダラ続くだけで、本質的な事は何も説明がない。素人が手を出すと、挫折するぞ、地獄へ落ちるぞ。(言いすぎた。反省)

広い視点でみると、ネイティブなアプリにするのかWebのアプリにするのかで、開発環境が違ったものになる(そうな)。

どんなアプリを作りたいの? って聞いてみると、自分の(英語の)発声を聞いて、ネイティブスピーカーの発声と比べたいとの事。

それなら、無料で録音アプリが山程あるでしょって返すと、リアルタイムにモニターしたいそうな。マイクで音を拾って、スピーカーに流すんだな。間に、スペクトラム表示器をかませたいと言う希望もあるそうな。

スマホアプリの主な開発環境まとめ

初心者がスマホアプリを開発する時にまず知っておきたい3つの事実

世界を目指せ!Androidアプリ開発入門

要求からすると、Javaは避けて通れそうにないな。頑張ってください。影ながら応援しております。

Processing

「数学嫌い」をゲームプログラミングで治す方法 なんてのを見てたら、オイラーも Processingしたくなった。

Processing入門!音楽と同期するデジタルアートを作ってみたとか 一般的な音楽ファイルを再生するを参考にやってみるか。(はい、ミーハーの極みであります)

Sound

音源が必要だなあ。WindowsにはCDからリッピングしたのが、わんさかと有るけど、皆M$仕様のフォーマットだから避けておこう。で、パッと思いついたのは下記のやつ。

モールスミュージック(読み上げあり)

懐しいな。とりあえずこの音源をDLして、cw.mp3と短かい名前にしておいた。

これをあちこちで提示されてるスクリプトに代入すると、 普通にsoundライブラリィーを使うとJavaが牙を向いて来るなあ。

(DirectAudioDevice.java:513)
	at com.sun.media.sound.AbstractDataLine.open(AbstractDataLine.java:121)
	at com.jsyn.devices.javasound.JavaSoundAudioDevice$JavaSoundInputStream.start(Unknown Source)
	at com.jsyn.engine.SynthesisEngine$EngineThread.run(Unknown Source)
ArrayIndexOutOfBoundsException: 3
ArrayIndexOutOfBoundsException: 3

あれ、オイラーはjavaなんて取ってきた覚えないんだけどな。

c:\app\processing-3.5.3\java\bin>java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

道理で起動が遅いのね。でも、JDKが無くても平気なの? そこん所は、clojureみたいな仕組みになってるんだろうね。深く追求するのは止しておこう。

別のサウンドライブラリィーを有志が提供してるので、 Class AudioPlayerを利用してみる。

ddf/Minim(GitHub)

import ddf.minim.*;  // minimライブラリのインポート
Minim minim;         // Minim型変数であるminimの宣言
AudioPlayer player;  // サウンドデータ格納用の変数
 
void setup(){
  size(400, 400);
  minim = new Minim(this);              // 初期化
  player = minim.loadFile("cw.mp3");    //cw.mp3を読み込む
  player.play();                        // 再生
}
 
void draw(){
}
 
void stop(){
  player.close();  //サウンドデータを終了
  minim.stop();
  super.stop();
}

【Processing】Minim 使ってみる

9 音の視覚化の基本的な考え方

豊富なサンプルが有るので、迷う事は無いだろう。Minimのサンプルも沢山参照できたぞ。

etc

Processingの記事(game)

Processingでサウンドエフェクト処理をはじめよう

Processing入門

オーディオファイルをオンラインで変換する これを使うとWindowsの音形式 wma を、mp3とかに変換できるとな。便利な世の中になった事。

<P>練習用mp3音声ファイル集</P>
<UL>
  <LI><A href="MorseAlphabet.mp3">モールスミュージック(読み上げあり)</A>
  <LI><A href="MorseAlphabetNoVoice.mp3">モールスミュージック(読み上げなし)</A>

そして、音をブラウザー上で鳴らせたのでどうなってるか調べたら、あっけないぐらい簡単に指定してあったので感嘆してる。

PDFファイルをブラウザー画面にドロップすると表示してくれる事は知ってたけど、音ファイルもそうなのね。

p5.jp

processingのホームページ最上段に、姉妹環境と言うか姉妹言語のリンクが配置されてる。 p5.js,Python.pyとかアンドロイド用とかだ。

Pythonと言えば、

Python 2.7 will retire in...

世代交代のカウントダウンが表示されているし、一方

Project Jupyter

お手軽に試せる奴もある。でも、そんなのには見向きもしないのさ。 processingを収めた人なら容易に移行できるとな。

p5.js

p5.js(ja)

p5.js codepen

OpenProcessing

に、手を出してみる。これなら、多分ブラウザーだけ有れば済むでしょうからね。 やっぱりだね。 ブラウザー上で試す環境が用意されてて、ファイルメニューから、好きなexampleを実行できた。敷居を下げる戦略だな。 近頃のJavascriptは頑張っているのね。まあ、何でもWebの時代だと、そうなるわな。

サウンドでFFTのデモが有ったけど、マイクを有効にしろとか言われたので、手元で実験する。

p5.soundのFFTからコピペ(しろって言ってる)

cent:p5$ cat fft.html
<html>
  <head>
    <script src="p5.min.js"></script>
    <script src="p5.sound.min.js"></script>
    <script src="fft.js"></script>
  </head>
  <body>
  </body>
</html>
cent:p5$ cat fft.js
function preload(){
  sound = loadSound('cw.mp3');
}
   :

赤線で波形が出てきて、緑のバーでスペクトルが表示された。すんばらしいな。 ああ、黒い箱をクリックすれば、勝手に演劇が始まったわい。

但し、ブラウザーが動いているCPUは多忙しで、負荷率が急上昇したぞ。これって、勝手に金鉱を発掘させられる、アレと一緒だな。

Processing transition

おお、こんなのがあるな。processingとp5.jsの間を行ったり来たりする人なら読んでおけって記事だ。 ざっと見、processingの方が、手間要らずだな。

Processing Advent Calendar 2018

モールス信号の音で時刻を知らせる時計のプログラム

ちょいと面白い例を集めてみた。それぞれの*.htmlをクリックしてマウスでグリグリしてみて下さい。

ジェネレーティブアートめちゃ面白い。

こうしてみると、processingもp5.jsも、姉妹なんでお互いを尊重しましょって所かな。

姉妹(友好)提携情報