MOJO

Chord Electronics 社の Mojoが日本でも発売された。
興味を引かれたのは、ポータブルアンプとしては勿論だが、何よりもFPGAを利用したアンプが
この価格帯で手に入る事です。
FPGAはXilinx(ザイリンクス)社の Atrix7 。
知る術はありませんが、どんなアルゴリズムでどうプログラミングされているのか全容を知りたくなる。
私はオーディオマニアでも何でもないので、モバイル USB DAC とかポータブルアンプとかを深く
理解している訳ではない。
少年の頃に夢を抱いて鼓動が高鳴りだしたような感覚で、
”デジタルデータから本来あったであろう失われた情報を復元する。という事に99%成功しているのではないだろうか?
であれば、その考え方や技術、法則、アルゴリズムは宇宙全般に適用出来て失われた歴史の復元も可能にするような
ロジックが含まれていて・・・”
などと夢を膨らませてワクワクしてくる。
でもその後すぐに頭を持ち上げて脳に入り込む言葉が
 ”馬鹿だね!大袈裟なんだよ!それに君はそもそもDACの事をちゃんと理解していないだろう!” と。
で、はっと我に帰る。

現実に戻り、PHPで配列の全ての組合せを作って返却する関数・・・

$standardized = array(
	array('赤', '青', '黄'),
	array('10cm', '20cm', '30cm'),
	array('大', '中', '小')
);

$combi = combination($standardized);
var_dump($combi);

function combination($td_ary){
    if (!is_array($td_ary) || count($td_ary) < 2){
        return array();
    }

    $combi = array_shift($td_ary);
    while(count($td_ary)){
        $combi = combinationTwo($combi, array_shift($td_ary));
    }

    return $combi;
}

function combinationTwo($a, $b){
    $ret = array();
    foreach ($a as $v1) {
        foreach ($b as $v2) {
            $ret[] = array_merge((array)$v1, (array)$v2);
        }
    }

    return $ret;
}

と作ってみたが、これじゃ色々なところで紹介されている一般的なサンプルなので何か納得できない。
動くには動くけど・・・自分で考えてもっとindexだけを操作した別の方法を考えるべきだと反省し
仕事絡みなのでこれで一旦完了とし、別にちゃんとINDEXの組合せを構築するロジックを作る事に。
もちろん、出来たら差し替えます。