OSDN Git Service

かなりいい感じです
authoryamat0jp <yamat0jp@yahoo.co.jp>
Sun, 13 May 2018 04:36:05 +0000 (13:36 +0900)
committeryamat0jp <yamat0jp@yahoo.co.jp>
Sun, 13 May 2018 04:36:05 +0000 (13:36 +0900)
完成だと思います ボリュームが小さいです

WriteHeader.pas
spWav.pas
wav.pas
wav_proj.dpr
wav_proj.dproj
wav_proj.dproj.local

index f222e2b..4e6dd1b 100644 (file)
@@ -2,14 +2,13 @@ unit WriteHeader;
 
 interface
 
-uses System.Classes;
+uses System.Classes, spWav;
 
-{$INCLUDE spWav}
-function waveHeaderWrite(fp: TFileStream; sp: SpParam): integer;
+function waveHeaderWrite(fp: TFileStream; const sp: SpParam): integer;
 
 implementation
 
-function waveHeaderWrite(fp: TFileStream; sp: SpParam): integer;
+function waveHeaderWrite(fp: TFileStream; const sp: SpParam): integer;
 var
   bytes: Byte;
   wrWavHdr: WrSWaveFileHeader;
index c52222b..b465e72 100644 (file)
--- a/spWav.pas
+++ b/spWav.pas
@@ -1,3 +1,6 @@
+unit spWav;
+
+interface
 
 type
   SWaveFileHeader = record
@@ -49,4 +52,8 @@ const
   _MAX_PATH = 255;
 
   WAV_MONAURAL = 1;
-  WAV_STEREO = 2;
\ No newline at end of file
+  WAV_STEREO = 2;
+
+implementation
+
+end.
diff --git a/wav.pas b/wav.pas
index 35abac0..c765bad 100644 (file)
--- a/wav.pas
+++ b/wav.pas
@@ -3,9 +3,8 @@ unit wav;
 interface
 
 uses
-  System.Classes, System.SysUtils;
+  System.Classes, System.SysUtils, spWav;
 
-{$INCLUDE spWav}
 function readFmtChank(fp: TFileStream; out waveFmtPcm: tWaveFormatPcm): integer;
 function wavHdrRead(wavefile: PChar; var sp: SpParam): integer;
 
@@ -20,7 +19,7 @@ begin
     Writeln('\83`\83\83\83\93\83l\83\8b\90\94\81F', waveFmtPcm.channels);
     Writeln('\83T\83\93\83v\83\8a\83\93\83O\8eü\94g\90\94\81F', waveFmtPcm.sampleParSec);
     Writeln('\83o\83C\83g\90\94\81@/\81@\95b\81F', waveFmtPcm.bytesPerSec);
-    Writeln('\83o\83C\83g\90\94 \82w\83`\83\83\83\93\83l\83\8b\90\94\81F', waveFmtPcm.blockAlign);
+    Writeln('\83o\83C\83g\90\94 \82w \83`\83\83\83\93\83l\83\8b\90\94\81F', waveFmtPcm.blockAlign);
     Writeln('\83r\83b\83g\90\94\81@/\81@\83T\83\93\83v\83\8b\81F', waveFmtPcm.bitsPerSample);
     with waveFmtPcm do
     begin
@@ -112,6 +111,8 @@ begin
         Exit;
       end;
       sp.samplePerSec := waveFmtPcm.sampleParSec;
+      sp.bitsPerSample := waveFmtPcm.bitsPerSample;
+      sp.channels := waveFmtPcm.channels;
       sp.bytesPerSec := waveFmtPcm.bytesPerSec;
       fp.Seek(fPos + len, soFromBeginning);
     end
index a93819b..f65ca75 100644 (file)
@@ -7,11 +7,24 @@ uses
   System.SysUtils,
   System.Classes,
   wav in 'wav.pas',
-  WriteHeader in 'WriteHeader.pas';
+  WriteHeader in 'WriteHeader.pas',
+  spWav in 'spWav.pas';
 
 function cut(fpIn, fpOut: TFileStream; sp: SpParam): integer;
+var
+  Buffer: array of ShortInt;
+  size: integer;
 begin
-
+  size := (sp.endpos - sp.startpos) * sp.channels * sp.samplePerSec *
+    sp.bitsPerSample div 8;
+  SetLength(Buffer, size);
+  try
+    fpIn.ReadBuffer(Pointer(Buffer)^, size);
+    fpOut.WriteBuffer(Pointer(Buffer)^, size);
+    Finalize(Buffer);
+  except
+    result := -1;
+  end;
 end;
 
 function checkRange(var sp: SpParam): integer;
