JOY の入ってPCで少しやってみました。
アンプからPCに通すと遅延が生じるので、ループバックでモニター出力としてスピーカーに出したらほぼ遅延なしで伴奏と声が出るようになったとうやつ。
みんな遅延には苦しめられてるらしいです。
そのかわり、ループバックしてるから採点とかはできなさそうかな?
あと、このサービスはピッチを変えるのにも対応してないらしいです。
あ、セッティングは全部連れです。
暇だったのでちょろっと。
本当に大したことないです。
program test;
var
i : integer;
d : double;
begin
d := 0.0;
for i := 0 to 10 do
begin
d := d+0.1;
write('i=',i:2);
write(' d=',d);
writeln;
end
end.
コンパイラは Lazarus に入っている fpc を mingw で使うため、mingw のコンソールからパスをまず設定しておきます。仮に c:\lazarus\fpc\3.2.0\bin\x86_64-win64 に fpc があったとしたら、コマンドラインより次のように入力します。(さっきのソースファイル名を test.pas だったとします。)
$ export PATH=$PATH:/c/lazarus/fpc/3.2.0/bin/x86_64-win64
で、上のソースがあるところで以下のコマンドを実行。
$ fpc test.pas
Free Pascal Compiler version 3.2.0 [2021/02/21] for x86_64
Copyright (c) 1993-2020 by Florian Klaempfl and others
Target OS: Win64 for x64
Compiling test.pas
Linking test.exe
14 lines compiled, 0.0 sec, 37504 bytes code, 2020 bytes data
$ ./test
i= 0 d= 1.0000000000000001E-001
i= 1 d= 2.0000000000000001E-001
i= 2 d= 3.0000000000000004E-001
i= 3 d= 4.0000000000000002E-001
i= 4 d= 5.0000000000000000E-001
i= 5 d= 5.9999999999999998E-001
i= 6 d= 6.9999999999999996E-001
i= 7 d= 7.9999999999999993E-001
i= 8 d= 8.9999999999999991E-001
i= 9 d= 9.9999999999999989E-001
i=10 d= 1.0999999999999999E+000
本当になんともないプログラムですが………。
ちなみに、Algol 68 Genieでは似たようなことを以下のようにしてできるようで。
BEGIN
INT i:=0; LONG REAL d:=0.0;
FOR i FROM 0 TO 10 DO
d := d+0.1;
print (("i=",i));
print ((" d=",d,newline))
OD
END
このファイルが test.a68 で コマンド a68g にパスが通ってるなら、
$ a68g test.a68
i= +0 d=+1.000000000000000000000000000e -1
i= +1 d=+2.000000000000000000000000000e -1
i= +2 d=+3.000000000000000000000000000e -1
i= +3 d=+4.000000000000000000000000000e -1
i= +4 d=+5.000000000000000000000000000e -1
i= +5 d=+6.000000000000000000000000000e -1
i= +6 d=+7.000000000000000000000000000e -1
i= +7 d=+8.000000000000000000000000000e -1
i= +8 d=+9.000000000000000000000000000e -1
i= +9 d=+1.000000000000000000000000000e +0
i= +10 d=+1.100000000000000000000000000e +0
となりました。
ちょっと algol68 で実行できるまでが大変でしたが。コンパイルもできるはずですがみつからず。