電子楽器の夢をみるのか

電子楽器の夢をみるのか

電子楽器製作をつづる。

~初めて来られた方へ~

「電子楽器とかいろいろ」はLongtailが電子楽器製作の道のりを綴っています。
「電子楽器を作るぞ!」とか「マイコンを使ってみよう!」と思っている人の参考になるかもしれません。

電子楽器と言っても、現在は音源ICを用いて電子楽器を製作しています。ちょっと前はアナログシンセサイザーを作っていたけどね。そっちも書けば良かった。

コメントやリンクは大歓迎です。コメントはブログの内容に関わるもの(具体的にね)をお願いします。「何かを感じました。」とか他のブログでも書けるものはだめですよ( `・ω・´ )何を感じたんだ、何を
内容が難しいですがたまに描いてる絵のコメントもOKです。気になったら読んでみてください。



Amebaでブログを始めよう!
前回からの話。どうやってノイズ(正しく言うと疑似乱数)を作るか。

今回はコチラのサイトから簡単そうな(!?)ものを2つ選んでみました。
乱数(ランダムナンバー)の種類と生成方法
で選んだのがこれ、混合合同法と線形帰還シフトレジスタ。前回も書きましたね。
混合合同法と言うのは下の式、

a'=a×p+q

この式に適当な値を入れて計算を繰り返していきます。こんな感じに
a=11,p=121,q=43 ※今回は2ケタ目から4ケタ目だけ使う。
1回目 11×121+43=1334→133=a' 
2回目 133×121+43=16136→613=a''
3回目 613×121+43=74216→421=a''' ・・・・・

を繰り返すことで疑似乱数を得ることができます。この考えを元に作ったのがこちらのプログラム

/* Noise.c
*プログラム上で乱数を発生する。
* 乱数の生成は混合合同法を用いる。
*  Author:longtail*/
#define    F_CPU    1000000UL        // 1MHz
#include <util/delay.h>                //delay関数を使用する
#include <avr/io.h>
//変数の定義
int a=0x3e;                            //適当な値にする。 
//関数の設定
void InitialHard(void);
int main(void){                        //メインプログラム
    InitialHard();                    //ハードの初期化
    while(1){
        a=a*13+1;                    //疑似乱数の発生
        a=a>>2;
        PORTB=a;
        _delay_us(100);                //wait
        }
}
void InitialHard(void){
    //ポートBの設定
    DDRB=0xff;                        //ポートBを出力に設定
    PORTB=0;                        //ポートBに0を出力
}
プログラムは結構短め。でメインのとこはここ

        a=a*13+1;                    //疑似乱数の発生
        a=a>>2;

この部分で混合合同法を行っています。1行目でこの式(a'=a×p+q)の計算をし、2行目で下から2ケタ目を省いています。
じゃあ上のケタは?上のケタは勝手にマイコンが勝手に省いてくれます。
なんでかというと、aという変数(数字が入る箱)があります。この箱には変数のタイプによって入る数字が制限されます。今回はint型を使っており、0から65535までの整数しか入りません。それ以上の数字が入るとその数字は無視されます。

とまぁこんな感じで。このおかげで上のケタを削らなくても勝手にやってくれるのです。
早速プログラムを実行、作った疑似乱数を聴いてみると、
「おおっ、ノイズっぽい」
とりあえず、ノイズのような音を出すことができました。なんとなくおもちゃの銃みたいな音。「ガガガガガ」って感じ。
多分、変数aの値などを変えるとまた音の雰囲気が変わると思います。
また、この行、
_delay_us(100);                //wait
の数字を変更すると音の高さ(?)が変わります。これは次回に説明できればいいなと思ってます。実はよく分かって無い(´・ω・`)

とりあえず次回につづく

前回からの続き、マイコンでノイズを作る話

実を言うとマイコンを含むコンピュータは計算ではホワイトノイズを作ることが出来ません。ホワイトノイズというのはランダムな値(乱数といいます)です。次の状態がどうなるのか誰にも予想することができません。マイコンやコンピュータの内部ではちゃんとした計算しかできず、乱数を計算することが出来ないからです。

でもちょっと考えてみるとゲームとかってランダムな要素ってありますよね。例えばどんなポケモンがでるのか、アイテムの出現率とか、命中率や回避率とか。プログラムにおいてもC言語やHSP(Hot Soup Processor)などにランダム関数があったりします。

