ボコーダー開発計画(3)

 引き続きボコーダー開発。
まずはPC上でボコーダーを作成することを目標とする。
それが出来なければ回路に落とし込むことは無理だ。

声のスペクトルは確認できるようになったのだが、これに適当な演算をして音として出力する必要がある。
自前のプログラムでそれが出来ると自由度が高くてよいのでちょっと調べてみる。
まずは
マイクから音声を入力→バッファに格納→再生
からだ。これはそんなに難しくなかった。
ソースは続きから。
次はフーリエ変換かな。

Fig.自作プログラムで取り込んだ音声の振幅(横軸は時間)
続きを読む >>
ジャジャガッチ | C/C++ | 14:34 | comments(0) | trackbacks(0) |

ボコーダー開発計画(2)

 ボコーダーを作ろうと言っても原理がわからないんじゃ話にならない。
ネットで調べてももう一つよくわからない。
声と楽器の周波数スペクトルをごにょごにょ合成するということはわかるのだが。

まずは声のスペクトルとみるところから始めることにする。
これには便利なフリーソフトが使えて
「WaveSpectra」
という。

下のほうのSというボタンを押すとテキストデータが出力される。
ただグラフにするのがちょっと面倒なフォーマットなのでグラフにしやすいフォーマットに変換するソフトを作った。↓

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

void fn(char *name,char *name2)//name="aaa.txt"
{
    int l = strlen(name);//文字列の長さ取得 ¥0は含まない

    int i;
    for(i=l-1;i>0;i--)
    {
        if(name[i]=='.') break;
    }

    char A[256],B[256];
    strcpy(A,name);
    A[i] = '¥0';//A="aaa"

    strcpy(B,&name[i]);//B=".txt"

    strcat(A,"_out");//A="aaa_out"
    strcat(A,B);//A="aaa_out.txt"

    strcpy(name2,A);
}


int main(int argc , char **argv)
{
    FILE *fp = fopen(argv[1],"r");
    int i = 0;

    while(i<3)
    {
        if(fgetc(fp)==',') i++;
    }
    int Fs;
    fscanf(fp,"%d¥n",&Fs);//サンプリング周波数取得

    while(i<4)
    {
        if(fgetc(fp)==',') i++;
    }
    int N0;
    fscanf(fp,"%d¥n",&N0);//fftデータ数取得*/

    while(i<5)
    {
        if(fgetc(fp)==',') i++;
    }
    double df = (double)(Fs)/(double)(N0);

    int N;
    fscanf(fp,"%d¥n",&N);//amp数取得
    double *V = (double*)malloc(sizeof(double)*N);

    int n = 0;
    char tmp[256];
    i = 0;
    while(n<N)
    {
        tmp[i++] = fgetc(fp);
        if(tmp[i-1]==',' || tmp[i-1]=='¥n')//データの区切りのところで文字列をdoubleに変換
        {
            tmp[i-1] = '¥0';
            V[n++] = atof(tmp);
            i = 0;
        }
    }
    fclose(fp);

    char FileName[256];

    fn(argv[1],FileName);
    fp = fopen(FileName,"w");
    for(i=0;i<N;i++)
    {
        fprintf(fp,"%.15f %.15f¥n",i*df,V[i]);
    }
    fclose(fp);

    free(V);
    return 0;
}

これでスペクトルを定量的に確認できるようになった。
ジャジャガッチ | C/C++ | 14:12 | comments(0) | trackbacks(0) |

ボコーダー開発計画(1)

 この前面白い楽器をみつけた。
ボコーダーという。
僕がみたのは電子キーボードにピアニカみたいにチューブがついているもので、チューブに向けてしゃべりながら鍵盤を押すとキーボードの音と声が合成された音が出てくるというものだ。面白いのでamazonで値段を見てみると数万円もする。
ちょっと遊ぶには高い。
じゃあ自分で作れないかということで挑戦することにする。
ジャジャガッチ | C/C++ | 14:06 | comments(0) | trackbacks(0) |

ヘッドフォンアンプ試作

 非常に簡単なアンプをブレッドボード上に試作して動作確認した。
まずちょこちょことオーディオ関連で調べたことをまとめておく。

