module Haskore.Interface.Signal.Example.ChildSong6ToSignal where
import qualified Haskore.Example.ChildSong6 as ChildSong6
import Synthesizer.Plain.Instrument (fastBell)
import qualified Synthesizer.Plain.Signal as Sig
import qualified Sox.File
import qualified Haskore.Music.GeneralMIDI as Music
import Haskore.Interface.Signal.Write(Time, Volume)
import qualified Haskore.Performance.Fancy as FancyPf
import qualified Haskore.Interface.Signal.Write as MusicSignal
import System.Exit (ExitCode)
songToSignalMono :: Time -> Time -> Music.T -> Sig.T Volume
songToSignalMono sampleRate dif song =
MusicSignal.fromRhythmicMusic
sampleRate
(MusicSignal.detuneInstrs dif
[(Music.AcousticGrandPiano,
MusicSignal.amplify (0.1::Volume) fastBell)])
FancyPf.map
(MusicSignal.contextMetro 60 Music.qn)
song
songSignal :: Time -> Time -> Sig.T Volume
songSignal sampleRate dif =
songToSignalMono sampleRate dif (Music.transpose 12 ChildSong6.song)
stereoSignal :: Time -> Sig.T (Volume,Volume)
stereoSignal sampleRate =
zip (songSignal sampleRate 1.001)
(songSignal sampleRate 0.999)
main :: IO ExitCode
main = Sox.File.renderStereo "ChildSong6" 22050 stereoSignal