目次
NBS PresentationでCedrus Response Padを使えるようにする設定の方法(2021/05/23)
Windows 10にインストールしたNBS Presentationで、Cedrus Response Padを登録しようとしたときにエラーが出たのでその解決方法の備忘録です。 使用したものOS: Windows 10 (Pro Workstation用)
パソコン:Dell Precision 3640 Tower
レスポンスパッド:Cedrus RB-740
ソフト:NBS Presentation ver 22.1 前提
レスポンスパッドをUSBケーブルで接続したとき、レスポンスパッドが認識されない場合、 USB Driver for Windows をダウンロード・インストールする必要があります(もしリンクが切れていたらCedrusと検索し、Support > RB-x40 > INSTALLING AN RB SERIES PADの中から選んでください)。 認識しているかどうかを知りたいときは、デバイスマネージャー(Windowsマークを右クリックで表示できます)を開き、"NBS"が表示されているかどうかを見ます。表示があれば、認識されています。 エラーの内容
NBS PresentationでCedrus Response Padを使用したい場合、 Presentation Extension for Cedrus Response Devicesをインストールする必要がありますが、 Cedrusのサポートページの指示通りに実行すると、"Register Extension"ボタンをクリックした時点で以下のようなエラーが出てしまうことがあるようです。 There was an error registering thi sfile with Windows:
The file C:\Program Files (x86)\Cedrus XID Response Extension for Presentation\CedrusXidDriver.dll could not be loaded.
Windows returned the following error:
The specified module could not be found.
Please contact the extension provider for help
"Don't register server with Windows"を選ぶと、"Extension Cedrus XID successfully registered"と表示されるのですが、"Re-enumurate devices"をしたときにエラーが出て進めません。 解決方法
Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージをインストールするとこの問題が解消することがあるようです(何故かはわかりません)。 それよりも新しいバージョンも試しましたが、私のパソコンではうまくいきませんでした。 Presentationのforumsには同様の問題が2件報告されていて、 1件目は"MS Visual C++ redistributable package"をインストールしたらうまく行ったようです。バージョンはわかりません。 2件目は古いドライバを消して最新版をインストールしたらうまく行ったようです。 新しいパソコンだとそもそも古いドライバはないのでこっちは関係なさそうです。
[追記] 別のパソコンで試したときはVisual Studio 2012(x86, x64)をインストールしたらうまくいきました。[link]
Pythonで音声の開始時に音を追加する方法(2019/11/20)
前回、Arduino Unoを使って、脳波実験のときの音声のディレイを検出する方法を紹介しました。音声のディレイを検出するためには、音声の片方(RかL)にクリック音などを入れてArduino Unoに入力するほうが良いです(言語音の場合、母音など開始が検出しにくい場合があるため)。 スクリプトは以下の通りです。input_folderは入力になるフォルダの名前、Sound_NoClick/*.wavは、そのフォルダ内で読み込みたい拡張子、 output_folderは、出力先のフォルダ、clickは追加したい音(Arduinoに検出させる音)です。 これらを自分のパソコンのフォルダの場所に合わせて変更してください。 Arduino Unoに聞かせる音は、Praatで簡単に作ることができます。 Pythonのインストール方法がよくわからないひとは、アナコンダをインストールすると良いと思います。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
## Libraries ##
import os
import glob
from pathlib import Path
from pydub import AudioSegment
## Folders & Files ##
input_folder = Path("Sound_NoClick/")
input_file_name = [os.path.basename(p) for p in glob.glob('Sound_NoClick/*.wav', recursive=True) if os.path.isfile(p)]
# 特定の拡張子を持つファイルだけファイル名取得
output_folder = Path("Sound_Click/")
click = "1000HzSound.wav"
number_files = len(input_file_name)
## Pan and Add Click ##
sound2 = AudioSegment.from_file(click)
sound2 = sound2.pan(-1.0)
for i in range(0,number_files):
#file_number=str(i)
input_file = input_file_name[i]
output_file = input_file_name[i]
sound1 = AudioSegment.from_file(input_folder/input_file)
sound1 = sound1.pan(+1.0)
combined = sound1.overlay(sound2)
combined.export(output_folder/output_file, format='wav')
Arduino Unoで音声のオンセットを検出してトリガ出してみた(2019/07/07)
Arduino Unoを使って音声のオンセット(開始時点)を検出して脳波計にトリガを入れる方法を紹介します。
この情報がたくさんのひとの役に立つことはないと思いますが、そういう情報こそなかなかネットで見つけにくかったりすると思うので...
なんで音声のオンセットを検出したいの?
普段、脳波実験で音(文・単語など)を呈示するときNBS Presentationを使っているのですが、 Presenationが音を再生するタイミングが、 トリガ(National Instruments USB6501経由)を出力するタイミングから少し遅れてしまいます。 たぶん他のソフトウェアでもある程度同じようなことが起きると思います。 九大の設備だと30数ミリ秒くらい。脳波実験は、処理のタイミングに関心があることもあるのでこのズレは結構でかいです。 なので、音が実際に再生された音を拾ってそのタイミングに(ダミーの)トリガを出しておき、 解析時にPresentation側から出ているトリガをそのタイミングに移動させてしまおうということです (トリガのタイミングを変えるのはEEGLABで簡単にできます)。 Arudinoを使うのは単に安いということと、使わなくなったときに別の用途で使える汎用性があるからです。九大の機器の接続は以下のような感じです
さっそく作業に取り掛かります。
パソコンにArduinoのソフトをインストールします 下のDownload the Arduino IDEのところ。使用しているパソコンのOSにあったものをダウンロードします。 寄付したいひとは寄付できますが、Just Downloadでも問題ないです。
USBケーブル(Arduinoキットを買うと付いてくる)でArduinoとパソコンをつなぎます。 ファイルをダウンロードし、Arduino Appで開きます(ファイル > 開く > ファイルを選択)。 「マイコンボードに書き込む(→)」をクリックし、Arduinoにスクリプトを書き込みます。 この時点でうまくいかない場合、Arduinoが認識されていない可能性があるので、 ツール > シリアルポートでArduinoがささっているUSBポートが正しく選択されているか確認してください。
Arduinoとマイクを接続します(載せるだけ)ArduinoのA4とGNDにケーブル(オス側)を指します。 ケーブルのもう一方は、脳波計のトリガ入力のピンにはんだ付けします。 九大の脳波計だとD-sub25ピンの内、8ピンまで使っているので(National Instrumentsから来るトリガ)、9ピン目を使用しました。 *何番まで使えるかは脳波計に依存します。所有してる脳波計のピン配置を確認してください(取扱説明書にも書いてありますが、わからなければメーカーか販売代理業者などに問い合わせすると教えてくれます)
音声を流してみて、トリガが出ているか確認すれば作業は終了です。 Arduinoの音センサーに直接イヤフォンなどをテープなどで止めると検出しやすいです。
EEGLABで脳波解析をしている場合、データを読み込んだあとにMATLABのCommand WindowにEEG.event(1).latencyと入力することで、 トリガの時間にアクセスできるので、Arduinoが出したトリガのタイミングに、その他(=NIから出ているトリガなど)のタイミングをあわせるようなスクリプトを書くと良いです。
余談:困った話
言語音を使う場合、音声の開始が弱い(母音とか)ことがあって、Arduinoが正確にオンセットを検出できないという懸念があったので、 再生する音声の左側にクリック音(オンセットがはっきりしているもの)、右側に実際に参加者に聞いてもらう音声を入れて、 Arduinoには左側から出た音声を聞かせ、参加者には右側から出た音声を聞いてもらうようにしました (ステレオ->モノラルアダプタ(cf. JVC)で音声を左右を分け、右側にイヤフォンをさせば参加者は両耳で同じ音声が聞けます)。
しかし、実験用パソコン(HP EliteDesk 800 G4 TW/CT)でそれを再生してみると、左側でも音声が聞こえ、右側でもクリック音が聞こえるという問題が起こりました (一応、HPサポートセンターに聞いてみましたが、"想定した用途を超えるもの"でそれがソフトウェアの問題なのかハードウェアの問題なのかわからないとのことでした)。 どうやら左と右の音声が混線?しているようで、色々とネットで検索してみるとハードウェアの問題ではなくHPもしくはWindows 10で動いているソフトの問題みたいです(「立体音響」など色々設定をいじってもだめだった..)
しかし、この問題はEqualizer APOを使えば解決するみたいです。ソフトを開いて、Selected channelsのところでALLを選択します。 これで、左右別々に音声が再生されるようになりました :)100均LEDでレスポンスボックス自作してみた(2018/01/07)
脳波・行動実験などで使用できるレスポンスボックスの自作方法を紹介します。
なぜ自作するのか? 脳波実験などでは、実験者が操作する刺激呈示用パソコンからVGAケーブル等で別室にあるモニターにつなぎその映像を実験参加者に呈示することが多いと思います。 このようなケースでは、実験参加者は、実験刺激を呈示するパソコンのキーボードから離れた位置におり、キーボードを押せないので、Cedrus製Response Boxなどを購入してレスポンスを記録することになります。 しかし、Cedrus製のレスポンスは高く(RB0740は2017年7月時点で8万円程度 [ユニポス])、若手研究者(特に研究費がない院生)には手が出しにくいです。また、高齢者や子どもなどを対象とする実験では、 Cedrus製のレスポンスボックスだとボタンがやや小さく押しにくかったり、タスクに関係ないボタンがあるために参加者が混乱したりするという意見がありました。そこで、実験参加者フレンドリーなレスポンスボックスを安く作る方法を考えました。以下で紹介する方法は、ゲームコントローラーに接続さえできればボタンの大きさ・個数は自由に決められます。
さっそく作業に取り掛かります。まず、ゲームコントローラーを開いて、以下のような状態にします。
このゲームコントローラーでは数字がついているところが使える場所です。右4つに1、2、3、4、真ん中に9、10と小さく書いてあります。それ以外の番号は上側についている4つのボタンです。今回は右4つと10番を使用しました。
コードを2本準備し、丸い部分の片側に一本ずつはんだ付けします。この時、はんだが、反対側までつかないように気をつけて下さい。
これでコントロラー側の準備は終わりです。
先ほどはんだ付けをしたコードの反対側をボタンにつけていきます。今回は、ボタンとしてダイソーで購入したLEDライトを使います(高齢者・子どもの実験用に使用するので大きめのものを使用)。LEDライトのカバーをプラスドライバーで外し、スイッチの部分についているコードを切ります。
スイッチ部分を取り出します。このスイッチは、押すとオンの状態のままになってしまうので、ボタンとして使用するために留め金を外します。取り外すのは、バネの反対側にある「コ」のような形をしたものです。撮影のために完全に上のカバー部分を外していますが、カバーを外すとバネが取れやすくなるので、カバーを半開きの状態にしてマイナスドライバーでうまく取り出す良いです。
先ほど片側をコントロラーに付けたコードの反対側をはんだでスイッチに付け、スイッチをLEDライトに戻しカバーを付けます。カバーを付ける際に、コードがじゃまになるので、カバーの下の方に隙間を空けてそこから出すと良いです(これは好み)
これで完成です。
脳波実験などで使用しているPresentation(Neurobehavioral Systems)であれば、コントロラーのUSBをパソコンに接続しSettings > Response > Game Pad(たしか笑)> Buttonsで使用するボタンを選択しUse > Testで動作確認ができます。 動作確認のとき、ボタンのリリースではなく、ボタン押しが反応として記録されていることを確認しておいた方が良いです。 その他の方法だとJoyToKeyというソフトで、ゲームコントローラーのボタン押しをキーボードに置き換えることができます。 あんまりちゃんと確認してないですが(文処理の脳波実験は通常ミリ秒単位での反応時間の正確さは必要ないので)、Flanker TaskをPsychoPyで作成し自分でやってみた限りでは、キーボード vs. Cedrusのレスポンスボックス vs. 自作レスポンスボックス(JoyToKey使用)で、反応時間・反応の記録ミス率に差はありませんでした。
学振PDでアメリカの大学に行ってみた(2017/12/30)
受入研究機関・時期などによって異なる部分もありますので参考程度に.
学振研究員とは?:
大学院生やポスドクに研究奨励金と研究費を給付する制度です。博士後期課程の大学院生が応募するDC、ポスドクが応募するPDなどがあり、奨励金はそれぞれ月額20万円、月額36万2千円、科研費は150万円以下です。採用期間(2〜3年)の2/3は、海外の研究機関において研究を行うことができます(ただし正規の学生として在籍することはできません) *「通算渡航期間の上限について」H30年4月1日付けで変更があったようです[link])。 私が採用されているのは、「国内学振PD」と呼ばれるものです(それとは別に「海外学振」というのもあります)。
制度の詳細:
アメリカに行くためにしたこと・必要なこと:
メリーランド大学の場合は、メールで書類を送るのではなく、専用のウェブページにアップロードする形式でした。あとは事務から送られてきた誓約書?(何日から何日まで滞在するとか)に自分のサインと国内の受入研究者のサインを書いて、スキャンして送りました。基本的に書類は、郵送するのではなくウェブにアップロードするか、メールで送ることになるので、スキャンできる複合機(研究室とかにあるでかいやつ)がすぐに使えると便利です。 渡航先の大学側には関係ないですが、日本学術振興会に、「特別研究員海外渡航届」の提出が必要です(受入研究者の欄は、国内の受入研究者なので注意)。この書類は、渡航期間が28日以上変更になった場合、再提出が必要になるそうなので、日程が確定してから提出したほうが良いかもしれません。
面接が終わると2週間程度でパスポートが送られてきます。提出したおいた学位証明書なども一緒に帰ってきました。特にDS-2019は渡航後も必要になることが多いのでなくさないようにー
参考:https://internationalcenter.umich.edu/scholars/j1-scholars/12-and-24-bars