はくちょう座のブログ

このブログは、数学とアニメとlinuxに傾いています。

プログラミング

JavaScriptで音楽アナライザを作ってみた

これはTSG Advent Calendar 2016 - Adventarの18日目の記事として書かれるはずのものでした。

デモページ
とりあえず説明です。

概要
 JavaScriptとHTML5 Canvas+pixi.jsを用いた音楽アナライザー
特徴
 サーバーに頼らずクライアント内で処理をしている
 最新ブラウザならパソコンだけではなくスマホでも利用可能
説明
・ファイルを選択で手持ちの音楽ファイル(.mp3,.wav,.m4aで動作確認済み.動画ファイルだが.mp4でも可能)
・一番下がC3,上がB8までの72音階に分けてその音階がどれだけ出ていたのかを表しています。上のほうが周波数としては高く、下は低くなっています。音と周波数の関係はこちらのページを参考にしてください。
・緑色で表示されている部分はその時間帯で最も音が強い音階です。
・黄色で表示されている部分は緑色と同じくらい音が強いです。
・赤色で表示されている部分は赤色に近ければ近いほど音が強いことを表しています。緑色黄色には及びません。
・同時にBPMの検出も行っています。右上に表示されています。その横にある赤い丸はBPMに応じて点滅しています。
・BPMの検出に応じて赤い線と赤い線の間が4分音符1つ分になるように調整しています。
・曲を変える時は一度更新ボタンを押さないと正しく動作しません。

どのように解析しているのかを軽く説明します。

(1)ユーザーの手元にあるファイルを解析する段階まで
ファイルの読み込みは、HTMLのinput要素を使います。"ファイルを選択する"というボタンのことです。こちらから音楽ファイルを読み込みaudio要素のsrc属性で指定すれば音楽の再生は可能です。しかし、これだけでは解析することが不可能です。そこでWebAudioAPIを利用します。具体的にはAudioContext インターフェースのdecodeAudioDataメソッドによって、音楽データをデコードします。そうすると音量のデータが配列として扱えるので便利になります。また音楽解析用にJavaScriptでクラスを定義しておき、各種メソッドを行うことで解析できるようにします。

