Код:
;АудиоДеформатор в2.0
;©2023 Федин Максим Александрович

Structure WAVEHEADER
  RIFF.l
  FileSize.l
  RIFFType.l
  FmtChunkId.l
  FmtChunkSize.l
  FormatTag.w
  Channels.w
  SampleRate.l
  BytesPerSecond.l
  BlockAlign.w
  BitsPerSample.w
  DataChunkId.l
  DataSize.l
EndStructure

WaveHeader.WAVEHEADER

InputFile$ = OpenFileRequester("Выберите PCM Wave 44100Гц 16-бит стерео файл без дополнительной информации.", "", "Microsoft PCM Wave (*.wav)|*.wav|",  0)
If  FileSize(inputFile$)  < SizeOf(WAVEHEADER)
  End
EndIf

If  ReadFile(0, InputFile$) = 0
  MessageRequester("Деформатор.",  "Невозможно открыть файл для чтения.",  #PB_MessageRequester_Error)
  End
EndIf

ReadData(0, @WaveHeader,  SizeOf(WAVEHEADER))

With  WaveHeader
  If  \BitsPerSample  <>  16  And \Channels <>  2 And \SampleRate <>  44100
    MessageRequester("Деформатор", "Неподдерживаемый формат файла.", #PB_MessageRequester_Error)
    CloseFile(0)
    End
  EndIf
EndWith

*Buffer       = AllocateMemory(WaveHeader\DataSize)
If  *Buffer = 0
  MessageRequester("Деформатор", "Невозможно выделить память для данных.", #PB_MessageRequester_Error)
  CloseFile(0)
  End
EndIf

*Byte.Ascii = *Buffer
*Overflow   = *Buffer + WaveHeader\DataSize

While *Byte < *Overflow
  *Byte\a = ReadAsciiCharacter(0)
  *Byte + SizeOf(Ascii)
Wend

If  CreateFile(1, InputFile$+" (деформатор).wav") = 0
  MessageRequester("Деформатор", "Невозможно создать обработанный файл.",  #PB_MessageRequester_Error)
  FreeMemory(*Buffer)
  CloseFile(0)
  End
EndIf

WriteData(1,  @WaveHeader,  SizeOf(WAVEHEADER))

*Short.Word = *Buffer

While *Short  < *Overflow
  Select  Random(2)
      Case  1
        *Short\w  + Random(Random(3,2),1)
        If  *Short\w  > 32767
          Select  Random(1)
              Case  0
                *Short\w  = 32767
              Case  1
                *Short\w  = 32766
          EndSelect
        EndIf
      Case  2
        Case  1
        *Short\w  - Random(Random(3,2),1)
        If  *Short\w  < -32769
          Select  Random(1)
              Case  0
                *Short\w  = -32768
              Case  1
                *Short\w  = -32767
          EndSelect
        EndIf
  EndSelect
  WriteWord(1,  *Short\w)  
  *Short  + SizeOf(Word)
Wend

FreeMemory(*Buffer)
MessageRequester("Деформатор", "Готово.",  #PB_MessageRequester_Info)

а этот почему то делает тишину вместо звука.

Код:
;©2024 Федин Максим Александрович
;Смазыватель
Structure WAVEHEADER
  RIFF.l
  FileSize.l
  RIFFType.l
  FmtChunkId.l
  FmtChunkSize.l
  FormatTag.w
  Channels.w
  SampleRate.l
  BytesPerSecond.l
  BlockAlign.w
  BitsPerSample.w
  DataChunkId.l
  DataSize.l
EndStructure

WaveHeader.WAVEHEADER

InputFile$ = OpenFileRequester("Выберите PCM Wave 44100Гц 16-бит стерео файл без дополнительной информации.", "", "Microsoft PCM Wave (*.wav)|*.wav|",  0)
If  FileSize(inputFile$)  < SizeOf(WAVEHEADER)
  End
EndIf

If  ReadFile(0, InputFile$) = 0
  MessageRequester("Смазыватель",  "Невозможно открыть файл для чтения.",  #PB_MessageRequester_Error)
  End
EndIf

ReadData(0, @WaveHeader,  SizeOf(WAVEHEADER))

With  WaveHeader
  If  \BitsPerSample  <>  16  And \Channels <>  2 And \SampleRate <>  44100
    MessageRequester("Смазыватель", "Неподдерживаемый формат файла.", #PB_MessageRequester_Error)
    CloseFile(0)
    End
  EndIf
EndWith

*Buffer       = AllocateMemory(WaveHeader\DataSize)
If  *Buffer = 0
  MessageRequester("Смазыватель", "Невозможно выделить память для данных.", #PB_MessageRequester_Error)
  CloseFile(0)
  End
EndIf

*Byte.Ascii = *Buffer
*Overflow   = *Buffer + WaveHeader\DataSize

While *Byte < *Overflow
  *Byte\a = ReadAsciiCharacter(0)
  *Byte + SizeOf(Ascii)
Wend

If  CreateFile(1, InputFile$+" (смазыватель).wav") = 0
  MessageRequester("Смазыватель", "Невозможно создать обработанный файл.",  #PB_MessageRequester_Error)
  FreeMemory(*Buffer)
  CloseFile(0)
  End
EndIf

WriteData(1,  @WaveHeader,  SizeOf(WAVEHEADER))

*Short.Word = *Buffer

While *Short  < *Overflow
  If  (*Short < (*Overflow - SizeOf(Word)))
    *Short2.Word  = *Short  + SizeOf(Word)
    *Short2\w = PeekW(*Short+SizeOf(Word))
  Else
    *Short2\w = *Short\w
  EndIf
  Select  Random(1,0)
      Case  0
        Select  Random(3,0)
          Case  0
            *Short\w  = Int((*Short\w + *Short2\w)*0.5)
          Case 1
            *Short\w  = Int(Round((*Short\w + *Short2\w)*0.5,  #PB_Round_Nearest))
          Case  2
            *Short\w  = Int(Round((*Short\w + *Short2\w)*0.5,  #PB_Round_Down))
          Case  3
            *Short\w  = Int(Round((*Short\w + *Short2\w)*0.5,  #PB_Round_Up))
        EndSelect
      Case  1
        If  (*Short < (*Overflow - SizeOf(Word) - SizeOf(Word)))
          *Short3.Word  = *Short2 + SizeOf(Word)
          *Short3\w = PeekW(*Short2 + SizeOf(Word))
        Else
          *Short3\w = *Short2\w
        EndIf
        Select  Random(3,0)
          Case  0
            *Short\w  = Int((*Short\w + *Short2\w + *Short3\w)  / 3)
          Case 1
            *Short\w  = Int(Round((*Short\w + *Short2\w + *Short3\w) / 3,  #PB_Round_Nearest))
          Case  2
            *Short\w  = Int(Round((*Short\w + *Short2\w + *Short3\w) / 3,  #PB_Round_Down))
          Case  3
            *Short\w  = Int(Round((*Short\w + *Short2\w + *Short3\w) / 3,  #PB_Round_Up))
        EndSelect
  EndSelect
  WriteWord(1,  *Short\w)  
  *Short  + SizeOf(Word)
Wend

FreeMemory(*Buffer)
MessageRequester("Смазыватель", "Готово.",  #PB_MessageRequester_Info)

У кого какие предложения?
Ещё напишу ревербератор и линию задержки. Но сейчас никак не могу понять почему не работает второй код.