ランダムできるじゃん!って話になります。実際はコンピュータが計算をし、あたかも乱数をだしてるように見えるからです。

今回は計算で疑似的に乱数を作り、疑似ノイズを作っていこうと思います。
ところで、疑似乱数と乱数の違いについて書いてみます。
乱数というのは最初にも書きましたが、次の値を予測することができません。誰にもわかりません。
疑似乱数は計算を行っているので、計算方法さえわかれば誰にでも予測することができます。ですのでポケモンとかにある乱数調整は電源を入れるタイミングや時刻など要素が分かっているため、好きなポケモンをGETすることができます。
疑似乱数を発生させるにはさまざまな方法がありますが、今回は混合合成法と線形帰還シフトレジスタという2つの方法でノイズを作ってみようと思います。
詳しい内容やプログラムは次回に続く。

どうもLongtailです。
結局、YMZ294の方はほとんど進んでおりません(´・ω・`)シリアル通信難しい。
それが進むまで何もしないのはあれなのでちょこちょことプログラムのアイデアを考えていました。

今回はマイコンを使ってノイズを作ってみようと思います。

ところで、ノイズってなんなんでしょう。必要じゃない情報や信号以外はすべてノイズとなります。
ノイズにはいろいろな種類があります。そのうちのいくつかを紹介
①ホワイトノイズ
身の回りに一番あるノイズです。例えばテレビの砂嵐やラジオの「サー」って音。木のざわめきや波の音もホワイトノイズがもとになっています。赤ちゃんが安心する音ともいいますね。

②電子機器からのノイズ
導線に大きな電流が流れると導線がアンテナとなり不必要な信号を発信してしまいます。テレビやパソコン、スマホなどの機器から発信されます。

③コンセント・アダプターからのノイズ
コンセントからのエネルギーを電子機器が扱いやすいように変換します(難しく言うと交流電源を直流電源に変換する)
変換の際に発生するノイズやコンセントのエネルギーがちゃんと変換されずにノイズとしてでてしまいます。アンプとかにとって大問題。まぁ安いPCスピーカーとかはその成分が残ったまんまだったりするけど(´・ω・`)

と、ノイズにはいろいろありますが今回はホワイトノイズ的なノイズをマイコンで作ってみようかと思います。

このホワイトノイズってのはたくさんあるノイズのなかで結構使えるやつです。何故かというと打楽器の音を簡単に作ることができるからです。あとちょっとした効果音とかね。
ですが、マイコンでノイズを作ることは不可能です。えっここまで書いといてΣ( `・ω・´ )
詳しい話は後程。つづく

さらりとまずいブログ~(梅酒のような感じで)

どうもlongtailです。ここ最近ブログを更新しておりません。
今回の投稿は場繋ぎという感じです。定期的に書かないと忘れてしまいそう(´・ω・`)
実を言うとついこの前異動があり、ばたばたしておりました。

現在、三重にいます。やっと新生活に慣れてきました。私の地元(宮崎)並みの緑の多さ。そして暑い。ただたまに涼しい日があるのでそこは宮崎とは違うかな。
落ち着いたらブログを再開したいところ。

とりあえず仕事で覚えることいっぱい。でも楽しそう。
今週末には更新できたらなと思っています。
続く
どうも最近ブログが停滞気味です。ちょっとまずいなぁ

今回はちょっと別の話。
休日、ハードオフにいってジャンク探しをしております。で、その時一目ぼれしたのがこれら

これのキーボードとその下の機材を買ってきました。
YAMAHA CBX-K1(上のキーボード)
37鍵盤のMIDIキーボード。ミニ鍵盤のわりに弾きやすい。YMZ294の演奏はこれでやろうと思います。
YAMAHA TG55(下の機材)
これがメイン。25年前の音源モジュール。AWM2音源(要は録音したものを編集して使う)を使ってます。AWM音源の初期であるため、所々「あれっ」って感じの音が入ってます。特にピアノの高域があまりいいとは言えない(´・ω・`)どうした当時のYAMAHA。
けどpad系(包み込むようなふわ~ってした感じの音。)は結構好き。90年代初期にある感じの音色。合わせて9000円ほど。
これで頑張れば曲は作れそうです。同時発音数の問題でちょっと頑張らないといけないけど。

でも本題はYMZ294そろそろ進むといいなぁ
つづく