カテゴリ:プログラミング( 43 )

性懲りもなく

先日、高校時代の友人から電話がありました。
年賀状のやりとりくらいしかしておらず、もう30年以上会っていません。
私の人付き合いは、FIFOフィルタがかかっているかのようなかんじで、次々にアップデートされてなんとなく古い付き合いが疎遠になっていたりします。
嫌っているわけではなく、人付き合いが苦手なので、なんとなく...そうなってしまうのです。
他の同時代の友人も含めて、年明けに会うことになりました。
久しぶりなので楽しみです。

と、関係ない話から書いてしまいましたが、上記のFIFOフィルタというのは、忘却のアルゴリズムです。
FIFO=First In First Out
先にあるデータを捨て、新しいデータに入れ替えていくフィルタ方式です。
脳内容量に限界があるので、古い記憶は捨てて新しいことを記憶する、とこんなイメージで良いと思います。
古くてもずっと覚えていることはありますが、ひょっとしたら、記憶したイメージが脳内変換を繰り返し、新しいイメージに置き換わっていたりするかもしれません。
いったん思い込むと、実際には無かった空想事が記憶となっていくことがあります。
だから、歴史的事実と符合しなくても、『そうだったんだー!!!』と泣きわめくなんてことも出てくる訳です。

と突然変わりますが、プログラミングをやっていると、思い通りの計算ができたときの爽快感を感じることができます。
オーディオ趣味で工夫を重ねて、思い通りの結果が出たときの爽快感とも似ています。
私の多自由度バスレフ計算プログラムは、他にないユニークなものですが、プログラミングが上手ではないため、やむを得ず、あとで一手間かけなければならない部分を妥協していたりします。
いま、改善したいと思っているのは、複数の多自由度バスレフ設計を一度にシミュレーション計算するプログラムですが、これは、行が周波数、列が設計をシミュレーションするケースになっています。
最初にプログラムをつくるときに、この行と列を逆にしたかったのですが、プログラミングのスキルがないので、現状のようになっています。
CSVファイルの行と列を入替える
参考になるC言語のプログラムを探していたのですが、数字と文字が入ったCSVファイルに拡張するのは簡単そうではありません。
脳内で空想するには、ポインタで二次元配列を作って行と列を入れ替えてファイルに書き込めばできそうです。
しかし、スキルがなくてできません。
ということで、また性懲りもなく参考書を買ってしまいました。
a0246407_07145091.png
読んだらまたスキャナーかあ...
資源の無駄遣いにならないようしっかり読まなければ...

[PR]
by mcap-cr | 2018-01-05 23:50 | プログラミング | Trackback | Comments(0)
皆様新年いかがお過ごしでしょうか。
暮から新年は意外に忙しく、まとまった時間はとれませんでした。
新年だからと云って、親をよんだりするのはなかなか大変です。
メインの仕事のほうは一般的ではないので置いておいて、オーディオのことを考えてみました。
オーディオといえば、まず、
(1)昨年からほったらかしにしているMCAP-CR箱の作品三作を完成させる。
この三作は、最も初心に戻った作品で思い入れもあります。
こういう使い勝手の良いサイズでそこそこの音が出せれば素晴らしいと思います。
(2)壊してしまったアンプを修理する。
私はヤマハのA-S300というローコストアンプを所有していますが2015年の3月に壊してしまい、その後パワーチップは購入したのですが、放ったらかしです。
今年は何とか修理して使えるようにしたいと思います(多分、一日頑張れば終わる程度ですが)。
(3)解析プログラムのドキュメントを完成させる。
これも2015年くらいからですが...
(4)解析プログラムの結果出力ファイルの行と列を入替える。
あまりたくさん並べてもできないので、このくらいにしておこうと思います。


[PR]
by mcap-cr | 2018-01-02 23:28 | プログラミング | Trackback | Comments(0)
多自由度バスレフ研究所のサイトで配布している解析プログラムは、2015年からは更新されていませんが、いずれまた機能の追加を試みるかもしれません。
今のところは、グラフィックスはまだまだ4階料の余地があるものの、解析プログラム自体は結構うまくできているのではないかと思います。
配布しているバージョンごとに、ソフトウェアのドキュメントとプログラムのソースコードを含めてはいます。
配布ソフトに添付されているドキュメントは、ソフトウェアを使用するという目的で作成されており、通常のソフトウェアであればこれで十分なのですが、次回の機能追加のために、自分でわかるようにしておかなければならないと考えています。

