投稿

Nimbus

イメージ
JAVAでエフェクト・コンプレッサー自作の記録 6 JavaのGUI(Swing)にはいくつかのルック&フィールがあるがNimbusは一番新しいもの。 Nimbus は 2D ベクトルグラフィックスを使って描画されている。これはアイコンなどのイメージ画像が一切ないため、56KBのJARにすべてが収まっている。また画像でないため大きさ、解像度に対して自由度がある。Nimbusってかなり先端のGUIだと思う。軽くて、自由度があって、美しいのだ。 Nimbus Metal Nimbus以前のJava独自のルック&フィール。硬質で冷たい印象がする。 System Windowsクラシックのスタイル。システム準拠のルック&フィールになるが、環境によっては崩れるという問題がある。 CDE/Motif UNIX風のルック&フィール。 Nimbus表示するための設定 Swingの標準ではNimbusになっていないため、クライアント側で設定する必要がある。いくつか方法はあるようだが、ここでは以下のようにして設定した。 ファイル swing.properties へ記述する方法   テキストエディタで swing.properties という名のファイルを作成して以下の内容を書き込む。 # Swing properties swing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel そのファイルを以下のディレクトリに配置する。 C:\Program Files\Java\jre6\lib これだけでNimbusが標準となる。これでSwingで作られたものは、アプレットだろうが、アプリだろうがデフォルトでNimbusとして表示される。作る側としては普通にSwingでつくればよい。下記はSwingで作ったアプレット。サイン波の周期をスライドで可変させるだけのもの。 Applet failed to run. No Java Plug-in was found. ユーザーが何も設定しない場合は、ルック&フィールは互換性のためMetalが優先表示される。それをNimbus優先にさせるには、プログラムに以下を書き込むことで実現

Eclipseの導入

イメージ
JAVAでエフェクト・コンプレッサー自作の記録 5 試行錯誤するとなると、テキストエディタとコマンドプロンプトでは手間がかかりすぎるのでEclipseの導入を決めた。 http://www.eclipse.org/downloads/ あれこれ入っていないEclipse IDE for Java Developers (92 MB)を使用。 EclipseはJavaの開発環境として有名。元々はIBMで開発されたものがベースになっていて、現在オープンソースで開発されいている。つまり無料で使える。実はJavaだけでなくほかの言語の開発も可能。これも種類がいろいろあるけど、サーバ開発でもしなければ上記でいいのではないかな。 ソースコードを書くときは、Eclipseではソースコードの機能ごとに色分けしてくれて理解の助けにもなるし、何よりも見やすい。また間違ったことをすれば注意もしてくれる。メモ帳でやっているとコンパイルして、エラーがでないと打ち間違いすら気が付かないことも多いので楽できる。 JARファイル作成が手軽になった 複数のclassファイルをひとつにまとめて圧縮するjarファイルというものを簡単に作ることができる。Package Explorerでまとめたいパッケージを指定して右クリックで Export を選択。あとはウィザードに従って行くだけ。注意点としてはウィザードの途中でMain classを指定しないとうまく行かない。 コンプ製作の記録 1 Java 具体的に作ってみる 2 WAVについて 3 dBについて 4 コンプに必要な情報 5 Eclipseの導入 6 Nimbus 7 コンプの原理 8 コンプレッサーベータ版完成 9 NAMAGI Compressor

コンプに必要な情報

JAVAでエフェクト・コンプレッサー自作の記録 4 バイナリーファイルの読み書き WAVファイルを直接バイナリとして読み込んで処理することにした。Javaを調べてみると、音声ファイルを扱えるクラスもあるようだが、かなり調べた後に気づいたので、直接バイナリ処理をしようと思う。 WAVファイルは2バイトでひとつの値を表現するので、1バイトずつ読み込んだデータを結合して処理して、またバイトに戻して、バッファ出力させる。 入力はBufferedInputStreamクラスのreadメソッドを使うと実現できそうだ。 出力はBufferedOutputStreamクラスのwriteメソッドを使用。 テストしてみたが、33MBのWAVファイルを読み込んで出力するのに10秒かからない。これなら期待できる。 正規表現 (Regular Expression) ファイル名を処理するのに必要なのでちょっと勉強。 配列 アルゴリズムを考えていると、どうしても配列がほしくなるので調べてみたが、Javaの配列は固定で、配列の長さを臨機応変に変化させるにはテクニックが必要なようだ。必要に応じて配列を伸ばすせるようにしてみた。 コンプ製作の記録 1 Java 具体的に作ってみる 2 WAVについて 3 dBについて 4 コンプに必要な情報 5 Eclipseの導入 6 Nimbus 7 コンプの原理 8 コンプレッサーベータ版完成 9 NAMAGI Compressor

