あけましておめでとうございます@2012(平成24年)
| 固定リンク
| トラックバック (0)
先の双二次型IIRフィルタの係数を求めるRubyスクリプトを書きました。
8KHzでしか試してませんが適当に直して使ってみて下さい。
#!/bin/ruby -Ks
#
require "optparse"
#
# 双二次型IIR係数算出
#
class Biquad
# 双曲線関数
def sinh( x )
return ( ( Math.exp(x) - Math.exp(-x) ) / 2.0 );
end
# LPF
def lpf
$b0 = (1.0 - $Cs)/2.0
$b1 = 1.0 - $Cs
$b2 = (1.0 - $Cs)/2
$a0 = 1.0 + $Alpha
$a1 = -2.0 * $Cs
$a2 = 1.0 - $Alpha
end
# HPF
def hpf
$b0 = (1.0 + $Cs)/2.0
$b1 = -(1.0 + $Cs)
$b2 = (1.0 + $Cs)/2.0
$a0 = 1.0 + $Alpha
$a1 = -2.0 * $Cs
$a2 = 1.0 - $Alpha
end
# BPF
def bpf
$b0 = $Alpha
$b1 = 0
$b2 = -$Alpha
$a0 = 1 + $Alpha
$a1 = -2 * $Cs
$a2 = 1 - $Alpha
end
# Notch(BEF)
def notch
$b0 = 1.0
$b1 = -2.0 * $Cs
$b2 = 1.0
$a0 = 1.0 + $Alpha
$a1 = -2.0 * $Cs
$a2 = 1.0 - $Alpha
end
# Low Shelf
def l_shelf
$b0 = $A*( ($A+1.0) - ($A-1.0)*$Cs + 2.0*Math.sqrt($A)*$Alpha )
$b1 = 2.0*$A*( ($A-1.0) - ($A+1.0)*$Cs )
$b2 = $A*( ($A+1.0) - ($A-1.0)*$Cs - 2.0*Math.sqrt($A)*$Alpha )
$a0 = ($A+1.0) + ($A-1.0)*$Cs + 2.0*Math.sqrt($A)*$Alpha
$a1 = -2.0*( ($A-1.0) + ($A+1.0)*$Cs )
$a2 = ($A+1.0) + ($A-1.0)*$Cs - 2.0*Math.sqrt($A)*$Alpha
end
#High Shelf
def h_shelf
$b0 = $A*( ($A+1.0) + ($A-1.0)*$Cs + 2.0*Math.sqrt($A)*$Alpha )
$b1 = -2.0*$A*( ($A-1.0) + ($A+1.0)*$Cs )
$b2 = $A*( ($A+1.0) + ($A-1.0)*$Cs - 2.0*Math.sqrt($A)*$Alpha )
$a0 = ($A+1.0) - ($A-1.0)*$Cs + 2.0*Math.sqrt($A)*$Alpha
$a1 = 2.0* ( ($A-1.0) - ($A+1.0)*$Cs )
$a2 = ($A+1.0) - ($A-1.0)*$Cs - 2.0*Math.sqrt($A)*$Alpha
end
#
def calc
#
$Band = 10.0 ** ( $W / 20.0 )
$Q = 1.0 / Math.sqrt( 2.0 )
$Omega = 2.0 * Math::PI * $F / $Fs
$Sn = Math.sin( $Omega )
$Cs = Math.cos( $Omega )
$Alpha = $Sn * sinh( Math.log(2.0) / 2.0 * $Band * $Omega / $Sn )
$A = 10.0 ** ( $G / 40.0 );
end
#
def set_freq( freq )
$F = freq
calc
end
#
def set_w( w )
$W = w
calc
end
#
def set_g( g )
$G = g
calc
end
#
def fixed
c0 = (($b0 / $a0)*(1<<14)).round
c1 = (($b1 / $a0)*(1<<14)).round
c2 = (($b2 / $a0)*(1<<14)).round
c3 = (($a1 / $a0)*(1<<14)).round
c4 = (($a2 / $a0)*(1<<14)).round
return [c0,c1,c2,c3,c4]
end
#
def float
c0 = $b0 / $a0
c1 = $b1 / $a0
c2 = $b2 / $a0
c3 = $a1 / $a0
c4 = $a2 / $a0
return [c0,c1,c2,c3,c4]
end
#
def initialize( sampling_rate )
$Fs = sampling_rate
$F = 1000.0
$W = 6.0
$G = 6.0
calc
end
end
#
################################################################################
# q-biquad.eb <-lhbnLH FREQ> [-w val] [-g gain]
# -l : LPF
# -h : HPF
# -b : BPF
# -n : Notch
# -L : Low Shelf
# -H : High Shelf
# -w : Carve Parameter
# -g : Gain Parametre
################################################################################
flt = Biquad.new(8000.0)
flt.set_freq(1000.0)
flt.set_w(5.0)
flt.lpf
#p flt.fixed
proc = ""
opt = OptionParser.new
# LPF
opt.on("-l freq"){ |arg|
flt.set_freq( arg.to_f )
proc = "-l"
}
# HPF
opt.on("-h freq"){ |arg|
flt.set_freq( arg.to_f )
proc = "-h"
}
# BPF
opt.on("-b freq"){ |arg|
flt.set_freq( arg.to_f )
proc = "-b"
}
# Notch
opt.on("-n freq"){ |arg|
flt.set_freq( arg.to_f )
proc = "-n"
}
# LowShelf
opt.on("-L freq"){ |arg|
flt.set_freq( arg.to_f )
proc = "-L"
}
# LowShelf
opt.on("-H freq"){ |arg|
flt.set_freq( arg.to_f )
proc = "-H"
}
# W
opt.on("-w val"){ |arg|
flt.set_w( arg.to_f )
}
# G
opt.on("-g val"){ |arg|
flt.set_g( arg.to_f )
}
#
opt.parse!
flt.calc
case
when proc == "-l" then
flt.lpf
when proc == "-h" then
flt.hpf
when proc == "-b" then
flt.bpf
when proc == "-n" then
flt.notch
when proc == "-L" then
flt.l_shelf
when proc == "-H" then
flt.h_shelf
end
#
p flt.fixed
| 固定リンク
| コメント (0)
| トラックバック (0)
処理ブロック図と係数算出を双二次型IIRフィルタ.pdfに備忘としてまとめた。
元は RBJ Audio EQ cookbook。
| 固定リンク
| コメント (0)
| トラックバック (0)
ウチの校区は一応加入手続きみたいなことをやっていたと思うけど「入らない」って人を聞いたことがない。他にも何か問題があるんだろう。
| 固定リンク
| コメント (0)
| トラックバック (0)
図書館で借りていたPTA再活用論 から気に入った言葉を抜粋。ログらせてもらう。
| 固定リンク
| コメント (0)
| トラックバック (0)
寄せられた意見をログっておく。
【PTA会費について】
【委員選出の仕組みについて】
【活動や情報公開について】
会費の口数以外は全部カウンター打てそうな気がする。
自分も凝り固まった人間で「PTAってこうあるべきだぁ~!」って思ってた方だけど、それに苦しめられる立場の人間もいることに気付くべきだった。私もそれで傷ついた。
ボランティアの内部で各自の役割を反省会とかいって評価し合ってどうするべ?そこで出た反省が次回に活かされるとも思えないんだけど。まともな引き継ぎするワケでもないし何かあれば前任者に聞けばよかろう。
もっと緩いアソシエーションで良いかと思うんだけど。会社みたいな組織しかイメージできないんだろうか。そんなんじゃ私が最初におちこぼれてしまう。orz
| 固定リンク
| コメント (0)
| トラックバック (0)
今日生まれた。午前10時24分だったかな。3574グラム。
病院行ったのが8時過ぎで生まれたのがその時間って早過ぎやしないか?凄いぞ奥さん!∑ヾ( ̄0 ̄;ノ
私は昨日久しぶりに深酒して帰ってきたので遠慮してたらしいが当日1時過ぎからズキズキと陣痛来てたらしい。久しぶりの出産で「陣痛ってこんなモンやったっけ」と看過してしまうところは凄すぎ。
今回の人はこんな感じ。
顔全部をなかなか見せてくれない。
生まれた時、病院の看護婦さんが撮ってくれた写真があったけど奥さんはそれを見て「あっ!高木ブー」と思ったそうです。ん~鼻から下が確かにちょっとブサイク。まぁ男だし逞しく生きてくれればイイ。
問題は名前。予定日より10日近く早かったのでまだ決まってない。漢和辞典買った方が良いかなぁ。
| 固定リンク
| コメント (0)
| トラックバック (0)
こんなのに行ってきた。場所はハイアット リージェンシー 京都。そこに似合わない人たち400人弱集めたイベント。これってリクルーティングですよね。こんなジジイも参加してごめんなさい。アルコール類は沢山いただきました。内容は他にブログに書いている方がいらっしゃるだろうからググってごらんください。
私は最後の交流会で「グーグルってCPUパワー足りてるんですか?」って質問をスピーカーの方々にお尋ねしたモノです。分野によって答えが違いましたね。
しかしグーグルは英語圏(合衆国、カナダ)で音声認識サービス始めてたんだ。へぇ~って感じ。これからシルバー人口の増える日本に速攻ランチすれば年寄りマーケット取れるかな。でも今じゃ無いと無理よね。これからの世代は逆にパソコン使えるけど携帯使えないって世代がリタイアしていくから。
まぁ何かと考えさせられるイベントでした。イベント費用だけでウチの仕事場の年間研究費超えてると思うんだけど…イヤになるよなぁ。隣の芝生は真っ青だったよ。真っ青。キレイだねぇ…。
| 固定リンク
| コメント (0)
| トラックバック (0)
今年は参加出来なかった。![]()
そんだけ真面目に仕事してるってことか。それでも祝辞は作った。副会長に代弁して貰う為。あくまでベースとなるだけで副会長のアドリブに期待する面もある。でも自分の思いは込めたつもり。
昨年のエントリーが凄くヒットしたので今年のも載せておく。皆さんの参考になれば良いのだが…。
おはようございます。PTA会長のえむふるです。
PTAを代表して御祝いの言葉を申し上げます。
今日、○×幼稚園に入園したみんな「おめでとうございます」今日から○×幼稚園に通うことになりましたが、みんな大丈夫ですか?明日からもおうちの人と一緒に通えますか?
| 固定リンク
| コメント (0)
| トラックバック (0)
おはようございます。PTA会長の○○○○と申します。
PTAを代表して御祝いの言葉を述べさせていただきます。
今日、○×幼稚園を卒園される皆さん、おめでとうございます。
みんな大きくなりましたね。幼稚園に通い始めてからどれくらい大きくなりましたか?背の高さはどうですか?体の重さはどうですか?体のいろんなところが大きくなったと思います。
幼稚園に通っていろんなことを先生達から教わり習ったと思います。今日は会長さんからもいくつかお話しさせて下さい。
みんなはこれから幼稚園を卒園して小学校に通いますがみんなが同じ小学校に通うわけではありません。みんなそれぞれ通う小学校は違います。☆※小学校、△□小学校、◎%小学校、…。
まず小学校に行ったら友達を沢山作ってください。この幼稚園から同じ小学校に行く子が居なくて寂しい気持ちになっている人がいるかもしれないけど新しい友達を作ればそんなことすぐに忘れます。
そして新しい友達を作るのに大事なことは…もう幼稚園で習ってます。あいさつです。朝はおはよう、昼はこんにちは、夜はこんばんは。このあいさつができる人なら「一緒に遊ぼう!」と元気を出して誘うことが出来ると思います。
そして友達と仲良くしていく為には約束を守るようにしてください。これはお家の人ともですが約束したことは守りましょう。
以上、会長さんがお話ししたかったことを終わります。
次に大人の人たちにお話しします。もう少し強い耳で聞いていて下さい。
保護者の皆様、本日はお子様方の保育修了おめでとうございます。
私も保育修了を迎えた保護者の一人として嬉しく気持ちでいっぱいです。少し寂しさも含んでますが。今から二年あるいは三年前この園の校門をくぐっ
た時のことを思い出すとひとしおかと思います。また皆様にはに私のような者をPTA会長として引き立てていただきましてありがとうございました。またそれ
ぞれの小学校でPTAに属することになるかと思いますがそちらでも同じようにPTA活動を盛り立てていただきますように御願い申し上げます。
先生、職員の方々、本日はおめでとうございます。
「人生で必要な知恵はすべて幼稚園の砂場で学んだ」ではありませんがその場を提供し暖かい目で見守っていただきありがとうございました。幼児から児童となり成長する為の強い根っこを育てていただいたかと思います。
最後になりましたが御来賓の皆様におかれましては御多用の中、御臨席賜りまして誠にありがとうございます。今日、2001年度生まれの子どもたち、21世紀第一号の卒園児を送り出すことが出来ました。これからも地域の宝として暖かく見守っていただければと思います。
以上をもって私からの祝辞とさせていただきます。
-----
以上の様な感じで話そうと思ったんですけど涙を抑えるので![]()
精一杯で全然違う内容になったかと思う。しかしPTA会長になって目標だった修了式祝辞を行うことが出来て本当に嬉しい。あの位置からの子どもたちの表情を窺えた保護者は私だけだ。私だけの宝物にしておきたい。ありがとう!
| 固定リンク
| コメント (0)
| トラックバック (0)
最近図書館で借りて読んだ『幼稚園で育つ―自由保育のおくりもの』に書いてあったのでメモ
転勤してまもなくの頃、「小学校で一年生がきちんとお話が聞けないのは幼稚園の自由保育のせいだ。自由保育をやめさせて、きちんとしつけをしてほしいといわれてきた」と幼稚園の先生方に話したことがありました。そのとき、ある先生が「自由保育という保育はありません。正確に言うと、幼児の主体性を重んじる自由な形態の保育です。自由保育というのは保育の形態ではなく、保育思想です」と教えてくれました。
なんかウチの子が通う幼稚園が気になってきた。
ついでに自由保育について定義みたいなモノも載っていたので続けてメモ
これまで保育界では、自由保育と一斉保育、あるいは自由保育と設定保育という言葉の使い方がしばしばなされてきた。そして、自由保育とは幼児中心の保育形態であり他は保育者中心の保育形態であると考えられてきた。しかし、自由保育というのは、子どもの興味・関心に基づく、自主的・主体的な活動を尊重しようとする保育思想に支えられた保育観、ないしは保育哲学であると考えられる。したがって、自由保育の展開中にもさまざまな保育形態が混在することになるので、自由保育はそのまま、子どもの「自由活動形態」と同じではない(秋山和夫『保育基本用語辞典』第一法規)
理念・思想って部分を保護者は酌み取れるのか。答えは子どもたちの変化を観察するしかないんでしょうねぇ。
| 固定リンク
| コメント (0)
| トラックバック (0)
先のエントリーを C で書いてみるとこんな感じ。
あんまり変わらんのはそれだけ脳が老いているということか…orz
---
#include <stdio.h>
#include <math.h>
typedef struct {
int scale;
int n;
int m;
int m2;
double *lfr;
double *lfi;
} FIR_TYPE;
FIR_TYPE *init_filter ( int scale )
{
FIR_TYPE *flt = (FIR_TYPE*) malloc ( sizeof ( FIR_TYPE ) );
flt->scale = scale;
flt->n = (1<<scale+4);
flt->m = (1<<scale)-1;
flt->m2 = flt->m + 1;
flt->lfr = (double*) calloc ( flt->n, sizeof ( double ) );
flt->lfi = (double*) calloc ( flt->n, sizeof ( double ) );
return ( flt );
}
void deinit_filter ( FIR_TYPE *flt )
{
free ( flt->lfr );
free ( flt->lfi );
free ( flt );
}
double* lpf_filter ( FIR_TYPE *flt,
double cut )
{
double *re, *im, *c;
int i, k;
int n2 = (int)( flt->n * cut + 0.5 );
for ( i = 0 ; i < n2 ; i++ )
flt->lfr[i] = flt->lfr[flt->n-1-i] = 1.0;
re = (double*) calloc ( flt->m2, sizeof ( double ) );
im = (double*) calloc ( flt->m2, sizeof ( double ) );
for ( i = 0 ; i < flt->m2 ; i++ ) {
for ( k = 0 ; k < flt->n ; k++ ) {
double omega = 2.0 * M_PI * i * k / (double)(flt->n);
re[i] = re[i] + flt->lfr[k] * cos(omega) - flt->lfi[k] * sin(omega);
im[i] = im[i] + flt->lfi[k] * cos(omega) - flt->lfr[k] * sin(omega);
}
}
c = (double*) malloc ( sizeof ( double ) * flt->m2 * 2 );
for ( i = 0 ; i < flt->m2 ; i++ )
c[i] = re[flt->m2-1-i] / (double)(flt->n);
for ( i = 1 ; i < flt->m2 ; i++ )
c[flt->m2-1+i] = c[flt->m2-1-i];
c[flt->m2*2-1] = 0.0;
free ( re );
free ( im );
return c;
}
int main ( int argc,
char *argv[] )
{
FIR_TYPE *flt = init_filter( 9 );
double *coef;
int i;
coef = lpf_filter( flt, 0.25 );
for ( i = 0 ; i < flt->m2*2 ; i++ )
printf ( "%f\n", coef[i] );
free ( coef );
deinit_filter ( flt );
return 0;
}
| 固定リンク
| コメント (0)
| トラックバック (0)
こんなのを発掘した。とりあえず係数が計算できたらイイや、って人には役立つんじゃないでしょうか。
###########################
# FIRフィルタ設計
###########################
class FirDesign
def initialize( scale )
@scale = scale;
@n = (1<<@scale+4);
@m = (1<<@scale)-1;
@m2 = @m + 1;
@lfr = Array.new(@n,0.0);
@lfi = Array.new(@n,0.0);
end
#
def lpf( cut )
n2 = (@n*cut).round;
n2.times do |i|
@lfr[i] = 1.0;
end
(@n-n2..@n).each do |i|
@lfr[i] = 1.0;
end
end
#
def hpf( cut )
n2 = (@n*cut).round;
(n2..@n/2-1).each do |i|
@lfr[i] = 1.0;
@lfr[@n/2-1+@n/2-i] = 1.0;
end
p @lfr;
end
#
def calc
re = Array.new(@m2,0.0)
im = Array.new(@m2,0.0)
@m2.times do |i|
@n.times do |k|
omega = 2.0 * Math::PI * i * k / (@n*1.0);
re[i] = re[i] + @lfr[k] * Math.cos(omega) - @lfi[k] * Math.sin(omega);
im[i] = im[i] + @lfi[k] * Math.cos(omega) - @lfr[k] * Math.sin(omega);
end
end
@m2.times do |i|
re[i] = re[i] / (@n*1.0);
im[i] = im[i] / (@n*1.0);
end
#
vr = [];
re.reverse.each do |r|
vr << r;
end
(1..@m).each do |i|
vr << re[i];
end
vr << 0.0;
return vr;
end
end
###########################
# こんな風に使うんだけどセンスないなぁ
###########################
fir = FirDesign.new( 4 )
fir.lpf( 0.25 );
fir.calc.each do |c|
p c;
end
| 固定リンク
| コメント (0)
| トラックバック (0)
家の近所に入水口があるそうなので幼稚園の通園路に止まっていた。この写真では伝わりにくいけど結構大きいというか高い。消火栓のポールの高さと比べてみると想像できると思います。
| 固定リンク
| コメント (0)
| トラックバック (0)
全然使いこなしてないけどEmacsが無いと始まらない。
それが最近じゃ使えない会社が増えてると言うから驚き。
MSが作ったとなれば難なく使えて会社勤めするにも障害が一つ消えるんだけど…それがいつの日か分からないのでもう少し現実的な解を考えようかな。
とりあえずリンクだけ貼っておこう。
Linux/UNIX開発者の取り込み狙う?マイクロソフト、「Emacs.NET」を検討か
| 固定リンク
| コメント (0)
| トラックバック (0)