teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]


新着順:40/789 記事一覧表示 | 《前のページ | 次のページ》

Re: お世話になっております!

 投稿者:nekosan  投稿日:2015年 6月11日(木)01時39分14秒
  通報 返信・引用
  > No.757[元記事へ]

猫サックスさんへのお返事です。


> 今回、この伝導性アルミでスイッチを作りまして、まずはいろいろなサイズのものを作ってみまして、一番良いサイズを割り出し、
> とにかくプラ版をひたすら切りまくる~両面テープで貼りまくる・・・で疲れる割には耐久性の良いものができるわけではない感じなのは残念ですが、お陰様で踏み心地は元祖Roland FC-200 を遥かに上回るものになっています。このあたりは本当に良かったなぁと感じております。


使い勝手のよいものができたのであれば、
あとは36鍵そろえるだけですね。



> Arduinoに慣れてきたらこの先いろいろ出来るといいなぁと楽観的にw思っております。
> (因みにAmazonで「入門ソフトウェアシリーズ1 C言語 (ナツメ社) 河西朝雄著」を買ってみました。)


この本は、古い本ですが、Cのイロハを比較的
解りやすく書いてあると思うので、Arduinoを
使いこなすのにいいと思います。

(Arduinoは中身はgccなので、Cの文法とC++の文法
 の両方が混在で使われているところがありますが、
 ライブラリを通して使うなら、Cの文法だけでも
 ほとんど困ることはないかと)

Arduinoだと、ポインタを使うことはあまり無い
(文字列操作くらい?)ですが、それでもやはり、
配列を使う場合はポインタの概念が見え隠れするので、
この本の「ポインタ」や「配列」のあたりを眺めて
いただくと、その辺が使いこなせるかと。



> 昨日、本屋さんに探しに行きましたが、SPIやI2C関連の本はありませんでした。
> でもネットの情報で何とかなるかな、といったふうに思っています。
>

http://www.amazon.co.jp/dp/4789842088/

このあたりが、シリアル通信全般について触れられている
数少ない本だと思いますが、お勧めかどうかはわかりません。

(昔、買おうかどうしようかちょっと迷いつつ、結局
 データシートとか読み込んで、実験して済ませました)

サンプルプログラムがネットでたくさん見れると思うので、
Arduinoの実機が2台あれば、色々試せるかと思います。
できれば、最初は、SPIやI2Cで繋いで使うADCやモータドライバ
とかをArduinoに繋いでいじってみると、マスター側処理は
理解しやすいかと。



> なるほど、そうなのですね。
> ではUNO 互換ボード(でも大丈夫でしょうか)など何台か買っていろいろ実験をやってみたいと思います。
> あと2オクターブ分のアルミスイッチ式フットペダルを制作しなきゃいけないし、
> とりあえず難しそうな静電容量センサー式の制作はおあずけのようです。
>


MEGA328とかMEGA168とかを搭載しているArduino
やその互換機であれば、何でも大丈夫だと思います。

ただ、電源が5Vなら5V同士、3.3Vなら3.3V同士で
繋がないと壊れるので、電源電圧のタイプは合わせて
おく必要はあります。
ほとんどが5Vタイプなので、5Vでそろえてしまえば
よいかと思います。

実験材料と割り切れば、aitendoとかで安いArduino
互換機を買ってしまうのもいいかもしれません。



> ところで、一点、お伺いさせていただけますと幸いなのですが、
> 現状ではファンクションキイは音色指定となっていますが、これをオクターブシフトに変更するためには、スケッチをどう書き換えればよろしいのでしょうか?
> 宜しくお願い申し上げます。


現状は、関数 funtion_key() の中で、プログラム
チェンジの信号を出力しているだけなので、ここに
処理を付け加えるか、もしくは pitch_bend() や
modulation() も使っていないとのことなので、この
あたりに処理を組み込んでしまえばよいかと思います。

(1)入力のトリガをどうするか?
(2)オクターブを選択する処理方式
(3)信号出力の処理

あたりをクリアにすれば、あとはそれをロジックに
落とし込んでいくだけかと。


(1)については、足で操作なのか、手でスイッチ入力
なのかにもよりますが、現在あまっている端子をデジタル
入力でシフトアップ、シフトダウンの処理に使うのが
よいかと。


(2)は、「ここをこういう風に修正すれば」と単純には
お伝えできないので、多少試行錯誤していただく必要が
あるかと思います。

グローバル変数で現在のオクターブを記憶しておいて、
なにか操作したらその変数をアップしたりダウンしたり
するのか、それともスイッチがオンのときだけアップ、
またはダウンにして、オフのときは自動で元に戻すとか、
処理方式はいくつか考えられると思います。


(3)出力フォーマットは、note_on() note_off()
の関数で扱っている note_out() 関数の引数のところ
で制御するのがよいかと思うのですが、いくつか難しい
ところがあるかと思います。

オクターブを変えるには、1オクターブ上なら、note
の番号を単純に12足した値を出力すればよいし、
1オクターブ下なら12引いた値を使えばよいわけなの
ですが…

問題は、ノートオンした時とノートオフした時で、
オクターブが変わってしまっているときです。

ノートオンしたときと同じノート番号(オクターブシフト後)
で、オフの信号も送らないと、正しくノートオフされない
ので、音が鳴り続けることになってしまいます。

ノートオンしたときのオクターブを、鍵盤1個ごとに
メモして残しておいて、ノートオフするときには
そのオクターブも加味してオフする必要があるでしょう。

そのあたりまで作りこむと、結構複雑になってくる
かと思います。

 
 
》記事一覧表示

新着順:40/789 《前のページ | 次のページ》
/789