随分前に、ドキュメントを書く、とこのブログに書きましたが、まだできていません。
少しずつ追加していますが、どのように書けば、後でも分かるのか試行錯誤するのに、頭を使います。
プログラムには、書いているうちに何だかわからなくなるのを防止するために、コメントを記入してあります。
自分のプログラムの場合には、コメントがかなりの分量を占めており、書いた自分ならある程度付いていけるので、これでもいいような気がしますが、やっぱり、これでは、よくわからないのだろうと思います。
以前には、フローチャートを作成するのを断念したこともあります。
職業プログラマではない自分には、指導者がいないので、自己流でやっています。
下を見ればきりがありませんが、上を目指してなんとかドキュメントを完成させたいと思っています。


[PR]
by mcap-cr | 2017-12-05 23:59 | プログラミング | Trackback | Comments(2)
少し前に書いたのですが、FC2ウェブサイトは、ファイルサイズの制約ができてしまったので、WEBCROWに引っ越しています。
FC2もそのまま残っているのですが、更新は新しいWEBCROWで行っていますし、後からかかったファイルサイズの制限により、FC2のファイルの一部は無くなっています。
このため、metaタグを使って、自動でWEBCROWに飛ぶようにしてみました。
タグは、
<META HTTP-EQUIV="Refresh" CONTENT="1;URL=http://mcap.webcrow.jp/indexj.html">
のような感じです。
ただし、excite blogの制限で、上記の内容はタグと見なされてしまい使用できないので、"<"のかわりに日本語の"<"を使っています(これで回避できたが、コピペしても使えないのでご注意ください)。

上のCONTENT="の後ろの1は、1秒後に飛びます。
またURL=の後ろは、飛ぶ先です。

古いページをブックマークされている方、リンクを貼っていただいている方は、
http://mcap.webcrow.jp
のほうにリンクを変更していただきたくお願いいたします。
[PR]
by mcap-cr | 2016-01-28 23:07 | プログラミング | Trackback | Comments(0)

Pythonに挑戦

最近更新をサボっていたら広告がトップに表示されるようになってしまいました。
ゆっくりゆっくりですが、プログラム言語のPythonの勉強を徐々に始めました。
正直云ってプログラム言語は難しいです。
何から何までC言語でできるわけではないし、Windowsネイティブな言語は嫌いなので、Pythonを始めたというものです。
Pythonは、計算が遅いので、多自由度バスレフのシミュレータには向いていませんが、LibreOfficeのマクロに使えたりして結構便利です。
時間をかけて覚えていきたいと思います。
面白いプログラムができたら紹介していきたいと思います。
[PR]
by mcap-cr | 2015-07-02 23:13 | プログラミング | Trackback | Comments(0)
まだ始めたところで、公開の予定は立っていませんが、シミュレーションプログラムのドキュメントを作りはじめました。
コンピュータプログラムは、あくまでも、書かれたままに動作するのですが、間違って書けば間違ったとおり正しく動作します。
かように素直なのがプログラミングの特徴です。
問題は、書いた本人が中身を忘れてしまうことです。
公開済みのシミュレーションプログラム現状最終版は、以下の4つのモジュールで構成されています。

(1)離散フーリエ変換モジュール
(2)離散フーリエ変換の一部分だけを実行するモジュール
(3)漸化式の逐次計算モジュール
(4)メインモジュール

このうち、2番目のモジュールは、非常に短い記述なので簡単ですが、それでも、『何故このような処理をしたのか』ということを忘れています。
コンパイルしたプログラムがそれらしく動作しているからと云って、正しくプログラミングできた、とならないのが、プログラミングの難しいところです。

目標は3ヶ月くらいとしたいと思います。
私のコードを読んだ人は極々少数のようですので、『お楽しみに!』とも書けないところですが...
[PR]
by mcap-cr | 2015-02-02 06:50 | プログラミング | Trackback | Comments(0)
標準MCAP-CR(ダブルバスレフ、バスレフ、密閉、バッフルも可能)のシミュレータプログラムを更新しました。
日本語、英語の説明書が付属しています。
今度のバージョンは、箱の設計条件を複数同時に解析可能です。
このため、箱の容積やバスレフダクトの適正値を探すために何度もシミュレータプログラムを実行する必要がなくなりました。
実用性は相当高くなったと思います。
コマンドラインからの実行ですが、結果がCSV形式で出力されるので、他のソフトウェアで、簡単にグラフ表示できます。力学モデルを基にしたダブルバスレフのシミュレータは他にないと思いますので、遊んでみてください。
このソフトを元に、記事を書いていきたいと思います。