(2)どのように解析するか
音楽解析用クラスのプロパティに音楽ファイルのデータを設定した後、各種解析を行います。
まず最初にBPMの検出を行います。こちらはいろんな手法が考えられていますが、
C/C++言語で音声ファイルのテンポ解析を行うサンプルプログラム(http://hp.vector.co.jp/authors/VA046927/tempo/tempo.html)
を参考に実装してみました。

他には1秒間に数十回くらいWebAudioAPIで定義されているFFT(フーリエ高速変換)を行います。そうするとある特定の周波数ごとの強弱が数値として表れます。ただ、特定の周波数が12音階の周波数と一致するわけではないので多少計算で処理を行う必要があります。

(3)どのように表示するのか
HTML5 Canvas+pixi.jsを使って表示しています。
pixi.jsだとWebGLを利用するので描画が高速になると思い利用しました。実際どれくらい速くなっているかは分かりません。


本当は自動採譜などを入れたかったんですが難しいですね。



任意の数字を出現させる話

どうも、lip_of_cygnusです。TSG Advent Calendar 2015の16日目の記事です。


小学生の頃は自由帳に2の累乗ばっかりだけ書いているような子供でした。
今日の話題は高校生の時、担任の先生からもらった問題についてです。


「すべての自然数は2の累乗に現れる」


本記事ではこの問題を2つの方法で解きたいと思います。

方法1:上から攻める

$\log_2 10$が無理数であることを用います。

無理数であることの証明は簡単です。
$\log_2 10$が有理数であると仮定すると、
$2^\frac{m}{n}=10$となります。両辺をn乗すると、
$2^m=10^n$
2と5は互いに素なので、右辺は5の倍数になるのにもかかわらず、左辺は5の倍数ではありません。
矛盾しているので、この仮定は不合理であるため$\log_2 10$は無理数です。さてここでクロネッカーの稠密定理を用いたいと思います。

クロネッカーの稠密定理:
任意の無理数xと$0 \leq a < b \leq 1$を満たす任意の実数a,bに対して$a \leq \{nx\} \leq b$を満たす自然数nが存在する。

詳細については、こちらをご覧ください。
クロネッカーの稠密定理とその証明 | 高校数学の美しい物語

2の累乗に現れてほしい自然数をxと置きます。クロネッカーの稠密定理より、

\[
m-\log_2 (x+1-ε)\leq n*\log_2 10\leq m-\log_2 x\\
(mは\log_2 xより大きい整数,0<ε<1とします)\\
m-\log_2 (x+1)< n* \log_2 10 \leq m-\log_2 x\\
\]
各辺を2^(各辺)という感じにすると
\[
\frac{2^m}{x+1}<10^n \leq \frac{2^m}{x}\\
\frac{2^m}{x+1}<10^nより、\\
2^m<(x+1)*10^n\\
10^n \leq \frac{2^m}{x}より、\\
x*10^n \leq 2^m\\
\]
\[x*10^n \leq 2^m<(x+1)*10^n\\
\]
ゆえに、任意の自然数xが2の累乗に現れることが示されました。

方法2:下から攻める

2の累乗に現れてほしい自然数をxと置きます。
まず、xの後ろの方に数字を付け足します。
xの桁数をNとした時に、M桁足してN+M桁が$2^{M+N}$乗の倍数となるようなものを探します。
M=Nとすれば、x'の候補となる数は$10^N$個存在するのでその中に必ず$2^{M+N}=4^N$の倍数となるものは存在します。そしてこのようなx'は必ずある2の累乗中に存在するのです。証明にうつる前に補題を示します。

補題: 数列 $2^0,2^1,...,2^{5^t-1}$を考える。これを$5^t$で割った余りは全て異なる。
背理法で示す。余りが同じになる組があると仮定し、これを$2^i,2^{i+j}$(jは$j<5*t-1$を満たす自然数)とおく。
$2^{i+j}-2^i=2^i*(2^j-1)$2と5は互いに素であるので、$2^j-1$は$5^t$の倍数になります。(すみませんこのあとの証明思いつきません)

証明:上の桁がk(ない場合は0)で、下M+N桁がx'であるような自然数Pを考えます。
P=k*10^(M+N)+x'=2^(M+N)*(k*5^(M+N)+x'')
この時、x''は必ず5^(M+N)の倍数ではない自然数になります。(x'が自然数でM+N桁であることから分かる)ところで、t=M+Nとすれば補題より(k*5^(M+N)+x'')は2の累乗で表すことができます。従ってPも2の累乗で表すことができます。ゆえに、任意の自然数xが2の累乗に現れることが示されました。

せっかくなんで、両方の方法で自然数xが含まれる2の累乗を出力するプログラムを作りました。言語はPythonでpython log2.py 数字 という感じで入力すると結果が返ってきます。

例えば今日の日付にちなんで1216を入力すると
$1442$ $121689679549848296476284539719833956128172746808983983951831652023347365468864269429292576963439508278182027446718540810569381644337220853815156314657613612239712834757924740882197032736054344801343165356558510233936904806426545855737390911634598080775602523511373106777607060088046178460822014203870855117130108554646318067801134685013852825258691387386426550771312213642678910868232892059330844780618615710006156570567711150890287104$
$424$ $43322963970637732180912721627235682866194329302747133987038743447103457934462900359999600095377180907771737671271930809827721216$
と出力されます。

三角形を回転させて拡大縮小する その1

お久しぶりです。受験に関しては後日書きたいと思っております。

動画を見ていたらある問題が頭の中に思い浮かんだので紹介したいと思います。

画像AとB上には三角形が描かれている。辺の太さはないものとする。それぞれの頂点は異なる3点の黒点(1ドット)内にあることが分かっている。

画像Bの三角形はいずれかのタイプである。

タイプ1:画像Aの三角形と全く配置である。(可能性がある)
タイプ2:画像Aの三角形と全く配置が同じだが横にXドット縦にYドットずれている。(可能性がある)
タイプ3:画像Aの三角形から横にXドット縦にYドットずれている上、N倍拡大縮小されている。(可能性がある)
タイプ4:画像Aの三角形から横にXドット縦にYドットずれている上、θだけ回転させている。(可能性がある)
タイプ5:画像Aの三角形から横にXドット縦にYドットずれている上、θだけ回転してさらにN倍拡大縮小されている。(可能性がある)
タイプ6:画像Aの三角形が、法線ベクトルが(x_0,y_0,z_0)となる平面上に載せられている上、横にXドット縦にYドットずれており、θだけ回転してさらにN倍拡大縮小されている。(可能性がある)
タイプ7:タイプ1からタイプ6いずれにも属さない。
タイプに複数所属する場合、番号が若いものに属することにする。

画像Aの三角形と画像Bの三角形(正確にはそれぞれの黒点のx座標、y座標)が与えられた時に、画像Bがタイプ1から7いずれに属するか分類せよ。


タイプ1とタイプ2については分類は簡単だと思いますがタイプ3からちょっと厄介です。タイプ4になるともう分かりません。なぜ難しいのかというと画像Aの三角形がこうであると固定できていないからです。ですから全ての可能性を考えることになり、分類は複雑になりそうです。現実的にこの問題を解くとするならば、ドットの左上にそれぞれの頂点があると仮定して、その上で点A,B,Cを定めて、∠A及びAB,ACを求め、誤差の範囲を三角形ABCに応じて適当に定めれば何とかなるかもしれないです。でも、厳密に考えるとどうなるのでしょう。

うまいこと高速に分類することができるプログラムができたら動画内の人物の動きを捉え、その結果コンピューターが動画においてこの人物が〜〜ということをした。ということを発見し理解できるようになるかもしれません。

その1と書きましたが、続かないかもしれません。進展があったら書きます。

グラフソフトで楽しむ音楽

最近、Javaという言語を習得し始めたので、以前は手作業とテキストエディタの置き換え機能でやっていた、グラフソフトで音を出す作業を再びやることにしました。

どういうことかと言いますと、Function Viewや、Grapesというソフトでは、音を出す機能が付いているので、書式に従えば、任意の音を出せるのです。今回は、ルミナスとコネクトを題材に、頑張ることにしました。

しかしながら、この作業は非常に単調で、骨が折れます。何故ならば、Function Viewならば、例えば
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*0x))
Grapesならば
PlayAfter(t,0,30/175,sin1397Pit+sin0Pit)
という文字列を何百行も書かなければならないからです。しかも、僕の場合、楽譜を見てからこの文字列を考えなければならないので、手作業でやってたときはすごく大変でした。

