亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmstretch.pas

?? 一套及時通訊的原碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit MMStretch;

(*-------------------------------------------------------------------
 * Time domain harmonic scaling by
 * Pointer Inteval Controled OverLap and ADD (PICOLA) Method
 *		C version by IKEDA Mikio
 *		original argolithm is developed by MORITA Naotaka
 *		about detail, see original paper.
 *-------------------------------------------------------------------
 * Usage
 *  PICOLA <source signal> <companded (destination) signal>
 *	   <compansion ratio>
 *         <window length> <pitch minimum> <pitch maximum>
 * Last three arguments can be abbriviated.
 *------------------------------------------------------------------*)

 // Does not work (horrible quality) leave it for now....

interface

uses
    SysUtils,
    Windows,
    Classes,
    MMSystem,
    MMRegs,
    MMObj,
    MMDSPObj,
    MMPCMSup,
    MMUtils;


type
   EMMTimeStretchError = class(Exception);

   {-- TMMTimeStretch ---------------------------------------------------------}
   TMMTimeStretch = class(TMMDSPComponent)
   private
      FEnabled       : Boolean;
      FOpen          : Boolean;
      FFirstRead     : Boolean;
//      FPitch         : Float;
      FWaveHdr       : TMMWaveHdr;
      FRealBufSize   : Longint;
      FBytesRead     : Longint;
      FMoreBuffers   : Boolean;
      FWriteBuffer   : PChar;
      FBytesWritten  : Longint;
      FDone          : Boolean;

      procedure SetEnabled(aValue: Boolean);
  //    procedure SetPitch(aValue: Float);
      function  ReadData(Buffer: PChar; dwLength: Longint; var MoreData: Boolean): Longint;
      function  WriteData(Buffer: PChar; dwLength: Longint): Longint;
      procedure ReadFromInput(lpwh: PWaveHdr; var MoreBuffers: Boolean);

   protected
      procedure SetPWaveFormat(aValue: PWaveFormatEx); override;
      procedure Opened; override;
      procedure Closed; override;
      procedure Started; override;
      procedure Reseting; override;
      procedure BufferReady(lpwh: PWaveHdr); override;
      procedure BufferLoad(lpwh: PWaveHdr; var MoreBuffers: Boolean); override;

   public
      constructor Create(aOwner: TComponent); override;
      destructor Destroy; override;

      procedure Open;
      procedure Close;
      procedure Reset;

   published
      property Input;
      property Output;
      property Enabled: Boolean read FEnabled write SetEnabled default True;
    //  property Pitch: Float read FPitch write SetPitch;
   end;

procedure StretchFile(SrcFile,DstFile: String);

implementation

{---- find maximum covariance  = pitch ----------------------------------------}
function covpitch(pitmin, pitmax, length: integer; _is: array of Smallint): integeR;
var
  i,j,pitch: integer;
  covst, covs0t, covmax, s: Float;

begin
   covmax := 0.0;

   pitch := pitmin;
   for i := pitmin to pitmax do
   begin
      covst := 0.0;
      covs0t := 0.0;
      for j := 0 to length-1 do
      begin
	 s := _is[i+j];
	 covs0t := covs0t + s * s;
	 covst  := covst + _is[j] * s;
      end;
      covst := covst / sqrt(covs0t);
      if (covst >= covmax) then
      begin
         covmax := covst;
         pitch := i;
      end;
   end;
   Result := pitch;
end;

{------------ PICOLA OverLap and Add (picOLA) stage ---------------------------}
procedure ola(pitch: integer; is1, is2: PSmallint);
var
   i: integer;
   s, w: Float;
begin
   for i := 0 to pitch-1 do
   begin
      w := i / (pitch - 1);
      s :=  is1^ * (1.0 - w) + is2^ * w;
      inc(is1);
      is2^ := Trunc(s);
      inc(is2);
   end;
end;

{------------------------------------------------------------------------------}
function amdfpitch(pitmin, pitmax, length: integer; _is: array of Smallint): integer;
var
   i, j, diff, acc, accmin, pitch: integer;

