2008-01-01から1年間の記事一覧
22kHzステレオのADPCMのヘッダは…1024バイトごとだな。 512バイト毎にヘッダの読み飛ばしやってた。 それだと、 2回に1回はヘッダじゃなくてデータだからねorz 相変わらずボケが多いな。
PSoCでやってるADPCMデコーダですが、dsPICに移植してみたところ、音量がグヮングヮンorz なんじゃこりゃー
ヘッダを読み飛ばしたり、16bitデータに展開する所を無理やり8bit展開するために魑魅魍魎パラメータを作ってみたりしましたが、やっぱり、最初から8bitPCMを圧縮(エンコード)して、8bitPCMに戻して(デコード)やればいいんだなと…思いました。 ではREADME的な…
バイト先でプログラムを入力しているときに、迷走スイッチが入ってしまいました。(爆オレ1「やっぱ"独自規格(企画w)ADPCM”っていいんじゃね?」 オレ2『うんうん。PSoCに負荷がかかりにくいようにヘッダなしで作れるしね』オレ1「だよな。わざわざMicro$…
各ADPCMファイルのEOFに対応しました。 EOF到達で自動的に次のファイルへスキップするようになりました。こちらからダウンロード http://firestorage.jp/download/36b168dac4bdcd4231dc05aa70425cfc1eca5ea3今後の目標として、 SDカード内にリニアPCMとADPCM…
PSoCの動作速度が体感的にわかってきました。 やはりPIC16Fシリーズと同じかそれより低い感は否めませんが、 ハードウェア乗算器やMACなどでカバーできますし、 なによりあのアナログ混載でペリフェラルがフレキシブルなデバイスは他に例を見ません。 ぷっ。…
どれだけ使い物になるのかはまだ未知数なのですが、firestrageというフリーのオンラインストレージがあったので、UPしてみました。 とりあえず、ADPCM Decoder on PSoCをアップ してみました。順次、旧作品もUPする予定です。 dsPICのプログラムも早く直さな…
YAHOO!のブリーフケースの使用がYBB契約者のみとなった模様。 ソースコードのアップ先にしていたので残念。 もし必要なソースがありましたら一言コメントくださいませ。
友人からブロック長が違うという指摘をもらいました。 (ADPCMの1ブロック)=(チャネル数)*(サンプリング周波数)/11k*256 つまり、IMA ADPCM,22.05kHz,monoの1ブロックはこの計算式から512byteバイナリエディタでみてみると… ほんとだぁ(・∀・)笑 というわけで…
">いつもの場所にUPDATEしました。 DOWNLOAD ->[pcm_psoc.zip]Microsoft IMA ADPCMはヘッダがfactチャンクを含め全部で60バイトなので, ブロックのはじめの60バイトをSEEKしてリード*1しています あと、PWMから先のLPFはまだ完成していません。(パラメータ入…
Microsoft IMA ADPCMでは1ブロックが モノラル 256byte ステレオ 512byte で、定義されているようです。 つまり、1ブロックごとに (16bit PCM) + (4bit ADPCM) + (4bit ADPCM) + ..... と続いているわけで、これを何も考えずにrawなADPCMデータとして変換し…
はてなtouchのテスト
ADPCMのデコードが余りにも音割れするのと、計算量の多さでPSoCにかなり負担が掛かっているようなので、デコード処理を独自に作り直してみました。まあまあの音質でしょう。なお、音声の出力は8bit-PWMで行うので、8bit分の計算ですむように工夫しました。 …
やっぱりLPFは4次くらいでガチガチに作らないとダメですか… ある程度高音の減衰は仕方ないのかな? DSPLinksダウンロードしてこなきゃ
ちょっとdsPICに脱線してみました。 クロック、メモリのリソースに限度のあるCPUに最適なADPCM CODEC*1だと言うことで実装してみました。 以下からDownloadできますhttp://briefcase.yahoo.co.jp/bc/lynxeyed2008/ [dsPIC]->[IMA_ADPCM] 概要 SDCardからADPC…
のんびりPSoCを弄ってます。 コンテストは出せませんでした。笑 出す積もりすらあったのでしょうかね。ADPCMの件ですが、立ち消えになります。 理由は、どんなに頑張っても11kHz、monoral以上の音質の音源が再生出来ないから。dsPICに期待します。(ぇMP3デコ…
音声をPWMで出力させてやると100Hz程は平気でずれます。 しかも変動が一定でないので対策しようがありません…。やはりオシレータ付けるべきか…
ここのサイト(恐らくIMA ADPCMライセンサー本家)http://homepages.cwi.nl/~jack/にあるコードをそっくり使ってADPCMデコードが可能です。 ちなみにIMA ADPCMだとアキュムレータも乗算器もいりません。 ちょっとした8bitマイコンでも6MIPS位あれば十分デコー…
dsPICと比べてFATが仲介していることもあり、SDCardモジュールの転送速度はかなり遅いです。 音声が全く再生できないくらい。…でもない。工夫次第では。 たとえば音声再生時にFATが必要なのは 1.ファイル名からポインタ取得 2.ファイル開始アドレス取得 3.EO…
きたー。笑 68000人間にとってはたまらない。 個人的にはARMより好きだったり。 これと、こないだの付録FRマイコンを使って、USB無線LANアダプタの"なんちゃって"ルータとかできないかな?
Tremorという整数型のみのOgg Vorbis対応のソフトウェアが公開されていました。知らなかったorz ARM7TDMIアーキテクチャ用だけど、Cortex-Mでもいけそうな予感。 そこまでソフトウェアデコードに固執することも無いのですが。
IMA ADPCMの情報があり得ないくらい少ない。 PSoCで作るプレーヤーはメディアプレーヤでも再生できるコーデックが使いたいです。あと積和演算はdsPICのほうが優秀*1です。あたりまえか。笑 *1:速度と演算ビット長とビット丸め込みにおいて
このキット、11.5k支払う価値は十分にあります。 PSoCはPALに近くGUIベースで配線、設定するので大変楽だと思います*1付録サンプルコードにある、SDカードに"Hello World"と書き込むプログラムを動かしてみました。 microSDを使う前提なのでライトプロテクト…
dsPICでしばらく遊んでいたわけですが、マーフィーの法則という訳ではないですが……あともう少しという所まで行くと別のことに興味が移ってしまいます。笑 SDカード用ユーザモジュールAPIがある*1 16bit積和演算器がある ただしM8Cという独自の8bitコア でも…
掛け算 long __builtin_mulss(const int p0, const int p1); long __builtin_mulsu(const int p0, const unsigned p1); long __builtin_mulus(const unsigned p0, const int p1); unsigned long __builtin_muluu(const unsigned p0, const unsigned p1); 割…
http://www.ee.cooper.edu/sprocom/files/ICEEE_07.pdf ↑この記事に触発され、データシートとにらめっこしながらMP3のデコーダを積めないかと模索してました。今のところ、ハフマン符号のテーブルと逆離散コサイン変換テーブルを作ったところで、メモリオー…
用事があって週末まで京都なのですが、出先にノートPCとなぜか… eZ430F2013… を持ってきてしまいました。USBメモリと間違えたみたい。 例によってオーディオプレーヤーが完成していなかったので作ってみました。 結論:無理かもね。 昔、このブログに書いた内…
「トラック送り」と「トラック戻し」に対応 いままではSW1(PORTD,9)をhighにするとトラック送りでした。 「トラック戻し」はSW2(PORTD,8)をLD側(Low)にしながらSW1(PORTD,9)をhighにすると「トラック戻し」ができます。 なお、このブログをお読みの方はお気…
SDに15kHz,正弦波のwaveデータを記録し再生させたのですがめちゃくちゃな波形を出力してきました*1コードとアナログLPFの両方からカットアンドトライで原因を追求してみます。 *1:SoftOscillo2による測定,耳でも変な音に聞こえる
waveファイルの規格で 8bit→符号無し(無音時状態は128) 16bit→符号付き、リトルエンディアン(無音時状態は0) でした