@@ -30,14 +43,13 @@ begin
   end;
 end;
 
-function wavDataWrite(fpIn, fpOut: TFileStream; sp: SpParam): integer;
+function wavDataWrite(fpIn, fpOut: TFileStream; const sp: SpParam): integer;
 begin
   fpIn.Position := sp.posOfData;
- // fpOut.Position := sp.posOfData;
-  result:=cut(fpIn,fpOut,sp);
+  result := cut(fpIn, fpOut, sp);
 end;
 
-function wavWrite(inFile, outFile: PChar; sp: SpParam): integer;
+function wavWrite(inFile, outFile: PChar; var sp: SpParam): integer;
 var
   fpIn, fpOut: TFileStream;
 begin
@@ -72,8 +84,8 @@ var
 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¢ }
-    sp.startpos := LongInt(ParamStr(3));
-    sp.endpos := LongInt(ParamStr(4));
+    sp.startpos := StrToInt(ParamStr(3));
+    sp.endpos := StrToInt(ParamStr(4));
     if sp.startpos > sp.endpos then
     begin
       Writeln('\8aJ\8en\95b\82Í\8fI\97¹\95b\82ð\92´\82¦\82Ä\82Í\82È\82è\82Ü\82¹\82ñ');
index bfacd9b..0f66cf2 100644 (file)
         <DCC_RemoteDebug>true</DCC_RemoteDebug>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <Debugger_RunParams>toujyo.wav effect.wav 5 10</Debugger_RunParams>
+        <Debugger_RunParams>toujyo.wav effect.wav 1 2</Debugger_RunParams>
         <DCC_RemoteDebug>false</DCC_RemoteDebug>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         </DelphiCompile>
         <DCCReference Include="wav.pas"/>
         <DCCReference Include="WriteHeader.pas"/>
+        <DCCReference Include="spWav.pas"/>
         <BuildConfiguration Include="Release">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
index 74aa953..ca04ac1 100644 (file)
@@ -4,13 +4,13 @@
     <Transaction>2017/07/29 10:51:42.000.518,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2017/09/17 22:32:14.000.990,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/10/14 15:27:41.000.965,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\FormUnit1.pas</Transaction>
-    <Transaction>2017/10/14 15:27:42.000.160,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/10/14 15:27:42.000.078,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
+    <Transaction>2017/10/14 15:27:42.000.160,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:48:10.000.837,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:48:11.000.893,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:49:15.000.988,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
-    <Transaction>2017/10/19 20:49:16.000.125,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:49:16.000.218,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
+    <Transaction>2017/10/19 20:49:16.000.125,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/10/19 20:49:45.000.913,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <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 21:37:00.000.365,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.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.037,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.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: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: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/10/29 16:55:16.000.109,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
+    <Transaction>2017/10/29 16:55:16.000.343,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/10/30 15:04:38.000.106,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/11/01 16:00:52.000.956,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerMethodsUnit1.pas</Transaction>
     <Transaction>2017/11/01 16:00:53.000.058,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.pas</Transaction>
     <Transaction>2017/11/01 18:12:24.000.771,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.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:33:21.000.133,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\ServerContainerUnit1.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: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>2017/11/01 19:08:03.000.193,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\WebModuleUnit1.pas</Transaction>
     <Transaction>2017/11/30 19:11:41.000.772,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2018/01/01 12:40:34.000.125,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2018/01/01 12:40:55.000.044,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
     <Transaction>2018/05/07 18:00:45.000.726,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
-    <Transaction>2018/05/07 18:01:10.000.795,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav.pas</Transaction>
-    <Transaction>2018/05/07 18:01:39.000.274,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav_proj.dproj</Transaction>
+    <Transaction>2018/05/07 18:01:10.000.795,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
+    <Transaction>2018/05/07 18:01:39.000.274,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\wav_proj.dproj=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
     <Transaction>2018/05/07 21:20:21.000.796,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
-    <Transaction>2018/05/07 21:20:27.000.646,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\spWave.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
+    <Transaction>2018/05/07 21:20:27.000.646,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\spWave.pas</Transaction>
     <Transaction>2018/05/09 21:56:39.000.226,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
-    <Transaction>2018/05/09 21:56:54.000.027,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\WriteHeader.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas</Transaction>
+    <Transaction>2018/05/09 21:56:54.000.027,C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\Unit1.pas=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\WriteHeader.pas</Transaction>
+    <Transaction>2018/05/13 12:45:57.000.431,=C:\Users\yamat\Documents\Embarcadero\Studio\Projects\myapp\wav\spWav.pas</Transaction>
   </Transactions>
 </BorlandProject>