おかげさまでspamコメントが増えてきましたので、一応コメントを承認制にしました。基本的には承認します。
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
物凄い汚い絵で申し訳ないけど、32ピンパラレルポートを模式的に書くと、下図のようになり、台形の短いほうの辺のピンは(多分)ぜんぶグランドで、長い方が、この図でいうと左から順に、1,2,3,4…のポートになるようです。
で、今回、なぜか4番のポートだけちゃんとトリガーが出て、1,2番から出ない(*)ので困っています。 まだ解決してないので、この手もダメかもしれませんが、一応対応策を検討したので、メモしておきます。 現状 SoundOut1で音刺激を出し、この刺激の開始がオンセットになるので、 SoundOut1の前にInLineを置き、 InLineに、 SoundOut1.OnsetSignalEnabled = True SoundOut1.OnsetSignalPort = SoundOut1.OnsetSignalData = c.getattrib("portout") SoundOut1.OffsetSignalEnabled = True SoundOut1.OffsetSignalPort = SoundOut1.OffsetSignalData = 0 と記述して入れていたんですが(**)、さて、これで正しいか。これで動く場合もあるので、間違ってはいないはずですが、もしかしたら変えたらなんとかなるかもしれない。というわけで、以下その対策まとめ。 対策1. とりあえず、きちんと一回波形をグランドに落としたいので、 最初に Writeport と書いとく。 対策2. OffsetSignalという文は本当に有効なのか。(とくに、6行目) SoundOut1.OnsetSignalData = 0にしてみたら?という方法 対策3. 同一InLineにOnsetとOffsetを両方記述すると、処理がおっつかないのでは? 渡辺の課題は、InLine1→SoundOut1→Wait1のループなので、 InLine1→SoundOut1→InLine2→Wait1とし、 InLine1にトリガー出せ(上3行) InLine2にトリガー落とせ(下3行) としてみる。このとき、下3行はOffsetSignal とOnsetSignalを両方ためす。 これでダメならPC交換かな…短い命であったが *正確にいうと、出るけど、出っ放しで0におちないので、結果的にトリガーが出ない。普通トリガーは矩形波なので。 わに口クリップに針金を挟み(というのは、32ピンパラレルポートはメスなので。オスならクリップでピンを挟めばそれでOK)、オシロスコープにつないでグランドに一方を、みたいポートにもう一方を差し込めばわかる。 ** オブジェクト名.OnsetSignalEnabled = True …ここはおまじないみたいなもの オブジェクト名.OnsetSignalPort = オブジェクト名.OnsetSignalPort = c.getattrib("portout") …=の右側に書いてあるポートからトリガーを出してね、という意味。 c.getattrib(" ")は、""の中の変数(Listで作るやつ)からもってこいという意味。 渡辺の場合は、Listにportout欄を作り、1とか2とか4とかいれてる(ちなみに、2進数なので3はない…はず)。したがって、名前はportoutである必要はべつにないし、トリガー一種類でよければ、 オブジェクト名.OnsetSignalPort = 1 でも問題なし。 オブジェクト名.OffsetSignalPort = 0は、意図としては、一回波形をキャンセルしてね、ということだけど、この意図通りの挙動をしてくれてるかは前述の通りびみょう。 あと、InLine内で書くなら、 writeport &h378, c.getattrib("portout") (または、 writeport &h378, 1(←出力したいポート番号)) のほうが正しい表現かもしれないです。 (どうもOnsetSignalxxxxは、E-Basic(E-Run?)で使う表現の様子、まあStudio内で使っても挙動はちゃんとしてますが) PR |
カレンダー
カテゴリー
プロフィール
HN:
渡辺隼人
性別:
男性
ブログ内検索
アクセス解析
カウンター
|