しかし、今回はプログラミング言語の力を借りることによって、音符の長さ、音符がどこに位置しているのかという入力テキストを作って、コンパイルして(?)、上のような文字列を出すプログラムを作成することに成功しました。

しかも、以前は困難だった、和音も入れることにも成功しました。以下に、コネクトとルミナスの音を出せる、文字列を書いていきたいと思います。すみませんが、未完成です。完全版はそのうち出したいと思います。

Grapesの場合 ダウンロード
起動して、編集>スクリプト と入って、以下の文をコピペし、OKボタンを押して、SetSamplate〜と書いてあるところをおすと音が鳴ります。

Function Viewの場合 ダウンロード 
起動して、陽関数をクリック終了ボタン(紫色)を押し、もう一回終了(E)ボタンを押す、するとマクロ 編集というボタンが出てくるので、そこに文字列をコピペし、登録ボタンを押す。自動的に、コネクトもしくは、ルミナスというボタンが出てくるので、ボタンを押すと再生が始まる。

コネクト 
参考動画こちらに記載されている楽譜をもとに作成されました。
音にノイズのようなものが発生したり、ソフト間で音の高さが違うのは仕様です。

入力するファイルは以下のものです。これらは全て手作業で作りました。
旋律 伴奏

そして出力された結果が以下のようになります。