begin
   pitch := pitmin;
   accmin := 0;
   for j := 0 to length-1 do
   begin
      diff := _is[j+pitmin] - _is[j];
      if (diff > 0) then
          accmin := accmin + diff
      else
          accmin := accmin - diff;
   end;

   for i := pitmin+1 to pitmax do
   begin
      acc := 0;
      for j := 0 to length-1 do
      begin
         diff := _is[i+j] - _is[j];
	 if (diff > 0) then
             acc := acc + diff
         else
	     acc := acc - diff;
      end;

      if (acc < accmin) then
      begin
	 accmin := acc;
	 pitch := i;
      end;
   end;
   Result := pitch;
end;

var
   _is : array[0..4096] of Smallint; // signal buffer
   rate: Float = 1.1;	// compansion rate
			//case of less than 1.0 compression,
			//case of greater than 1.0 expansion

   rcomp: Float;	// internal compansion ratio
   sl: Float;
   err: float = 0.0;	// compansion rate error estimate
   acclen: Float = 0.0;

   pitmin: integer = 32;  // minimal pitch period //
   pitmax: integer = 1024; // maximal pitch period //
   pitch : integer; 	  // detected pitch period */
   length: integer = 1024;

   total: integer;
   nread: integer;	// number of read samples (from file) */
   wantread: integer;	// desired number of read samples */
   lcp: integer;	// number of copy samples */
   point: integer;	// PICOLA's pointer */
//   i: integer;		// loop counter */
   lproc: integer = 0;	// processed speech samples */

   Src,Dst: THandle;

procedure StretchFile(SrcFile,DstFile: String);
var
   i: integer;
begin
   // length := atoi(argv[4]); option
   // pitmin := atoi(argv[5]); option
   // pitmax := atoi(argv[6]); option

   //-------------- error check and initialize ---------------------

   {
    if (rate <= 0.0 || rate == 1.0)
    begin
       printf("illeagal compansion rate !!\n");
	exit(0);
    end;

    if (pitmin < 16)
    begin
        printf("pitch detection minimum threshold modified !!\n");
	pitmin = 16;
    end;

    if (pitmax > 256)
    begin
        printf("pitch detection maximum threshold modified !!\n");
	pitmax = 256;
    end;

    if (length <= 64 || length + pitmax >= 1024)
    begin
	printf("frame length out of range !!\n");
	exit(0);
    end;
}
    total := length + pitmax;
    if (rate >= 1.0) then
    begin
       // TODO:rate darf nicht 1.0 sein, also bei rate := 1.0 skippen
       rcomp := 1.0  / (rate - 1.0);
    end
    else if (rate > 0) then
    begin
       rcomp := rate / (1.0 - rate);
    end
    else
    begin
       //	fprintf(stderr, "Error from %s: illeagal compansion rate!\n", argv[0]);
       //	exit(0);
    end;

    Src := FileOpen(SrcFile,fmOpenRead);
    Dst := FileCreate(DstFile);

    //------------------- body ---------------
    wantread := total;  // total muss gesetzt werden !!!
    nread := FileRead(Src,_is, 2*wantread) div 2;

    while (nread = wantread) do
    begin
       //---- pitch extraction ----
       pitch := amdfpitch(pitmin, pitmax, length, _is);

       //---- PICOLA OverLap and ADD stage ----//

       if (rate < 1.0) then
       begin
           ola(pitch, @_is, @_is[pitch]);
           point := pitch;
       end
       else
       begin
          FileWrite(Dst,_is, 2*pitch);
          ola(pitch, @_is[pitch], @_is);
	  point := 0;
       end;

       //---- compensate compansion rate ----*/

       sl := pitch * rcomp;
       lcp := trunc(sl);
       err := err + lcp - sl;

       if (err >= 0.5) then
       begin
          dec(lcp);
          err := err - 1.0;
       end
       else if (err <= -0.5) then
       begin
       	  inc(lcp);
          err := err + 1.0;
       end;
       lproc := lproc + pitch;

       //---- PICOLA Pointer Interval Control (PIC) stage ----*/

	wantread := point + lcp;
	if (wantread > total) then
        begin
           wantread := total - point;
	   FileWrite(Dst,_is[point], 2*wantread);
	   lcp := lcp - wantread;
	   wantread := total;
	   while (lcp > 0) do
           begin
              if (lcp <= total) then
              begin
                 wantread := lcp;
	         nread := FileRead(Src,_is, 2*wantread)div 2;
	         FileWrite(Dst,_is, 2*nread);
	         if (nread <> wantread) then
                     break;
	    	 wantread := total;
	    	 nread := FileRead(Src,_is, 2*wantread)div 2;
              end
              else
              begin
                 nread := FileRead(Src,_is, 2*wantread)div 2;
	         FileWrite(Dst,_is, 2*nread);
	         if (nread <> wantread) then
	         break;
              end;
              lcp := lcp - total;
           end;
        end
        else
        begin
           FileWrite(Dst,_is[point], 2*lcp);
	   point := total - wantread;
	   // shift to next pitch period

           for i := 0 to point-1 do
           begin
              _is[i] := _is[i+wantread];
           end;
           nread := FileRead(Src,_is[point], 2*wantread)div 2;
        end;
    end;

    // write rest */
    FileWrite(Dst,_is, 2*(total - wantread + nread));

    FileClose(Src);
    FileClose(Dst);