dBについて

JAVAでエフェクト・コンプレッサー自作の記録 3 音を扱う場合、dBがよく使われる。今回作るコンプレッサーでもdBで制御できるようにするため、基本的なところを理解しておくことにする。 G[dB] = 20log 10 y/x  G:デシベル換算した入力/出力比 x:入力 y:出力 下はデシベル[dB]から入出力電力比を表す計算式 。 P1:入力電力 P2:出力電力 x:入力(dB) P2/P1 =10^(x/10) 電力比を電圧比にして、対数の係数を2倍の20とする。さらに式を変形させれば今回の用途で使えるようになる。 P2 = P1*10^(x/20) 例として出力をデシベルで指定して -6dB、入力レベルを素のデータ 32767 としてみる。 関数電卓で計算 P2 = 32767 * 10^(-6/20) = 32767 * 10^(-0.3) = 32767 * 0.5012 = 16422  音量を-6dBつまり1/2にするなら本当は16384になるはずだが、そうなっていない。それは-6dBが、およそ1/2という意味だから。精度を上げるなら-6.0206dBぐらいの数字を入れないとだめ。-6.0206dBで計算すればちゃんと半分の16384になる。Javaでも確認してみる。 public class Log_test { public static void main(String[] args){ int db = -6 ; short p1 = 32767; double p1a = 0 ; short p2 ; p1a = (double)p1 * (Math.pow(10,db/20.0)); p2 = (short)p1a ; System.out.println("dB ="+ db + " \nP1 ="+ p1 + "\ndouble P1a = " + p1a); System.out.println("short P2 = " + p2); //dBを上記から逆計算して精度を確認 double db2 = (double)Math.log1

WAVについて

JAVAでエフェクト・コンプレッサー自作の記録 2 WAV(RIFF waveform Audio Format)ファイルは、非圧縮の音声データ記述ファイル。非圧縮の音声ファイルとしてはWindowsでは一般的。 調べてみて意外だったのは、これだけ広く使われているWAVにもかかわらず、ちゃんとした資料が見つからないこと。とりあえず断片的な資料から必要そうなところだけまとめてみる。 ファイルの中身はヘッダとデータで構成。実際に調べてみた。WAVファイルをバイナリーエディタで開けば16進数の羅列が見られる。以下はヘッダ部分でサンプリング周波数などの情報が4バイトないしは2バイト単位で書かれている。この後に音声データが2バイト単位で書かれている。 52 49 46 46 AC 58 01 00 57 41 56 45 66 6D 74 20 10 00 00 00 01 00 01 00 44 AC 00 00 88 58 01 00 02 00 10 00 64 61 74 61 88 58 01 00 00 この先データ ビット深度(音量の解像度)が 16bit の場合、データ部分は 2バイト、符号付リトルエンディアン(littel endian)で書かれている。ステレオの場合は、左、右と交互に記録されている。コンプでいじるのはデータ部分のみ。 扱える数値は16進数で 0x0000 ~ 0xFFFF まで。 10進数符号なしでは 0 ~ 65535 符号ありだと -32768 ~ 32767 実際のデータはこんな感じ 96 00 96 00 6D 00 A7 00 45 00 96 00 53 00 B7 00 8A 00 94 00 89 00 7A 00 A5 00 74 00 9A 00 6E 00 B3 00 63 00 A3 00 97 00 8E 00 77 00 A2 00 9A 00 7B 00 BF 00 7A 00 AA 00 78 00 97 00 9D 00 A7 00 AA 00 7B 00 C8 00 A1 00 9F 00 AF 00 B8 00 81 00 B5 00 AE 00 BF 00 A4 00 A9 00 A2 00 93 00 9E 00 ・・・・・ li

Java 具体的に作ってみる

JAVAでエフェクト・コンプレッサー自作の記録1 入門のサンプルは退屈なんで作りたいものを作ってみる。これが一番上達の近道じゃないかな? まずは音楽用のコンプレッサーを作ってみようと思う。音を圧縮するエフェクターであるが、VSTのプラグインではなくて、Javaで作るちゃちなもの。VSTのコンプをいくつか試したのだが、いろいろ不満があったので、原理を知る意味でも作ってみようと思う。 現状コンプの不満点 主に設定数値と実際が食い違っていることが多いことと、音が劣化すること。自作では、これらをなくそうと思う。できるか? またJavaで作るので、VSTプラグインではなくて、スタンドアローンで動作するものにする。WAVファイルを直接加工するようなスタイル。 まずやるべきこと Javaの勉強というよりは、もっと基礎的な知識を得るところからのようだ。とりあえず必要そうな知識は以下の通り。 WAVの仕様について デシベル(dB)について バイナリファイルの入出力実験 コンプレッサーの原理について 圧縮実験 アルゴリズム アタック、リリース アルゴリズム 配列の長さ変更について Java GUI Nimbusについて 開発環境の整備 Eclipse ドラッグ&ドロップ コンプ製作の記録 1 Java 具体的に作ってみる 2 WAVについて 3 dBについて 4 コンプに必要な情報 5 Eclipseの導入 6 Nimbus 7 コンプの原理 8 コンプレッサーベータ版完成 9 NAMAGI Compressor

Java環境作り

Javaでも勉強しようと思ってから、すでに5ヶ月経過・・・  まずはプログラムするための環境作りから。とりあえずOSはWindows XPでやっています。そのうちLinuxのUbuntuでもやってみようと思っている。 Java実行環境の準備 RE(Java Runtime Environment) サン・マイクロシステムズ社 (いつの間にかオラクル社に買収されていたよ。) 最新版 JRE 6 Update 20 約10MB http://www.java.com/ja/ 上記からダウンロード パソコン上で Java アプリケーションを動かすために必要なソフトウェア群であり、API、ツール類がセットになっている。パソコンには購入時に大抵入っているし、自動でアップデートもされるので、改めてインストールする必要はないかもしれない。ただバージョンが古いと実行スピードや、新しい機能を利用できないので、最新版を入れておきたい。 Java開発環境の準備 Javaプログラミングに必要な最小限の環境を整える JDK(Java SE Development Kit 6u20) サン・マイクロシステムズ社 最新版 JDK 6 Update 20 約77MB http://java.sun.com/javase/ja/6/download.html 上記からダウンロード Javaをプログラミングするには必須。各バージョンの名称が統一されていなくて、とても分かりにくい。Wikipediaがよくまとまっていて分かりやすい。ダウンロードできるエディションも多いので迷う。入門なのでトッピングのないシンプルなエディションを選択。 インストール ダウンロードしたexeをダブルクリックしてインストール パスの設定 システムのプロパティ > 詳細設定 > 環境変数 > PATH に下記を追加 C:\Program Files\Java\jdk1.6.0_20\bin; これでJavaプログラミングできる最小限の環境が整う。 次にサンプルを実行して確認する。 プログラムは下記の通り。(やさしいJavaより) class Sample1 { public static void main(String args[]

HPからGoogle Bloggerへ

同名のホームページから、こちらのブログへ切り替えていく予定です。やっと仕事も一段落したので、今のうちに一気にやってしまおうと思う。 インターネットは次の段階へ? 今回のブログ立ち上げついでに、最近のインターネットを調べてみたのだが、実にいろんな動きが出てきて面白くなってきている。HTMLもHTML5へ移行時期でFlashオンリーの時代もようやく終わりが見えてきた。それに追い討ちをかけるようにiPadも発売されたし。 クラウド・コンピューティング 最近個人的に、仕事プライベート共に作業方法が変化してきた。多くの作業をクラウド・コンピューティングにしつつある。クラウド・コンピューティングの定義はよく分からんけど、とりあえずWEBアプリを使いまくって、ネットに依存した方向になっている。もうローカルマシンに何でも溜め込む時代ではないと思う。無料の優れたWEBサービスも充実してきたので、本格的に移行できるようになってきた。何がよいかというと、数人の共同作業では、共有がとても便利だし、プレゼンも自分のPCを持ち歩かなくても何とかなってしまう。情報は一元管理できるので、数台のマシンを並行して使っている身としてはありがたい。またネットを中心にするとPC環境に縛られないので、もうWindowsばかり使わなくても何とかなる。これが個人的には嬉しいのだ。Windowsは使いたくないが本音。最近は Linux の Ubuntu ばかりで作業をしている。軽くてストレスのないオープン精神の環境はすばらしい。そのうちマックも再び使い出すかもしれない。また来年には発売されるだろうGoogle Chrome OS搭載機も興味がある。 Blogへ移行した理由 HPの制約の問題があったのでそれから解放されることと、複数のPCでの作業実現のため。特にトップページ以外リンクできないのは問題だった。あとは最近のブログの仕組みなどを勉強するためなど。 どこのブログサービスがよいか 多くの会社がブログを提供していて選択肢は多かった。いくつか試してみて、シンプルなページが作れそうだという理由で、Google Blogger に決定した。他社のサービスはレイアウトの制限が気になった。 不思議と Google Blogger って国内ではユーザーが少ないように思う。とりあえず、適当にレ

ホームベーカリー修理 エムケー

イメージ
エムケー精工株式会社 http://www.mkseiko.co.jp/ ホームベーカリー HBS401 1斤用 1996年ぐらいに 9800円で購入。 比較的安価なホームベーカリーだが、おいしく焼けると評判のMK製。焼きたてなら、そのままバクバク食べるのが一番おいしい。でも、さすがに14年も使うと調子が悪くなってきた。 症状 パンの底部、回転軸周辺の一部が黒くなってしまうというもの。はじめ回転部のメカの金属磨耗が原因かと思って、体に悪そうだと思ってパン焼きを中止したが、分解してみると違うようだ。パンの材料がパッキン内部に入り込んで、それが炭化したようだ。パンを焼くたびに、その入り込んだ炭が溶け出してパンに染み込んでいると思われる。それほど神経質になることではなさそうだ。とりあえずクリーニングで改善できる思う。 底のCリングをはずして、シャフトを抜く。クリーニング前は、手で回すと回転もぎこちなく、ゴリゴリとした印象。 シャフトを抜いた状態。はじめベアリングでも入っているものかと思ったら、あらら、シンプルでした。写真は汚れを拭き取った状態。抜いた直後は真っ黒だった。 構成部品。シンプルだ。いざとなったら、自作できそうなぐらい。 問題のパッキンとシャフト。かなり汚れているのがわかる。 パッキンは2重構造になっていて、その隙間に、パンの材料が入り込んで、焼けて炭になってたまっていた。これをクリーニングして、組みえ立てれば作業完了。組立後はシャフトの回転もスムーズになった。ただ、パッキンの一部が欠けていた。本当は交換したほうがよさそうだが、パッキンの硬化もなく、それほど問題はなさそうなので、このまま使用することにする。 早速焼いてみた。 パン底もきれいに焼けました。 修理2 130428 17年使ってきたパン焼き機。パッキンが劣化して動きが固くなったので、交換することにした。エムケーに電話したら、パッキンだけ買うことができるというので、取り寄せることにした。パッキンはオイルシールと呼ぶようだ。部品代は1050円+送料80円。微妙な価格だが、17年前の機種をサポートしているだけでもありがたい。大手では考えられないことだ。 下は劣化した

ルーペ PEAK ACHROMA 35 NO.2022-35

イメージ
ルーペ  PEAK ACHROMA 35 NO.2022-35 有効径 37mm 拡大率 4倍 表面処理 両面パープルコート 寸法 39φ×155×15mm 重量 67g  レンズ ガラスレンズ アクロマートレンズ 定価 6,405円 ここ数年3倍率程度のルーペ(虫めがね)の使用頻度が増えてきて、今まで使っていた台湾製の安物では疲れることが判明。どうせなら、ちゃんとしたルーペを買っておこうと思いピークを選択した。ネット上にはルーペの情報がほとんどないので、ピークなら大丈夫だろうという思いで購入したが、実際どんなもんだろうか。ピーク製品は好きで、写真用のルーペをいくつか持っているので安心感がある。あまり時代に流されていないというか、よいものを頑固に作り続けている感じがする。 ガラスレンズかプラスチックレンズか 最近の手持ちルーペは軽量化と非球面採用のためかアクリルレンズが多い。多少耐久性を高めるためのコーティングもされているようだが、ガラスほどの耐久性はあるとは思えない。どうもプラスチックレンズの高級品は敬遠してしまう。何年も使っていると、必ずレンズをぶつけたりするので、少しでも耐久性のあるガラスレンズが安心なのだが、意外とガラスレンズの高級ルーペがなかった。そんな中、PEAKはめずらしくガラス製だった。 アクロマートレンズ PEAK ACHROMA 35の特長は、名前のアクロマからも推測できるのだが、アクロマートレンズを採用したルーペである。アクロマートレンズとは、天体望遠鏡の対物レンズなどでも採用されている2枚合わせの色消しレンズで、色収差を補正したレンズ。虫めがねタイプのルーペで採用しているのはこれぐらいではなかろうか。普通虫めがねは1枚の凸レンズで構成されているので、2枚使った時点でかなり贅沢な作りといえる。 PEAK ACHROMAシリーズは3タイプある №2022-35 37mm 4倍 39φ×155×15mm 67g  6,405円 №2022-55 54mm 2倍 56φ×175×20mm 117g  8,190円 №2022-75 75mm 1.3倍 77φ×195×25mm 245g 13,230円 購入したのは35の4倍率のルーペ。細かなチェックが多いので3倍以上でないと使えない。用途に

天体望遠鏡 スコープテック SD-80AL

イメージ
天体望遠鏡 スコープテック SD-80AL 購入価格39,800円 スコープタウン.JP  http://scopetown.jp/ 子供のころから天体望遠鏡が欲しかったのだが、その機会は失われ、ようやく今になって小学生の子供のために望遠鏡を購入してみた。 自宅は名古屋に近いとこなので、空は街の明かりを受けて、うっすら明るい。肉眼では明るい星が少々確認できる程度。ということで星を自宅で観るということは考えてもいなかったのが、先日双眼鏡を購入して夜空を見たら、肉眼では見えない星がはっきりと見えることが判明。さらに雲のない夜中では、天の川らしき星の雲まで確認できた。ちょっと面白くなり、天体望遠鏡の購入の動機になった。 望遠鏡選び いまどきはネットで調査して、そのまま購入というパターンが多い。このスコープテックSD-80ALもこのパターン。天体望遠鏡の善し悪しなど分からないので、入門機としてはどんなものが適当なのか調べてみる。 天体望遠鏡には大きく分けて屈折式と反射式、両者を合わせた反射屈折式があって、初心者にはメンテなどを考えると屈折式が手軽だということなので、迷わず屈折式にする。あとは望遠鏡の基本性能は対物レンズの口径で決まるということ。口径が大きいほうが性能はアップするが、重く大きくなり、そして高価になる。子供が扱える重さにしたいということと、価格も数万円程度を考えているので、その範囲で調べていくと、50~80mmぐらいの望遠鏡がよさそうだ。月の観望であれば50mmでも観れるらしいが、惑星となると、やはり大きい方が鮮明に見える。となると80mmしかない。100mmぐらいだとさらによいのだけど、やっぱり価格が大きく変わってしまう。 絞り込んだ望遠鏡はビクセン ポルタII A80Mf(41,580円) と スコープテック SD-80AL(39,800円)。共に80mm口径で、入門機としては、そこそこ満足行くレベルのものらしい。架台はビクセンが魅力的だったが、鏡筒(望遠鏡本体)についてはスコープテックの方がよさそうだ。重さはビクセンが9kgオーバーで、スコープテックが6.7kg 持ち運びを考えるとスコープテックの方が気楽だ。SD-80ALの上位機種ポルタII  STL80A-L (62,120円)という架台がビクセンのポルタという魅力的な機種があっ