Grapes 

SetSampleRate(10000)
PlayAfter(t,0,30/175,sin1397Pit+sin0Pit)
PlayAfter(t,0,30/175,sin1319Pit+sin0Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin0Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin0Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin139Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin139Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin156Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin156Pit+sin523Pit)
PlayAfter(t,0,30/175,sin2093Pit+sin156Pit+sin330Pit)
PlayAfter(t,0,30/175,sin2093Pit+sin156Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin131Pit+sin262Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin131Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin131Pit+sin494Pit)
PlayAfter(t,0,30/175,sin1319Pit+sin131Pit+sin262Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin131Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin131Pit+sin494Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin131Pit+sin262Pit)
PlayAfter(t,0,30/175,sin1047Pit+sin131Pit+sin494Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin175Pit+sin440Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin175Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1319Pit+sin175Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin175Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin131Pit+sin262Pit)
PlayAfter(t,0,30/175,sin1175Pit+sin131Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin131Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin131Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin139Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1397Pit+sin139Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin156Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1760Pit+sin156Pit+sin523Pit)
PlayAfter(t,0,30/175,sin2093Pit+sin156Pit+sin330Pit)
PlayAfter(t,0,30/175,sin2093Pit+sin156Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin330Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin156Pit+sin392Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin175Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin175Pit+sin494Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin175Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin175Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1568Pit+sin175Pit+sin494Pit)
PlayAfter(t,0,30/175,sin1480Pit+sin175Pit+sin523Pit)
PlayAfter(t,0,30/175,sin1175Pit+sin1568Pit+sin175Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1480Pit+sin1175Pit+sin1760Pit+sin175Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,120/175,sin1480Pit+sin1175Pit+sin1760Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,60/175,sin0Pit+sin0Pit)
PlayAfter(t,0,15/175,sin1245Pit+sin0Pit)
PlayAfter(t,0,15/175,sin1397Pit+sin0Pit)
PlayAfter(t,0,15/175,sin1480Pit+sin0Pit)
PlayAfter(t,0,15/175,sin1661Pit+sin0Pit)
PlayAfter(t,0,60/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin123Pit+sin247Pit)
PlayAfter(t,0,60/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin370Pit+sin494Pit+sin622Pit)
PlayAfter(t,0,30/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin247Pit)
PlayAfter(t,0,30/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin370Pit+sin494Pit)
PlayAfter(t,0,30/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin311Pit)
PlayAfter(t,0,60/175,sin831Pit+sin1109Pit+sin1397Pit+sin1661Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin831Pit+sin1109Pit+sin1397Pit+sin1661Pit+sin277Pit)
PlayAfter(t,0,60/175,sin831Pit+sin1109Pit+sin1397Pit+sin1661Pit+sin415Pit+sin622Pit)
PlayAfter(t,0,30/175,sin1245Pit+sin1661Pit+sin1976Pit+sin2489Pit+sin349Pit)
PlayAfter(t,0,30/175,sin1245Pit+sin1661Pit+sin1976Pit+sin2489Pit+sin311Pit)
PlayAfter(t,0,30/175,sin1245Pit+sin1661Pit+sin1976Pit+sin2489Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1245Pit+sin1661Pit+sin1976Pit+sin2489Pit+sin247Pit)
PlayAfter(t,0,60/175,sin1109Pit+sin1397Pit+sin1661Pit+sin2217Pit+sin117Pit+sin233Pit)
PlayAfter(t,0,60/175,sin1109Pit+sin1397Pit+sin1661Pit+sin2217Pit+sin349Pit+sin415Pit+sin554Pit)
PlayAfter(t,0,30/175,sin1109Pit+sin1397Pit+sin1661Pit+sin2217Pit+sin233Pit)
PlayAfter(t,0,30/175,sin698Pit+sin831Pit+sin1109Pit+sin1397Pit+sin415Pit)
PlayAfter(t,0,30/175,sin698Pit+sin831Pit+sin1109Pit+sin1397Pit+sin349Pit)
PlayAfter(t,0,60/175,sin740Pit+sin932Pit+sin1245Pit+sin1480Pit+sin147Pit+sin311Pit)
PlayAfter(t,0,30/175,sin740Pit+sin932Pit+sin1245Pit+sin1480Pit+sin311Pit)
PlayAfter(t,0,60/175,sin740Pit+sin932Pit+sin1245Pit+sin1480Pit+sin466Pit+sin740Pit)
PlayAfter(t,0,30/175,sin740Pit+sin932Pit+sin1245Pit+sin1480Pit+sin311Pit)
PlayAfter(t,0,30/175,sin740Pit+sin932Pit+sin1245Pit+sin1480Pit+sin370Pit+sin466Pit)
PlayAfter(t,0,15/175,sin1245Pit+sin147Pit+sin311Pit)
PlayAfter(t,0,15/175,sin1397Pit+sin147Pit+sin311Pit)
PlayAfter(t,0,15/175,sin1480Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,15/175,sin1661Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,60/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin131Pit+sin262Pit)
PlayAfter(t,0,60/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin466Pit+sin622Pit)
PlayAfter(t,0,30/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin262Pit)
PlayAfter(t,0,30/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin370Pit+sin466Pit)
PlayAfter(t,0,30/175,sin932Pit+sin1245Pit+sin1480Pit+sin1865Pit+sin262Pit)
PlayAfter(t,0,90/175,sin831Pit+sin1245Pit+sin1480Pit+sin1661Pit+sin247Pit)
PlayAfter(t,0,60/175,sin831Pit+sin1245Pit+sin1480Pit+sin1661Pit+sin349Pit+sin415Pit)
PlayAfter(t,0,30/175,sin1245Pit+sin1480Pit+sin1661Pit+sin2489Pit+sin247Pit)
PlayAfter(t,0,30/175,sin1245Pit+sin1480Pit+sin1661Pit+sin2489Pit+sin415Pit)
PlayAfter(t,0,60/175,sin1245Pit+sin1480Pit+sin1661Pit+sin2489Pit+sin415Pit+sin494Pit)
PlayAfter(t,0,60/175,sin1109Pit+sin1480Pit+sin1661Pit+sin2217Pit+sin139Pit+sin277Pit)
PlayAfter(t,0,30/175,sin1109Pit+sin1480Pit+sin1661Pit+sin2217Pit+sin415Pit)
PlayAfter(t,0,30/175,sin1109Pit+sin1480Pit+sin1661Pit+sin2217Pit+sin622Pit)
PlayAfter(t,0,30/175,sin1109Pit+sin1480Pit+sin1661Pit+sin2217Pit+sin554Pit)
PlayAfter(t,0,30/175,sin1109Pit+sin1480Pit+sin1661Pit+sin2217Pit+sin415Pit)
PlayAfter(t,0,30/175,sin1109Pit+sin1480Pit+sin1661Pit+sin2217Pit+sin311Pit)
PlayAfter(t,0,30/175,sin1109Pit+sin1480Pit+sin1661Pit+sin2217Pit+sin277Pit)
PlayAfter(t,0,120/175,sin932Pit+sin1245Pit+sin1661Pit+sin2217Pit+sin311Pit+sin415Pit+sin466Pit)
PlayAfter(t,0,120/175,sin1568Pit+sin932Pit+sin1245Pit+sin2217Pit+sin147Pit+sin311Pit)
PlayAfter(t,0,60/175,sin0Pit+sin208Pit+sin311Pit+sin494Pit)
PlayAfter(t,0,60/175,sin622Pit+sin784Pit+sin208Pit+sin311Pit+sin494Pit)
PlayAfter(t,0,30/175,sin523Pit+sin208Pit+sin311Pit+sin494Pit)
PlayAfter(t,0,60/175,sin587Pit+sin208Pit+sin311Pit+sin494Pit)
PlayAfter(t,0,30/175,sin622Pit+sin208Pit+sin311Pit+sin494Pit)
PlayAfter(t,0,30/175,sin622Pit+sin208Pit)
PlayAfter(t,0,30/175,sin622Pit+sin311Pit)
PlayAfter(t,0,30/175,sin587Pit+sin415Pit)
PlayAfter(t,0,60/175,sin622Pit+sin494Pit)
PlayAfter(t,0,60/175,sin698Pit+sin494Pit)
PlayAfter(t,0,30/175,sin587Pit+sin494Pit)
PlayAfter(t,0,120/175,sin466Pit+sin587Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,30/175,sin587Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,60/175,sin523Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,30/175,sin466Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,30/175,sin466Pit+sin622Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,30/175,sin466Pit+sin622Pit+sin277Pit)
PlayAfter(t,0,30/175,sin466Pit+sin622Pit+sin349Pit)
PlayAfter(t,0,60/175,sin466Pit+sin587Pit+sin466Pit)
PlayAfter(t,0,30/175,sin466Pit+sin277Pit)
PlayAfter(t,0,30/175,sin466Pit+sin233Pit)
PlayAfter(t,0,30/175,sin523Pit+sin208Pit)
PlayAfter(t,0,60/175,sin466Pit+sin587Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,90/175,sin466Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,60/175,sin466Pit+sin587Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,30/175,sin831Pit+sin233Pit+sin349Pit)
PlayAfter(t,0,30/175,sin831Pit+sin185Pit)
PlayAfter(t,0,30/175,sin784Pit+sin277Pit)
PlayAfter(t,0,30/175,sin784Pit+sin466Pit)
PlayAfter(t,0,30/175,sin698Pit+sin415Pit)
PlayAfter(t,0,30/175,sin698Pit+sin370Pit)
PlayAfter(t,0,30/175,sin587Pit+sin349Pit)
PlayAfter(t,0,30/175,sin587Pit+sin311Pit)
PlayAfter(t,0,30/175,sin698Pit+sin277Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin247Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin370Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin494Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin370Pit)
PlayAfter(t,0,30/175,sin587Pit+sin698Pit+sin247Pit)
PlayAfter(t,0,30/175,sin587Pit+sin698Pit+sin370Pit)
PlayAfter(t,0,30/175,sin587Pit+sin698Pit+sin494Pit)
PlayAfter(t,0,30/175,sin587Pit+sin698Pit+sin370Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin247Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin370Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin466Pit)
PlayAfter(t,0,30/175,sin523Pit+sin622Pit+sin370Pit)
PlayAfter(t,0,30/175,sin466Pit+sin587Pit+sin247Pit)
PlayAfter(t,0,30/175,sin466Pit+sin587Pit+sin370Pit)
PlayAfter(t,0,30/175,sin466Pit+sin587Pit+sin466Pit)
PlayAfter(t,0,30/175,sin466Pit+sin587Pit+sin370Pit)
Play