end;

{== TMMTimeStretch ============================================================}
constructor TMMTimeStretch.Create(aOwner: TComponent);
begin
   inherited Create(aOwner);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆91免费看| 一区二区三区精品视频| 精品一区二区三区久久久| 日韩午夜中文字幕| 精品伊人久久久久7777人| 欧美精品一区二区三| 国产成人免费视频网站| 最新不卡av在线| 欧美色视频一区| 免费久久99精品国产| 2020国产精品自拍| 亚洲婷婷综合色高清在线| 99精品视频在线观看免费| 亚洲美女一区二区三区| 欧美日韩在线播放三区四区| 日本视频免费一区| 国产精品私房写真福利视频| 色伊人久久综合中文字幕| 五月激情综合色| 久久影院午夜片一区| 99久久99久久久精品齐齐| 亚洲一区二区三区四区在线观看 | 亚洲第一精品在线| 欧美一级国产精品| 成人涩涩免费视频| 亚洲电影视频在线| 中文字幕第一页久久| 欧美日韩国产高清一区二区三区| 久久99久久精品| 亚洲激情综合网| 精品久久久久一区| 色婷婷综合中文久久一本| 久久国产综合精品| 亚洲码国产岛国毛片在线| 欧美成人欧美edvon| 99精品久久免费看蜜臀剧情介绍| 日韩—二三区免费观看av| 国产精品久久午夜| 日韩欧美中文字幕制服| av成人免费在线| 黑人精品欧美一区二区蜜桃 | 欧美日韩成人综合| 国产精品18久久久| 天天综合天天综合色| 国产精品初高中害羞小美女文| 日韩一区二区电影在线| 在线亚洲人成电影网站色www| 国产乱子伦视频一区二区三区| 午夜日韩在线电影| 亚洲免费观看高清完整| 久久久精品2019中文字幕之3| 9191成人精品久久| 91豆麻精品91久久久久久| youjizz久久| 精品亚洲国内自在自线福利| 亚洲国产婷婷综合在线精品| 国产精品免费视频网站| 久久综合九色欧美综合狠狠| 4hu四虎永久在线影院成人| 日本道免费精品一区二区三区| 成人app网站| 国产精一品亚洲二区在线视频| 免费观看一级欧美片| 亚洲永久免费视频| 一二三区精品福利视频| 亚洲少妇最新在线视频| 中文字幕中文乱码欧美一区二区| 久久综合久久综合久久综合| 欧美videofree性高清杂交| 91精品国产色综合久久久蜜香臀| 欧美性生活大片视频| 色av综合在线| 日本韩国精品在线| 欧美这里有精品| 在线观看欧美精品| 欧美日韩中文字幕一区二区| 在线视频欧美精品| 欧美日韩国产美| 91精品国产色综合久久不卡蜜臀| 91精品在线免费| 日韩欧美国产综合| 精品国产亚洲在线| 久久久亚洲精品一区二区三区| 久久综合九色综合97婷婷女人| 久久久国产精品午夜一区ai换脸| 久久综合五月天婷婷伊人| 国产肉丝袜一区二区| 中文久久乱码一区二区| 亚洲女人****多毛耸耸8| 亚洲精品视频免费看| 亚洲一区二区三区四区在线观看 | 国产精品乱人伦中文| 中文字幕av一区 二区| 成人欧美一区二区三区小说| 亚洲欧美日韩中文播放 | 视频精品一区二区| 毛片基地黄久久久久久天堂| 韩国av一区二区三区在线观看| 国产91丝袜在线播放0| 国产不卡一区视频| 色88888久久久久久影院野外| 欧美日韩在线不卡| 精品国产亚洲在线| 中文字幕在线观看不卡| 亚洲影院理伦片| 国产一区二区三区在线观看免费视频 | 91一区一区三区| 6080yy午夜一二三区久久| 精品sm捆绑视频| 亚洲激情男女视频| 日韩av二区在线播放| 成人免费看的视频| 欧美区在线观看| 国产欧美日韩三级| 亚洲最快最全在线视频| 看电影不卡的网站| 91免费在线看| 日韩精品一区在线| 一区二区三区免费观看| 久久精品久久精品| 91免费视频大全| 日韩小视频在线观看专区| 亚洲丝袜精品丝袜在线| 六月丁香婷婷色狠狠久久| 色综合天天天天做夜夜夜夜做| 91精品国产综合久久久久久久久久| 欧美经典一区二区三区| 午夜国产精品影院在线观看| 成人性生交大合| 欧美一区二区日韩一区二区| 亚洲免费色视频| 国产成a人亚洲| 精品日产卡一卡二卡麻豆| 夜夜精品视频一区二区| 成人av中文字幕| 精品久久久久久亚洲综合网| 亚洲国产成人va在线观看天堂| 北岛玲一区二区三区四区| 精品黑人一区二区三区久久| 亚洲国产综合色| 99久久精品国产一区二区三区| 精品国产乱码久久久久久牛牛 | 日本一区二区免费在线观看视频| 日韩国产精品91| 91久久精品网| 亚洲日本成人在线观看| 国产91高潮流白浆在线麻豆| 欧美电视剧免费全集观看| 天堂在线亚洲视频| 欧美性生活大片视频| 亚洲免费视频中文字幕| 99精品国产热久久91蜜凸| 国产丝袜美腿一区二区三区| 老司机精品视频线观看86| 5858s免费视频成人| 亚洲最新在线观看| 色欧美片视频在线观看 | 国产欧美一区二区精品忘忧草| 麻豆91在线看| 91精品国产aⅴ一区二区| 亚洲v中文字幕| 7777精品伊人久久久大香线蕉完整版 | 中文字幕在线观看不卡| 成人黄页在线观看| 中日韩免费视频中文字幕| www.在线成人| 亚洲私人黄色宅男| 91久久精品一区二区| 一区二区三区欧美日| 欧美亚洲国产一区在线观看网站| 亚洲精品福利视频网站| 在线观看精品一区| 亚洲国产精品久久久久秋霞影院| 欧美日韩一区二区电影| 免费不卡在线观看| 日韩欧美国产wwwww| 经典一区二区三区| 久久日韩粉嫩一区二区三区| 国产成人精品一区二| 综合婷婷亚洲小说| 欧美丝袜丝交足nylons| 性感美女极品91精品| 日韩视频免费观看高清完整版| 久久成人久久爱| 国产日产亚洲精品系列| 97se亚洲国产综合自在线观| 一区二区三区四区乱视频| 欧美日韩一区三区四区| 裸体一区二区三区| 中文字幕成人网| 欧美日韩综合不卡| 韩国精品久久久| 日韩美女视频一区二区 | 国产盗摄一区二区三区| 亚洲青青青在线视频| 7799精品视频| 成人免费毛片aaaaa**| 丝袜诱惑亚洲看片| 国产视频一区在线播放| 欧美视频自拍偷拍|