Треугольники:
DataSection
WaveString:
IncludeBinary "Data.txt"
EndDataSection
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
Global WaveHeader.WAVEHEADER, File
With WaveHeader
CopyMemory(?WaveString, @\RIFF, 4)
CopyMemory(?WaveString+4, @\RIFFType, 4)
CopyMemory(?WaveString+8, @\FmtChunkId, 4)
CopyMemory(?WaveString+12,@\DataChunkId, 4)
\FileSize = SizeOf(WAVEHEADER) + (2 * 65536 -1) * SizeOf(Word) - 8
\FmtChunkSize = 16
\FormatTag = 1
\Channels = 1
\SampleRate = 44100
\BitsPerSample = 16
\BytesPerSecond = \SampleRate * \BitsPerSample / 8 * \Channels
\BlockAlign = \BitsPerSample / 8 *\Channels
\DataSize = ((2 * 65536 -1) * SizeOf(Word))
EndWith
CreateFile(0, "Волна.wav")
WriteData(0, @WaveHeader, SizeOf(WaveHeader))
For a = 0 To 32767
WriteWord(0, a)
Next
For a = 32766 To -32768 Step -1
WriteWord(0, a)
Next
For a = -32768 To -1
WriteWord(0, a)
Next
CloseFile(0)
Прямоугольники:
DataSection
WaveString:
IncludeBinary "Data.txt"
EndDataSection
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
Global WaveHeader.WAVEHEADER, File
With WaveHeader
CopyMemory(?WaveString, @\RIFF, 4)
CopyMemory(?WaveString+4, @\RIFFType, 4)
CopyMemory(?WaveString+8, @\FmtChunkId, 4)
CopyMemory(?WaveString+12,@\DataChunkId, 4)
\FileSize = SizeOf(WAVEHEADER) + (2 * 65536 -1) * SizeOf(Word) - 8
\FmtChunkSize = 16
\FormatTag = 1
\Channels = 1
\SampleRate = 44100
\BitsPerSample = 16
\BytesPerSecond = \SampleRate * \BitsPerSample / 8 * \Channels
\BlockAlign = \BitsPerSample / 8 *\Channels
\DataSize = ((2 * 65536 -1) * SizeOf(Word))
EndWith
CreateFile(0, "Волна.wav")
WriteData(0, @WaveHeader, SizeOf(WaveHeader))
For a = 1 To 65535
WriteWord(0, 32767)
Next
For a = 1 To 65536
WriteWord(0, -32768)
Next
CloseFile(0)
Синус:
S.d = 360 / (65536 + 65536)
Debug S.d
DataSection
WaveString:
IncludeBinary "Data.txt"
EndDataSection
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
Global WaveHeader.WAVEHEADER, File
With WaveHeader
CopyMemory(?WaveString, @\RIFF, 4)
CopyMemory(?WaveString+4, @\RIFFType, 4)
CopyMemory(?WaveString+8, @\FmtChunkId, 4)
CopyMemory(?WaveString+12,@\DataChunkId, 4)
\FileSize = SizeOf(WAVEHEADER) + (2 * 65536 -1) * SizeOf(Word) - 8
\FmtChunkSize = 16
\FormatTag = 1
\Channels = 1
\SampleRate = 44100
\BitsPerSample = 16
\BytesPerSecond = \SampleRate * \BitsPerSample / 8 * \Channels
\BlockAlign = \BitsPerSample / 8 *\Channels
\DataSize = ((2 * 65536 -1) * SizeOf(Word))
EndWith
CreateFile(0, "Волна.wav")
WriteData(0, @WaveHeader, SizeOf(WaveHeader))
b.d = 30
For a = 1 To (65536 + 65535)
WriteWord(0, Int((Sin(Radian(b)) * 65536)) - 32768)
b + S
Next
CloseFile(0)
Содержимое Data.txt в ASCII:
RIFFWAVEfmt data
Проблема с синусом. Не генерирует ~, а делает чёрт-те что. Поправьте меня с синусом. Начало с 30 градусов (0 в wav файле) и до нуля в wav файле не включительно, как ~.
Я потом соединю все три волны и пропущу через усилитель.
Отредактировано PSY (17.11.2023 09:53:01)