まず、ライン出力の出力インピーダンスは100Ω〜くらいで、電圧はそれなりに大きく出力できる(1V〜2V)。しかし、電流の供給能力が低いためヘッドホンやスピーカーのような低入力インピーダンス機器をそのまま動作させることは出来ない。ヘッドホンやスピーカーの入力インピーダンスは数Ω〜数100Ωくらい。ヘッドホンならば20mWくらいで普通に音が聞こえるっぽい。

ではアンプについて考える。ライン出力からはそれなりに大きい電圧が出せるようなので、電圧は増幅せず、電流のみを増幅する。こういうときに使うのがエミッタフォロアだ。
web上で検索してみるとトランジスタ1石のエミッタフォロアでヘッドホンをならしている例があったので考え方は間違っていないようだ。
じゃあ作ってみよう。

モノラルです。最初C=0.1uFで実験してみた。ヘッドホンから小さな音が聴こえる。
かなりの部分がCでカットされているのだろうということでC=470uFに交換すると100均で買ってきたスピーカーから普通に音が聴こえる。
実証実験には成功したので、この回路の周波数特性など詳しい解析、再設計後、基板に実装する。

ジャジャガッチ | 電子工作 | 20:48 | comments(0) | trackbacks(0) |

ライン端子

 引き続きオーディオ関連。
最近のPCはイヤホンジャックみたいなのがたくさんついている。
そのうちのひとつにライン端子というものがある。
ちょこちょこと調べてみたところ、ライン出力からはアンプを介さない生信号が出ているようだ。
出力インピーダンスが100Ω〜と比較的高く(ヘッドホンの入力インピーダンスが数十Ω)、また電流の供給能力も低いため、通常はここに高入力インピーダンスのアンプをつないで使うようだ。
オーディオ関連の工作を始めるにあたってまずは信号をみてみようということで、3.5mmΦミニプラグジャックを買ってきて、PCに挿し、オシロスコープで波形を確認した。

フリーソフトを使ってsin波を出力して確認した。ちゃんと綺麗な波形が得られた。てか、これ簡易的なファンクションジェネレータとして使えるんじゃね?ボルテージフォロアつないでさ。

今後だが、まずはエミッタフォロアを使ってシンプルなアンプを作ってみるつもり。
ライン端子から出力される電圧は十分に大きいため、電流だけ増幅してやればよいはず。
なのでエミッタフォロアでヘッドホン鳴らせるんじゃね?ってことで調べてみると作っている人がいる。考え方は間違っていないようだ。
ジャジャガッチ | 電子工作 | 20:44 | comments(0) | trackbacks(0) |

ヘッドホンアンプを作りたい!

 ヘッドホンアンプを作りたい。
最近そう思っていて少しずつ調べている。
あまりオーディオに興味はなく、作ってみたいだけ。
100均で実験用にイヤホンを買いに行ったら面白いものを見つけた。
ボリュームアンプ。イヤホンなどの音量調整ができるものだ。
実験ケースとしても使えるな、ということで4個購入。
ネット上で調べてみると結構話題になっている。
中身はパワーアンプICが1つと抵抗やらコンデンサやらがちょこちょこ。
パワーアンプIC TDA2822MはNJM2073と互換性があるらしい。
回路図を見てみると負帰還になってねえ!と驚いたが、何のことはない、IC内部に負帰還回路は組み込まれているらしい。利得は100倍ほど。
BTLと呼ばれる回路になっていて、アンプ1つの場合に比べて2倍程度に増幅できるらしい。
原理は、通常スピーカーの片側は0V固定でもう片側がsin(wt)などとなっているのだが、
0Vの方に逆位相cos(wt)をかけるという仕組みらしい。

ついでに、タイミングよくPC用のスピーカーが壊れた(片方から音が出ない)。
分解してアンプがどうなっているか見てみようと思う。
直せそうならば直す。

3/22追記
スピーカーを分解して中身を見てみたが特に問題はなさそうだった。試しにPCにつないでみると正常に音が出る。原因不明。もうスピーカー買っちゃったよ・・・。まあいいや、実験用にしよう。
このスピーカー、BTOで購入して最初から付属していたスピーカーなのだが、え・・・、と思ったのは中身はICが一個にコンデンサやら抵抗やら・・・、ICをよく見るとTDA2822M!100均アンプじゃん!100均のアンプはモノラルだが、このアンプはステレオなのでBTLにはなっていないはずだ。多分、単にICの入力に可変抵抗をかませてライン入力を受けているだけだと思う。回路みるの面倒くさい。
ジャジャガッチ | 電子工作 | 20:31 | comments(0) | trackbacks(0) |

