GIVEIO

Windows NT/2000/XPでは、ユーザーが直接パラレルポート(プリンタポート)の入出力を制御できない構造になっています。 インターネットでいろいろ探していると、GIVEIO.sysなるものを発見しました。
giveio.sys インストール手順
などを参考にし、instdrv016.lzhとdirectio.zipを入手後します。

上記のホームページに従って、GIVEIO.sysをinstallします。
コントロールパネルを開いてシステムをダブルクリックします。 システムのプロパティが開いたところで、ハードウェアのTABを押し、デバイスマネージャーを選択、 メニューバーの表示→非表示のデバイスを表示すると、プラグアンドプレイデナイドライバが出てきます。

GIVEIO.sysが正常に動作しているのを確認できたら、MATLABからプリンタポートにtrigger信号を出力できます。
まずデバイスマネージャーを使ってプリンタポートのプロパティを確認します。

MATLABからプリンタポートに出力するMEXファイルを作成しました。
hns_lpt.c
hns_lpt.dll
mismatch fieldのタスクをつくってみます。
% ドレミファソラシドでつくったものを借用
fs=44100; % sampling frequency
t=linspace(0,1,(fs+1))'; % まず1秒間の時系列を作成
t(t>0.05)=[]; % 時系列を0〜50msecとする
x=440*2.^((0:12)/12); % 440〜880Hzを12音階に等分
y=sin(t*2*pi*x); % 各音階の時系列作成
t1=find(t<0.003);
t2=find(t>(0.05-0.003));
w=blackman(size(t1,1)+size(t2,1)); % signal processing toolboxのblackman関数
y([t1;t2],:)=(w*ones(1,size(y,2))).*y([t1;t2],:);
t=cputime;nave=500;ISI=0.5;
y1=y(:,[4,4]);y2=y(:,[11,11]);
n=1;tic;tt=zeros(3,length(nave));
while 1;
if toc>=ISI;
tt(1,n)=cputime-t;tic;
if rand(1)>0.8;
hns_lpt(1); % トリガー信号1
tt(2,n)=cputime-t;
wavplay(y1,fs);
tt(3,n)=cputime-t;
else
hns_lpt(2); % トリガー信号2
tt(2,n)=cputime-t;
wavplay(y2,fs);
tt(3,n)=cputime-t;
end;
hns_lpt(0);% トリガー信号0(必須)
n=n+1;
if n>nave;break;end;
if strcmp('q',clipboard('paste'));break;end; %クリップボードの文字がqになると停止
end;
end;
tt

最初のtrigger以外は潜時のズレはなさそうです。
プリンタポート用コネクタとNeuromagのトリガーボックスをつなげばOKです。
standard刺激がトリガー信号1に、rare刺激がトリガー信号2になっています。