開発終了しました
クロスフェードをかける方法がよく用いられているように感じました、pyaudioでも簡単にできそうです。実際にPythonで書かれたコードもウェブで見つかりました。
自分のやってることにあんまり価値がなかったのでほどほどでほかのことに映ります。
リビジョン | a2a9e3adb115de8717bc46572c63ac8463574599 (tree) |
---|---|
日時 | 2018-08-21 17:36:20 |
作者 | yamat0jp <yamat0jp@yaho...> |
コミッター | yamat0jp |
勢い余った修正が間違っていました
書き直しておきます
@@ -5,7 +5,7 @@ | ||
5 | 5 | <FrameworkType>VCL</FrameworkType> |
6 | 6 | <MainSource>changer.dpr</MainSource> |
7 | 7 | <Base>True</Base> |
8 | - <Config Condition="'$(Config)'==''">Debug</Config> | |
8 | + <Config Condition="'$(Config)'==''">Release</Config> | |
9 | 9 | <Platform Condition="'$(Platform)'==''">Win64</Platform> |
10 | 10 | <TargetedPlatforms>3</TargetedPlatforms> |
11 | 11 | <AppType>Application</AppType> |
@@ -532,15 +532,15 @@ | ||
532 | 532 | <Operation>1</Operation> |
533 | 533 | </Platform> |
534 | 534 | </DeployClass> |
535 | - <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> | |
535 | + <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/> | |
536 | 536 | <ProjectRoot Platform="iOSDevice" Name="$(PROJECTNAME).app"/> |
537 | 537 | <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/> |
538 | 538 | <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/> |
539 | 539 | <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/> |
540 | 540 | <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/> |
541 | 541 | <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/> |
542 | + <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/> | |
542 | 543 | <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/> |
543 | - <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/> | |
544 | 544 | </Deployment> |
545 | 545 | <Platforms> |
546 | 546 | <Platform value="Win32">True</Platform> |
@@ -14,7 +14,7 @@ uses Unit2; | ||
14 | 14 | |
15 | 15 | function effect16BitWav(const sp: SpParam): integer; |
16 | 16 | const |
17 | - j = 24; | |
17 | + j = 2; | |
18 | 18 | var |
19 | 19 | i, k, a, pmin, pmax: integer; |
20 | 20 | len, temp_size, offset0, offset1, p, q: integer; |
@@ -26,6 +26,8 @@ var | ||
26 | 26 | var |
27 | 27 | b, c: integer; |
28 | 28 | begin |
29 | + ma := 0.0; | |
30 | + p := pmin; | |
29 | 31 | for b := pmin to pmax - 1 do |
30 | 32 | begin |
31 | 33 | r[b] := 0.0; |
@@ -47,8 +49,8 @@ begin | ||
47 | 49 | rate := 0.66; |
48 | 50 | len := trunc(sp.sizeOfData - sp.posOfData / (rate * sp.channels)); |
49 | 51 | temp_size := trunc(len * 0.01); |
50 | - pmin := trunc(len * 0.005); | |
51 | - pmax := trunc(len * 0.02); | |
52 | + pmin := trunc(sp.samplePerSec * 0.005); | |
53 | + pmax := trunc(sp.samplePerSec * 0.02); | |
52 | 54 | SetLength(r, pmax); |
53 | 55 | SetLength(pCpy, len); |
54 | 56 | SetLength(pRes, len); |
@@ -58,8 +60,6 @@ begin | ||
58 | 60 | s.Position := sp.posOfData; |
59 | 61 | s.Read(Pointer(pRes)^, s.Size); |
60 | 62 | s.Free; |
61 | - ma := 0.0; | |
62 | - p := pmin; | |
63 | 63 | if Form2.CheckBox1.Checked = false then |
64 | 64 | sub; |
65 | 65 | while offset1 + 2 * pmax < len do |
@@ -82,7 +82,7 @@ begin | ||
82 | 82 | inc(offset0, q); |
83 | 83 | inc(offset1, p + q); |
84 | 84 | Application.ProcessMessages; |
85 | - Form2.ProgressBar1.Position:=trunc(100*(offset1 + 2*pmax)/len); | |
85 | + Form2.ProgressBar1.Position := trunc(100 * (offset1 + 2 * pmax) / len); | |
86 | 86 | end; |
87 | 87 | pitch := 1.5; |
88 | 88 | k := trunc(len / pitch); |
@@ -112,7 +112,7 @@ begin | ||
112 | 112 | Finalize(pCpy); |
113 | 113 | Finalize(pMem); |
114 | 114 | Finalize(r); |
115 | - Form2.ProgressBar1.Position:=0; | |
115 | + Form2.ProgressBar1.Position := 0; | |
116 | 116 | end; |
117 | 117 | |
118 | 118 | function sinc(x: Single): Single; |