PICを用いたLED回路

 夕べ早く寝たので朝の4時に目が覚めてしまって朝っぱらからごそごそしていた。
前にやろうと思っていたPICを使ったLED点灯実験を行った。
例えばPICで1秒周期でLEDを点滅させるとチカッ!チカッ!って感じで趣がないので
ぼや〜っと光ってぼや〜っと消えるってのをやりたい。
チカッ!となってしまうのはPICから出力される方形波をLEDに入力しているからだ。
PICを使って光量調整する常套手段は、方形波のパルス幅を調整する方法だ(PWM制御)。方形波の周波数が十分に大きければ人間の目に点滅は認識できず、光量が変化して見える。
これを使ってぼや〜っとついたり消えたりをするためには動的にパルス幅を変化させればよい。
・・・のだけど思ったような光りかたをしなかった。ちょっとこれはしんどいなあ、と思って放置していた。
最近アナログ回路を勉強し始めたのでアナログ的な方法でアプローチすることにした。
ぱっと思いつくのは、PICの出力にローパスフィルタを入れて高周波を遮断することで信号をなまらせる方法だ。シミュレーション結果は下図。


方形波がなまっていることがわかる。実際に回路を組んで測定してみたが、シミュレーションどおりの結果が得られた。
思ったより簡単に出来たので、次は方形波を正弦波に変換する方法を調べようと思う。
ジャジャガッチ | 電子工作 | 07:44 | comments(0) | trackbacks(0) |

お風呂ブザーならぬお風呂メロディ

 ただのお風呂ブザーじゃつまんない!ということでお風呂メロディをブレッドボード上に組んで動作確認した。
前々回の記事(お風呂PIC)の回路を基本にして、エミッタフォロアの代わりにボルテージフォロアをつなぎ、メロディICの演奏制御端子に入力すればよい。


メロディICはSM1155-AAN1S-GというIC。演奏制御端子をHにすれば演奏が始まる。曲は「ボレロ」(アニメ版銀河英雄伝説で流れてたから知っているという)。
TGはメロディICのTG端子につなぐ。ICはデータシートどおりに配線すればよい。
これで二本の導線を水につけるとチャ〜チャラララララチャッチャララ〜♪と音楽が流れます。
なかなかよい。
ジャジャガッチ | 電子工作 | 15:56 | comments(0) | trackbacks(0) |

光センサつきルームランプ

 電子工作を始めたことにお風呂ブザーと共に作ったのが光センサつきルームランプだ。
部屋が暗くなるとLEDが自動点灯する回路だ。
これはCdSセルという周囲の明るさによって抵抗値の変化する素子を使えば簡単に、安価に作れる。CdSセルは100円程度で販売されている。
回路図は次のようになる。


手元にあるCdSセルの抵抗値を測ると、大体
明るいとき:5kΩ
暗いとき:1MΩ
だった。上の左側のように100kΩの抵抗とCDSで分圧してやれば、明るいときベース電圧が0.6V以下になるためトランジスタがoffになる。
暗いときは+5Vがほぼそのままベース電圧となるためトランジスタがONになり、LEDが点灯する。このときLEDには大体20mAが流れる。
電子工作を始めたことにやりたかったことは、これに自動消灯機能をつけることだ。
しかも、ある時間でぱっと瞬時に消えるのではなく、ぼや〜っとゆっくり消えていくようなものがよい。でも当時はどうやればよいかわからなかったので今回再チャレンジ。
詳細は続きから。
続きを読む >>
ジャジャガッチ | 電子工作 | 12:41 | comments(0) | trackbacks(0) |
1/1PAGES | |

03
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
--
>>
<<
--
PR
RECOMMEND
RECENT COMMENT
MOBILE
qrcode
OTHERS
Since 2013/09/17
LATEST ENTRY
CATEGORY
ARCHIVE
LINKS
PROFILE
SEARCH