module Euterpea.IO.Audio ( module Euterpea.IO.Audio.BasicSigFuns, module Euterpea.IO.Audio.Basics, module Euterpea.IO.Audio.Types, module Euterpea.IO.Audio.IO, module Euterpea.IO.Audio.Render, writeWav, writeWavNorm ) where import Euterpea.IO.Audio.BasicSigFuns import Euterpea.IO.Audio.Basics import Euterpea.IO.Audio.Types import Euterpea.IO.Audio.IO import Euterpea.IO.Audio.Render writeWav :: String -> [(InstrumentName, Instr (Signal p () a))] -> Music a -> IO () writeWav String fname [(InstrumentName, Instr (Signal p () a))] iMap Music a m = let (Double d,Signal p () a s) = Music a -> [(InstrumentName, Instr (Signal p () a))] -> (Double, Signal p () a) forall p a b. (Clock p, ToMusic1 a, AudioSample b) => Music a -> InstrMap (Signal p () b) -> (Double, Signal p () b) renderSF Music a m [(InstrumentName, Instr (Signal p () a))] iMap in String -> Double -> Signal p () a -> IO () forall a p. (AudioSample a, Clock p) => String -> Double -> Signal p () a -> IO () outFile String fname Double d Signal p () a s writeWavNorm :: String -> [(InstrumentName, Instr (Signal p () a))] -> Music a -> IO () writeWavNorm String fname [(InstrumentName, Instr (Signal p () a))] iMap Music a m = let (Double d,Signal p () a s) = Music a -> [(InstrumentName, Instr (Signal p () a))] -> (Double, Signal p () a) forall p a b. (Clock p, ToMusic1 a, AudioSample b) => Music a -> InstrMap (Signal p () b) -> (Double, Signal p () b) renderSF Music a m [(InstrumentName, Instr (Signal p () a))] iMap in String -> Double -> Signal p () a -> IO () forall a p. (AudioSample a, Clock p) => String -> Double -> Signal p () a -> IO () outFileNorm String fname Double d Signal p () a s