Function View

sub コネクト()#1
makewave(N,1,30/175,sin(2π*1319x)+sin(2π*0x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*0x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*0x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*139x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*139x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*156x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*156x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*2093x)+sin(2π*156x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*2093x)+sin(2π*156x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*131x)+sin(2π*262x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*131x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*131x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*1319x)+sin(2π*131x)+sin(2π*262x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*131x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*131x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*131x)+sin(2π*262x))
makewave(A,1,30/175,sin(2π*1047x)+sin(2π*131x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*175x)+sin(2π*440x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*175x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1319x)+sin(2π*175x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*175x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*131x)+sin(2π*262x))
makewave(A,1,30/175,sin(2π*1175x)+sin(2π*131x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*131x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*131x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*139x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1397x)+sin(2π*139x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*156x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1760x)+sin(2π*156x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*2093x)+sin(2π*156x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*2093x)+sin(2π*156x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*330x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*156x)+sin(2π*392x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*175x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*175x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*175x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*175x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1568x)+sin(2π*175x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*1480x)+sin(2π*175x)+sin(2π*523x))
makewave(A,1,30/175,sin(2π*1175x)+sin(2π*1568x)+sin(2π*175x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1480x)+sin(2π*1175x)+sin(2π*1760x)+sin(2π*175x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,120/175,sin(2π*1480x)+sin(2π*1175x)+sin(2π*1760x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,60/175,sin(2π*0x)+sin(2π*0x))
makewave(A,1,15/175,sin(2π*1245x)+sin(2π*0x))
makewave(A,1,15/175,sin(2π*1397x)+sin(2π*0x))
makewave(A,1,15/175,sin(2π*1480x)+sin(2π*0x))
makewave(A,1,15/175,sin(2π*1661x)+sin(2π*0x))
makewave(A,1,60/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*123x)+sin(2π*247x))
makewave(A,1,60/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*370x)+sin(2π*494x)+sin(2π*622x))
makewave(A,1,30/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*247x))
makewave(A,1,30/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*370x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*311x))
makewave(A,1,60/175,sin(2π*831x)+sin(2π*1109x)+sin(2π*1397x)+sin(2π*1661x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*831x)+sin(2π*1109x)+sin(2π*1397x)+sin(2π*1661x)+sin(2π*277x))
makewave(A,1,60/175,sin(2π*831x)+sin(2π*1109x)+sin(2π*1397x)+sin(2π*1661x)+sin(2π*415x)+sin(2π*622x))
makewave(A,1,30/175,sin(2π*1245x)+sin(2π*1661x)+sin(2π*1976x)+sin(2π*2489x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*1245x)+sin(2π*1661x)+sin(2π*1976x)+sin(2π*2489x)+sin(2π*311x))
makewave(A,1,30/175,sin(2π*1245x)+sin(2π*1661x)+sin(2π*1976x)+sin(2π*2489x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1245x)+sin(2π*1661x)+sin(2π*1976x)+sin(2π*2489x)+sin(2π*247x))
makewave(A,1,60/175,sin(2π*1109x)+sin(2π*1397x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*117x)+sin(2π*233x))
makewave(A,1,60/175,sin(2π*1109x)+sin(2π*1397x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*349x)+sin(2π*415x)+sin(2π*554x))
makewave(A,1,30/175,sin(2π*1109x)+sin(2π*1397x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*233x))
makewave(A,1,30/175,sin(2π*698x)+sin(2π*831x)+sin(2π*1109x)+sin(2π*1397x)+sin(2π*415x))
makewave(A,1,30/175,sin(2π*698x)+sin(2π*831x)+sin(2π*1109x)+sin(2π*1397x)+sin(2π*349x))
makewave(A,1,60/175,sin(2π*740x)+sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*147x)+sin(2π*311x))
makewave(A,1,30/175,sin(2π*740x)+sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*311x))
makewave(A,1,60/175,sin(2π*740x)+sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*466x)+sin(2π*740x))
makewave(A,1,30/175,sin(2π*740x)+sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*311x))
makewave(A,1,30/175,sin(2π*740x)+sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*370x)+sin(2π*466x))
makewave(A,1,15/175,sin(2π*1245x)+sin(2π*147x)+sin(2π*311x))
makewave(A,1,15/175,sin(2π*1397x)+sin(2π*147x)+sin(2π*311x))
makewave(A,1,15/175,sin(2π*1480x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,15/175,sin(2π*1661x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,60/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*131x)+sin(2π*262x))
makewave(A,1,60/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*466x)+sin(2π*622x))
makewave(A,1,30/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*262x))
makewave(A,1,30/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*370x)+sin(2π*466x))
makewave(A,1,30/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1865x)+sin(2π*262x))
makewave(A,1,90/175,sin(2π*831x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*247x))
makewave(A,1,60/175,sin(2π*831x)+sin(2π*1245x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*349x)+sin(2π*415x))
makewave(A,1,30/175,sin(2π*1245x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2489x)+sin(2π*247x))
makewave(A,1,30/175,sin(2π*1245x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2489x)+sin(2π*415x))
makewave(A,1,60/175,sin(2π*1245x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2489x)+sin(2π*415x)+sin(2π*494x))
makewave(A,1,60/175,sin(2π*1109x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*139x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*1109x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*415x))
makewave(A,1,30/175,sin(2π*1109x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*622x))
makewave(A,1,30/175,sin(2π*1109x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*554x))
makewave(A,1,30/175,sin(2π*1109x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*415x))
makewave(A,1,30/175,sin(2π*1109x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*311x))
makewave(A,1,30/175,sin(2π*1109x)+sin(2π*1480x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*277x))
makewave(A,1,120/175,sin(2π*932x)+sin(2π*1245x)+sin(2π*1661x)+sin(2π*2217x)+sin(2π*311x)+sin(2π*415x)+sin(2π*466x))
makewave(A,1,120/175,sin(2π*1568x)+sin(2π*932x)+sin(2π*1245x)+sin(2π*2217x)+sin(2π*147x)+sin(2π*311x))
makewave(A,1,60/175,sin(2π*0x)+sin(2π*208x)+sin(2π*311x)+sin(2π*494x))
makewave(A,1,60/175,sin(2π*622x)+sin(2π*784x)+sin(2π*208x)+sin(2π*311x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*208x)+sin(2π*311x)+sin(2π*494x))
makewave(A,1,60/175,sin(2π*587x)+sin(2π*208x)+sin(2π*311x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*622x)+sin(2π*208x)+sin(2π*311x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*622x)+sin(2π*208x))
makewave(A,1,30/175,sin(2π*622x)+sin(2π*311x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*415x))
makewave(A,1,60/175,sin(2π*622x)+sin(2π*494x))
makewave(A,1,60/175,sin(2π*698x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*494x))
makewave(A,1,120/175,sin(2π*466x)+sin(2π*587x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,60/175,sin(2π*523x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*622x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*622x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*622x)+sin(2π*349x))
makewave(A,1,60/175,sin(2π*466x)+sin(2π*587x)+sin(2π*466x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*233x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*208x))
makewave(A,1,60/175,sin(2π*466x)+sin(2π*587x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,90/175,sin(2π*466x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,60/175,sin(2π*466x)+sin(2π*587x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*831x)+sin(2π*233x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*831x)+sin(2π*185x))
makewave(A,1,30/175,sin(2π*784x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*784x)+sin(2π*466x))
makewave(A,1,30/175,sin(2π*698x)+sin(2π*415x))
makewave(A,1,30/175,sin(2π*698x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*349x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*311x))
makewave(A,1,30/175,sin(2π*698x)+sin(2π*277x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*247x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*698x)+sin(2π*247x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*698x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*698x)+sin(2π*494x))
makewave(A,1,30/175,sin(2π*587x)+sin(2π*698x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*247x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*466x))
makewave(A,1,30/175,sin(2π*523x)+sin(2π*622x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*587x)+sin(2π*247x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*587x)+sin(2π*370x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*587x)+sin(2π*466x))
makewave(A,1,30/175,sin(2π*466x)+sin(2π*587x)+sin(2π*370x))
play 1
end sub

ルミナス 後日記載予定
本当は音楽ファイルをアップロードする予定もあったが、著作権的にいろいろ問題が有りそう。
パズルオブメモリーズが11月下旬リリース予定なのに、いまだリリースされない。
パズルオブメモリーズがリリースされた時に、これの完全版が出来上がるでしょう。
記事検索
アクセスカウンター

タグクラウド










































  • ライブドアブログ