10 people like it.
Like the snippet!
Generate WAVE file
Generates a WAVE sound file
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
|
open System.IO
/// Write WAVE PCM soundfile (8KHz Mono 8-bit)
let write stream (data:byte[]) =
use writer = new BinaryWriter(stream)
// RIFF
writer.Write("RIFF"B)
let size = 36 + data.Length in writer.Write(size)
writer.Write("WAVE"B)
// fmt
writer.Write("fmt "B)
let headerSize = 16 in writer.Write(headerSize)
let pcmFormat = 1s in writer.Write(pcmFormat)
let mono = 1s in writer.Write(mono)
let sampleRate = 8000 in writer.Write(sampleRate)
let byteRate = sampleRate in writer.Write(byteRate)
let blockAlign = 1s in writer.Write(blockAlign)
let bitsPerSample = 8s in writer.Write(bitsPerSample)
// data
writer.Write("data"B)
writer.Write(data.Length)
writer.Write(data)
let data = Array.init 16000 (fun i -> (sin (float i/float 8))*128. |> byte)
let stream = File.Create(@"C:\tone.wav")
write stream data
|
namespace System
namespace System.IO
val write : stream:Stream -> data:byte [] -> unit
Full name: Script.write
Write WAVE PCM soundfile (8KHz Mono 8-bit)
val stream : Stream
val data : byte []
Multiple items
val byte : value:'T -> byte (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.byte
--------------------
type byte = System.Byte
Full name: Microsoft.FSharp.Core.byte
val writer : BinaryWriter
Multiple items
type BinaryWriter =
new : output:Stream -> BinaryWriter + 1 overload
member BaseStream : Stream
member Close : unit -> unit
member Dispose : unit -> unit
member Flush : unit -> unit
member Seek : offset:int * origin:SeekOrigin -> int64
member Write : value:bool -> unit + 17 overloads
static val Null : BinaryWriter
Full name: System.IO.BinaryWriter
--------------------
BinaryWriter(output: Stream) : unit
BinaryWriter(output: Stream, encoding: System.Text.Encoding) : unit
BinaryWriter.Write(value: string) : unit
(+0 other overloads)
BinaryWriter.Write(value: float32) : unit
(+0 other overloads)
BinaryWriter.Write(value: uint64) : unit
(+0 other overloads)
BinaryWriter.Write(value: int64) : unit
(+0 other overloads)
BinaryWriter.Write(value: uint32) : unit
(+0 other overloads)
BinaryWriter.Write(value: int) : unit
(+0 other overloads)
BinaryWriter.Write(value: uint16) : unit
(+0 other overloads)
BinaryWriter.Write(value: int16) : unit
(+0 other overloads)
BinaryWriter.Write(value: decimal) : unit
(+0 other overloads)
BinaryWriter.Write(value: float) : unit
(+0 other overloads)
val size : int
property System.Array.Length: int
val headerSize : int
val pcmFormat : int16
val mono : int16
val sampleRate : int
val byteRate : int
val blockAlign : int16
val bitsPerSample : int16
val data : byte []
Full name: Script.data
module Array
from Microsoft.FSharp.Collections
val init : count:int -> initializer:(int -> 'T) -> 'T []
Full name: Microsoft.FSharp.Collections.Array.init
val i : int
val sin : value:'T -> 'T (requires member Sin)
Full name: Microsoft.FSharp.Core.Operators.sin
Multiple items
val float : value:'T -> float (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.float
--------------------
type float = System.Double
Full name: Microsoft.FSharp.Core.float
--------------------
type float<'Measure> = float
Full name: Microsoft.FSharp.Core.float<_>
val stream : FileStream
Full name: Script.stream
type File =
static member AppendAllLines : path:string * contents:IEnumerable<string> -> unit + 1 overload
static member AppendAllText : path:string * contents:string -> unit + 1 overload
static member AppendText : path:string -> StreamWriter
static member Copy : sourceFileName:string * destFileName:string -> unit + 1 overload
static member Create : path:string -> FileStream + 3 overloads
static member CreateText : path:string -> StreamWriter
static member Decrypt : path:string -> unit
static member Delete : path:string -> unit
static member Encrypt : path:string -> unit
static member Exists : path:string -> bool
...
Full name: System.IO.File
File.Create(path: string) : FileStream
File.Create(path: string, bufferSize: int) : FileStream
File.Create(path: string, bufferSize: int, options: FileOptions) : FileStream
File.Create(path: string, bufferSize: int, options: FileOptions, fileSecurity: System.Security.AccessControl.FileSecurity) : FileStream
More information