shingoushori's dialy

音信号処理を専ら研究していた元博士後期課程の学生によるメモ

Web Audio API で、Sidechain Compressor を試作

Web Audio API で, Sidechain Compressor を試してみました.

作ってみたのが↓こちら. 
File1についてcompressorの係数を算出し, File2の音量を操作します.
playで同時再生です.

ポイントであろう事柄が↓こちら.
・DynamicsCompressorから, 抑制係数のdB表現を.reduction.valueで取得
・抑制係数を, Gainの.gain.valueに書き込み
・ScriptProcessorに, 毎フレームで実行してほしい処理を記述
・処理させたいNodeは,音を出力させたくなくとも出力まで繋ぐ

<参考>
SideChaining with AudioParams

Web Audio API で、左右チャネルを入れ替えて再生

Web Audio API で, チャネルの抜き挿しを試してみました.
抜き挿しそれぞれ, 
抜き : ChannelSplitter
挿し : ChannelMerger
を.createXXXXすると,
.connect時の引数で抜き差しするチャネルを選択できるようだ.

作ってみたのが↓こちら.
File1はそのまま, File2は左右入れ替え, playで同時再生です.

JavaScript および Web Audio API のはてなブログへの埋め込み

前回、コードを地の文に貼っていたわけでして、
埋め込む方法を探してきました。

埋め込んだのが、こちら。

ローカルで動かした時より、再生にもたつきを感じます。
いたしかたなし也。

 

<参考>
みかづきブログ その3 はじめてのWebAudioAPI

jsdo.itなる、コードコミュニティだそうで。
JSFiddleなるサイトもあるようで...

ローカルの音データをWebAudio APIで開く

ローカルの音データをWebAudio APIで開いてみました.
二つの音データを一つのplayボタンで, 同時に再生開始します.
ブラウザは, Google Chromeで製作しています.

<input id="audio_file1" accept="audio/*" type="file" /> <audio id="audio_player1"></audio>
<input id="audio_file2" accept="audio/*" type="file" /> <audio id="audio_player2"></audio>
<button id="play">play</button>

<script type="text/javascript">
var context1 = new AudioContext();

var mediaSourceNode1 = context1.createMediaElementSource(document.getElementById("audio_player1"));
mediaSourceNode1.connect(context1.destination);

var mediaSourceNode2 = context1.createMediaElementSource(document.getElementById("audio_player2"));
mediaSourceNode2.connect(context1.destination);

audio_file1.onchange = function(){
var files = this.files;
var file = URL.createObjectURL(files[0]);
audio_player1.src = file;
};
audio_file2.onchange = function(){
var files = this.files;
var file = URL.createObjectURL(files[0]);
audio_player2.src = file;
};

function play(){
var files1 = audio_file1.files;
var file1 = URL.createObjectURL(files1[0]);
audio_player1.src = file1;
audio_player1.play();
var files2 = audio_file2.files;
var file2 = URL.createObjectURL(files2[0]);
audio_player2.src = file2;
audio_player2.play();

}

 

<参考にした記事>
Using local file for Web Audio API in Javascript
WebAudio APIによるWebブラウザ上のDJ Mixer

 

ローカルのファイルを開く例が意外にも少なかったのです...
このページ自体にどう実装できるかは、今のところ謎です...
ボタンは出ましたが、再生には至らないようで...

Simutransで, 特定の車種を一括変換

<欲望>
筆者は, 鉄道経営シミュレーションが好きである.
Simutrans(http://japanese.simutrans.com)は, 素晴らしい.

Simutransの保存データへの編集を試みる.

今回は, 特定の車種を一括変換する.

 

 

 

<Simutransのバージョン>
pak64のpak.japanで実験
Version 112.3 May 20 2013 r6520
OSは, Mac OS X Yosemite

 

<設定いじり>

セーブデータをxmlで書き出す設定にしておく.
simutrans/config/simuconf.tab の,
saveformat = bzip2

saveformat = xml
に書き換え

 

<例>

変換前の車種 : JNR_Class_DC_04(Diesel_Regular)
変換後の車種 : JNR_Class_DC_04(Original)

 

変換前のファイル名 : hoge.svg
変換後のファイル名 : fuga.svg
上書きしないよう, 変更前後のファイル名は異とするべき.

1. コンソールでセーブデータがあるディレクトリに移動

2. 以下のコマンドを実行

less hoge.sve | sed -e 's/<![CDATA[JNR\_Class\_DC\_04(Diesel\_Regular)]]>/<![CDATA[JNR\_Class\_DC\_04(Original)]]>/g' > fuga.sve

 コマンドであるから, 
・改行を入れず, 一続きで打ち込む
・エスケープ・シーケンスに気をつける

 

<問題点>

車種と連動して, 編成名も一括変換になる

 

ギターのエフェクタの自作に向けての、その参考Webページのメモ

ギターのエフェクタなりを自作しようとしている。

買い物の参考にした、Webページをメモ。

 

【武蔵野電波のプロトタイパーズ】mbedでデジタル・エフェクタを作ろう

 

ギター・エフェクターの自作改造【松美庵】
http://www.matsumin.net/cgi-bin/mtm_bbs/img/11992.gif

 

http://blog-imgs-21.fc2.com/l/u/c/lucythesoloist/sd1.jpg

整数の逆数、その2進数表現

1から16までの整数の逆数を、2進数で表現してみた.

<ソースコード>

digits=16;
max=2^(digits-1);

for hoge=1:16
disp([num2str(hoge,'%02d') ' ' dec2bin(hoge,digits) ' ' dec2bin(round(max/hoge),digits)]);
end

<算出結果>

01 0000000000000001 1000000000000000
02 0000000000000010 0100000000000000
03 0000000000000011 0010101010101011
04 0000000000000100 0010000000000000
05 0000000000000101 0001100110011010
06 0000000000000110 0001010101010101
07 0000000000000111 0001001001001001
08 0000000000001000 0001000000000000
09 0000000000001001 0000111000111001
10 0000000000001010 0000110011001101
11 0000000000001011 0000101110100011
12 0000000000001100 0000101010101011
13 0000000000001101 0000100111011001
14 0000000000001110 0000100100100101
15 0000000000001111 0000100010001001
16 0000000000010000 0000100000000000