ダウンロードはこちらから
[PR]
by mcap-cr | 2015-01-02 17:33 | プログラミング | Trackback | Comments(0)
みなさんいかがお過ごしですか?
ブログの更新はいつも通勤中です。
シミュレータプログラムの更新も通勤中にやっています。
なかなかまとまった時間がとれないですね。

さて、CUIバージョンですが、現在改変が進んでおり、複数の条件でシミュレーション結果が比較できるようになりました。
a0246407_6475619.png

この結果、箱の容量を少しずつ変えたり、バスレフダクトサイズを少しずつ変えたりして、比較するのが容易になりました。
もう少し改善してリリースする予定です。
ダブルバスレフにも(シングルバスレフにも)使えるので、結構役立つと思います。
上のグラフは、改変中のシミュレータでシミュレーションした結果例です。
[PR]
by mcap-cr | 2014-12-25 06:51 | プログラミング | Trackback | Comments(0)
前々回、シミュレータのマイナーチェンジにバグがあると書きましたが、
バグではなかったようです。
不自然な設計の値を入れると、モデル式が対応できず、発散してしまったりします。
今回の問題は、まさしくこの点が問題の原因でした。
計算の解像度を細かく設定し直したら、計算できました。

ただ、新たな疑問が湧き上がりした。
解像度をどんどん高めていくと、高域側(200~400Hz)のゲインが変わります。
こういう問題は、数値解析にはつきものです。
安定した結果を出すためには、現在の倍精度から更に有効桁数を増やしたりしなければいけないのかもしれません。
有効桁数を増すと、計算時間が長くなります。
今回プログラムを見直して実行速度を改善したのですが、別な問題が出るかもしれません。
[PR]
by mcap-cr | 2014-12-15 12:38 | プログラミング | Trackback | Comments(0)

なぜC言語なのか

私は、バスレフのシミュレーションプログラムを、C言語で書いています。
C言語は1970年代に生まれた古いプログラミング言語で実績は多くありますが、古いため、今はさほど人気はないようです。
では、なぜC言語を選んだのか考えてみました。


(1)コンパイラが無料で手に入る
当初はさらに古いFORTRANで書こうと思っていましたが、適切なコンパイラが見付かりませんでした。
今は、GCCにもFORTRANが含まれていますが、当時は気付きませんでした。
(2)ウェブ上に情報がたくさんある
これはプログラミングを学ぶ上で重要なことです。
その前にもCに関する書籍2桁冊は購入していると思いますが、書籍ではなかなか難しいところもあります。
ウェブでは知りたい情報がピンポイントで選べるところがメリットでしょう。
(3)少しだけ知っていた
少しでも知っていると始めやすいものです。
(4)他の言語をあまり知らない
比較的知っていたのは、古いBASIC、FORTRAN、EXCEL VBAといったところでしょうか。
Visual BasicとかVisual C++, Borland C++でも調べながらできない訳ではないのですが、あまりひとつのプラットフォームに依存するのもどうか、と。


C言語は、ハードウェアに近い言語と云われ、ハードを直接操作するのに強みがあるどうですが、自分はそういうことは全くできません。
計算だけならFORTRANのほうがよさそうですが、Cで書いてみると、記述のしやすさは大して変わらないように思います。
自分のプログラムは、Cの能力の1パーセントも使っていませんが、それで知りたいことが計算できててしまうのが強みです。
五十の手習いですが、始めるのに遅すぎることはありません。
研究会にプログラミング分科会をつくるとか....無理そうですが。

さて、今年も忘年会か新年会をやりたいと思っています。
あとで、メーリングリストで連絡します。

最後に、
必ず投票に行きましょう!
投票先は、マスコミに操作された情報に惑わされず、自分で選びましょう。
マスコミは基本的に自分の都合で記事を作るので信じてはいけません。
C言語では儲からないのでプロモートしないのと同じです。
自分の目で選んで日本を創っていきましょう。
[PR]
by mcap-cr | 2014-12-12 06:57 | プログラミング | Trackback | Comments(2)

工学オーディオに取組むオカルト嫌いです。


by MCAP-CR