Guest User

Untitled

a guest
May 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. // UData.pas
  2. {-----------------------------------------------------------------------------}
  3. { procedure PlayWaveFile }
  4. {-----------------------------------------------------------------------------}
  5. procedure TSpeakerInfList.PlayWaveFile;
  6. var
  7. Config: DACONFIG;
  8. Ch: Integer;
  9. MaxSample: Integer; // Max Sample
  10. ChCount1: Integer; // FbiDa 1 Ch Count
  11. ChCount2: Integer; // FbiDa 2 Ch Count
  12. SetCount: Integer;
  13. FileName: TFileName;
  14. LROut: Integer;
  15. begin
  16. { Check Max Sample }
  17. MaxSample := FPlayTmInf[FTestStep].FMaxSample;
  18. if MaxSample = 0 then
  19. begin
  20. Exit;
  21. end;
  22.  
  23. { Clear Use Chanel }
  24. for Ch := 0 to 7 do
  25. begin
  26. Config.Master.ulChNo[Ch] := 0;
  27. Config.Slave.ulChNo[Ch] := 0;
  28. end;
  29.  
  30. { Check Chanel Count & Max Sample }
  31. ChCount1 := 0;
  32. for Ch := 1 to 8 do
  33. begin
  34. if FSpeakerInf[FTestStep, Ch].FPlayTime <> 0 then
  35. begin
  36. // Channel mapping 1~8 -> board 1 1~8
  37. Config.Master.ulChNo[ChCount1] := Ch;
  38. inc(ChCount1);
  39. end;
  40. end;
  41. ChCount2 := 0;
  42. for Ch := 9 to 12 do
  43. begin
  44. if FSpeakerInf[FTestStep, Ch].FPlayTime <> 0 then
  45. begin
  46. // Channel mapping 9~12 -> board 2 1~4
  47. Config.Slave.ulChNo[ChCount2] := Ch - 8;
  48. // Channel mapping 9~12 -> board 2 5~8
  49. // Config.Slave.ulChNo[ChCount2] := Ch - 4;
  50. inc(ChCount2);
  51. end;
  52. end;
  53.  
  54. { Set Wave File Data }
  55. SetCount := 0;
  56. for Ch := 1 to 8 do
  57. begin
  58. FileName := FSpeakerInf[FTestStep, Ch].FFileName;
  59. if FileName <> '' then
  60. begin
  61. LROut := FSpeakerInf[FTestStep, Ch].FLROut;
  62. SetWaveFileData(FileName, LROut, MaxSample,
  63. ChCount1, FSmplData1[SetCount]);
  64. inc(SetCount);
  65. end;
  66. end;
  67. SetCount := 0;
  68. for Ch := 9 to 12 do
  69. begin
  70. FileName := FSpeakerInf[FTestStep, Ch].FFileName;
  71. if FileName <> '' then
  72. begin
  73. LROut := FSpeakerInf[FTestStep, Ch].FLROut;
  74. SetWaveFileData(FileName, LROut, MaxSample,
  75. ChCount2, FSmplData2[SetCount]);
  76. inc(SetCount);
  77. end;
  78. end;
  79.  
  80. { スピーカ出力 }
  81. Config.ulSmplDataNum := MaxSample;
  82. Config.fSmplFreq := FPlayTmInf[FTestStep].FSamplRate;
  83. Config.Master.ulChCount := ChCount1;
  84. Config.Master.pSmplData := @FSmplData1;
  85. Config.Slave.ulChCount := ChCount2;
  86. Config.Slave.pSmplData := @FSmplData2;
  87. try
  88. DaControl.StartSampling(Config);
  89. except
  90. on E: Exception do
  91. begin
  92. MessageDlg(E.Message, mtError, [mbOK], 0);
  93. end;
  94. end;
  95.  
  96. end;
Add Comment
Please, Sign In to add comment