pInMem := TMemoryStream.Create;
pOutMem := TMemoryStream.Create;
try
- if pInMem.CopyFrom(fpIn, sp.sizeOfData) = -1 then
- begin
- result := -1;
- Exit;
- end;
+ pInMem.CopyFrom(fpIn, 0);
+ pOutMem.SetSize(pInMem.Size);
if sp.bitsPerSample = 8 then
result := effect8BitWav(pInMem, pOutMem, sp)
else
result := effect16BitWav(pInMem, pOutMem, sp);
- if fpOut.CopyFrom(pOutMem, sp.sizeOfData) = 0 then
- begin
+ fpOut.CopyFrom(pOutMem, 0);
+ except
+ on EReadError do
+ result := -1;
+ on EWriteError do
result := -1;
- Writeln('\8f\91\82«\8d\9e\82Ý\8e¸\94s');
- end;
- finally
- pInMem.Free;
- pOutMem.Free;
end;
+ pInMem.Free;
+ pOutMem.Free;
end;
function wavWrite(inFile, outFile: PChar; const wHdr: WrSWaveFileHeader;
begin
result := 0;
try
- fpIn:=TFileStream.Create(inFile,fmOpenRead);
+ fpIn := TFileStream.Create(inFile, fmOpenRead);
fpOut := TFileStream.Create(outFile, fmCreate);
- fpOut.WriteBuffer(wHdr, SizeOf(WrSWaveFileHeader));
if wavDataWrite(fpIn, fpOut, sp) = -1 then
raise EWriteError.Create('');
except
function effect8BitWav(InInMem, InOutMem: TMemoryStream; sp: SpParam): integer;
var
- i, j: Integer;
+ i, j: integer;
pInMem, pOutMem: TBytes;
begin
- j:=sp.sizeOfData-2;
- pInMem:=InInMem.Memory;
- pOutMem:=InOutMem.Memory;
+ j := sp.sizeOfData - 2;
+ pInMem := InInMem.Memory;
+ pOutMem := InOutMem.Memory;
for i := 0 to sp.sizeOfData div 2 do
begin
- pOutMem[2*i]:=pInMem[j];
- pOutMem[2*i+1]:=pInMem[j+1];
- dec(j,2);
+ pOutMem[2 * i] := pInMem[j];
+ pOutMem[2 * i + 1] := pInMem[j + 1];
+ dec(j, 2);
end;
end;
function effect16BitWav(InInMem, InOutMem: TMemoryStream; sp: SpParam): integer;
var
- i, j, k: Integer;
+ i, j, k: integer;
pInMem, pOutMem: TBytes;
begin
- pInMem:=InInMem.Memory;
- pOutMem:=InOutMem.Memory;
- k:=sp.sizeOfData div 2;
+ pInMem := InInMem.Memory;
+ pOutMem := InOutMem.Memory;
+ i := 0;
+ k := sp.sizeOfData div 2;
while i < k do
begin
- pOutMem[i]:=pInMem[j];
- pOutMem[i+1]:=pInMem[j+1];
- inc(i,2);
- dec(j,2);
+ pOutMem[i] := pInMem[j];
+ pOutMem[i + 1] := pInMem[j + 1];
+ inc(i, 2);
+ dec(j, 2);
end;
end;
System.Classes,
spWav in 'spWav.pas',
effect in 'effect.pas',
- WriteHeader in 'WriteHeader.pas';
-
-procedure setupHeader(var wHdr: WrSWaveFileHeader; var sp: SpParam);
-var
- bytes: Byte;
-begin
- wHdr.hdrRiff := STR_RIFF;
- wHdr.sizeOfFile := sp.sizeOfData + SizeOf(WrSWaveFileHeader) - 8;
- wHdr.hdrWave := STR_WAVE;
- wHdr.hdrFmt := STR_fmt;
- wHdr.sizeOfFmt := SizeOf(tWaveFormatPcm);
- wHdr.stWaveFormat.formatTag := 1;
- wHdr.stWaveFormat.channels := sp.channels;
- wHdr.stWaveFormat.sampleParSec := sp.samplePerSec;
- bytes := sp.bitsPerSample div 8;
- wHdr.stWaveFormat.bytesPerSec := bytes * sp.channels * sp.samplePerSec;
- wHdr.stWaveFormat.blockAlign := bytes * sp.channels;
- wHdr.stWaveFormat.bitsPerSample := sp.bitsPerSample;
- wHdr.hdrData := STR_data;
- wHdr.sizeOfData := sp.sizeOfData;
-end;
+ WriteHeader in 'WriteHeader.pas',
+ wav in 'wav.pas';
var
sp: SpParam;
- totalLength: integer;
hdrHeader: WrSWaveFileHeader;
begin
try
{ TODO -oUser -cConsole \83\81\83C\83\93 : \82±\82±\82É\83R\81[\83h\82ð\8bL\8fq\82µ\82Ä\82\82¾\82³\82¢ }
- if ParamCount <> 3 then
+ if ParamCount <> 2 then
begin
usage;
Exit;
end;
+ if wavHdrRead(PChar(ParamStr(1)), sp) = -1 then
+ Exit;
if wavWrite(PChar(ParamStr(1)), PChar(ParamStr(2)), hdrHeader, sp) = -1 then
Exit;
Writeln('\8a®\97¹');
<FrameworkType>None</FrameworkType>
<MainSource>wav_proj.dpr</MainSource>
<Base>True</Base>
- <Config Condition="'$(Config)'==''">Debug</Config>
+ <Config Condition="'$(Config)'==''">Release</Config>
<Platform Condition="'$(Platform)'==''">Win32</Platform>
<TargetedPlatforms>3</TargetedPlatforms>
<AppType>Console</AppType>
<DCC_RemoteDebug>true</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
- <Debugger_RunParams>effect.wav 100 2000</Debugger_RunParams>
+ <Debugger_RunParams>toujyo.wav effect.wav</Debugger_RunParams>
<DCC_RemoteDebug>false</DCC_RemoteDebug>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
<DCCReference Include="spWav.pas"/>
<DCCReference Include="effect.pas"/>
<DCCReference Include="WriteHeader.pas"/>
+ <DCCReference Include="wav.pas"/>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
<Transaction>2017/10/19 20:49:45.000.816,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
<Transaction>2017/10/19 20:50:18.000.999,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
<Transaction>2017/10/19 20:50:19.000.049,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
+ <Transaction>2017/10/19 21:37:00.000.271,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/10/19 21:37:00.000.652,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
<Transaction>2017/10/19 21:37:00.000.365,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
- <Transaction>2017/10/19 21:37:00.000.271,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/10/28 22:58:31.000.296,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/10/29 14:44:00.000.024,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
- <Transaction>2017/10/29 16:13:37.000.174,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
<Transaction>2017/10/29 16:13:37.000.037,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
+ <Transaction>2017/10/29 16:13:37.000.174,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
<Transaction>2017/10/29 16:13:37.000.809,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
<Transaction>2017/10/29 16:55:16.000.244,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
<Transaction>2017/10/29 16:55:16.000.343,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
<Transaction>2017/11/01 18:21:25.000.947,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
<Transaction>2017/11/01 18:21:26.000.254,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
<Transaction>2017/11/01 18:23:22.000.440,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
- <Transaction>2017/11/01 18:23:22.000.193,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\FormUnit1.pas</Transaction>
<Transaction>2017/11/01 18:23:22.000.344,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
+ <Transaction>2017/11/01 18:23:22.000.193,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\FormUnit1.pas</Transaction>
<Transaction>2017/11/01 18:33:21.000.032,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
<Transaction>2017/11/01 18:33:21.000.133,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
<Transaction>2017/11/01 18:33:39.000.795,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
<Transaction>2018/05/13 21:58:37.377,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
<Transaction>2018/05/13 21:58:48.578,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\effect.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
<Transaction>2018/05/13 22:29:03.282,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\WriteHeader.pas</Transaction>
+ <Transaction>2018/05/13 22:46:16.228,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav.pas</Transaction>
</Transactions>
</BorlandProject>