haskore-synthesizer 0.0.2 → 0.0.3
raw patch · 10 files changed
+78/−72 lines, 10 filesdep +utility-htdep ~basedep ~data-accessordep ~haskore
Dependencies added: utility-ht
Dependency ranges changed: base, data-accessor, haskore, numeric-prelude, synthesizer
Files
- haskore-synthesizer.cabal +12/−10
- src/Haskore/Interface/Signal/Example/ChildSong6.hs +44/−0
- src/Haskore/Interface/Signal/Example/ChildSong6ToSignal.hs +0/−43
- src/Haskore/Interface/Signal/Example/FMBassLine.hs +2/−2
- src/Haskore/Interface/Signal/Example/FilterSaw.hs +4/−3
- src/Haskore/Interface/Signal/Example/Guitar.hs +7/−7
- src/Haskore/Interface/Signal/Example/SwanLake.hs +3/−2
- src/Haskore/Interface/Signal/Example/WinterAde.hs +3/−2
- src/Haskore/Interface/Signal/Write.hs +1/−1
- src/RenderSong.hs +2/−2
haskore-synthesizer.cabal view
@@ -1,15 +1,15 @@ Name: haskore-synthesizer-Version: 0.0.2+Version: 0.0.3 License: GPL License-File: LICENSE Author: Henning Thielemann <haskell@henning-thielemann.de> Maintainer: Henning Thielemann <haskell@henning-thielemann.de> Homepage: http://www.haskell.org/haskellwiki/Synthesizer Package-URL: http://darcs.haskell.org/haskore-synthesizer/-Category: Sound-Synopsis: Audio signal processing coded in Haskell+Category: Sound, Music+Synopsis: Music rendering coded in Haskell Description:- Use native Haskell Audio Signal Processing for Music rendering with Haskore+ Use native Haskell Audio Signal Processing for Music rendering with Haskore. Contains several example songs. Stability: Experimental Tested-With: GHC==6.4.1, GHC==6.8.2@@ -25,18 +25,20 @@ Library Build-Depends:- synthesizer >= 0.0.3 && < 0.1,- haskore >=0.0.5 && <0.1,+ synthesizer >= 0.2 && < 0.3,+ haskore >=0.1 && <0.2, -- midi >=0.1.1 && <0.1,- numeric-prelude >=0.0.3 && <0.1,+ numeric-prelude >=0.1 && <0.2, -- dependency on non-negative for Haddock non-negative >=0.0.1 && <0.1, event-list >=0.0.6 && <0.1,- data-accessor >=0.1 && <0.2+ data-accessor >=0.2 && <0.3,+ utility-ht >=0.0.1 && <0.1 If flag(splitBase) Build-Depends:- base >= 3, random >= 1.0 && < 1.1+ base >= 3 && <5,+ random >= 1.0 && < 1.1 Else Build-Depends: base >= 1.0 && < 2@@ -47,7 +49,7 @@ Haskore.Interface.Signal.InstrumentMap Haskore.Interface.Signal.Note Haskore.Interface.Signal.Write- Haskore.Interface.Signal.Example.ChildSong6ToSignal+ Haskore.Interface.Signal.Example.ChildSong6 Haskore.Interface.Signal.Example.FMBassLine Haskore.Interface.Signal.Example.FilterSaw Haskore.Interface.Signal.Example.Guitar
+ src/Haskore/Interface/Signal/Example/ChildSong6.hs view
@@ -0,0 +1,44 @@+-- Partial Encoding of Chick Corea's ``Children's Song No. 6''++module Haskore.Interface.Signal.Example.ChildSong6 where++import qualified Haskore.Example.ChildSong6 as ChildSong6+import Synthesizer.Plain.Instrument (fastBell)+import qualified Synthesizer.Plain.Signal as Sig+import qualified Synthesizer.Plain.File as 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)++++-- Volume type arises from Haskore+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 =+ File.renderStereoToInt16 "ChildSong6.aiff" 22050 stereoSignal
− src/Haskore/Interface/Signal/Example/ChildSong6ToSignal.hs
@@ -1,43 +0,0 @@--- Partial Encoding of Chick Corea's ``Children's Song No. 6''--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)------ Volume type arises from Haskore-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
src/Haskore/Interface/Signal/Example/FMBassLine.hs view
@@ -5,7 +5,7 @@ import qualified Synthesizer.Plain.Oscillator as Osci import qualified Synthesizer.Plain.Signal as Sig import Synthesizer.Plain.Instrument (fmBell)-import qualified Sox.File+import qualified Synthesizer.Plain.File as File import qualified Haskore.Basic.Pitch as Pitch import qualified Haskore.Melody as Melody@@ -142,5 +142,5 @@ main :: IO ExitCode main =- Sox.File.renderStereo "FMBassLine" 44100+ File.renderStereoToInt16 "FMBassLine.aiff" 44100 (\sampleRate -> take (round (16*sampleRate)) (stereoSignal sampleRate))
src/Haskore/Interface/Signal/Example/FilterSaw.hs view
@@ -7,7 +7,7 @@ import qualified Synthesizer.Plain.Filter.Recursive.Allpass as Allpass import qualified Synthesizer.Plain.Signal as Sig import Synthesizer.Plain.Instrument (filterSaw, )-import qualified Sox.File+import qualified Synthesizer.Plain.File as File import qualified Haskore.Basic.Pitch as Pitch import qualified Haskore.Melody as Melody@@ -27,7 +27,7 @@ import System.Exit(ExitCode) import qualified Data.List as List -import PreludeBase+import PreludeBase hiding (take, ) import NumericPrelude ------------ The song description -------------@@ -113,4 +113,5 @@ List.replicate (round (2*sampleRate)) zero) main :: IO ExitCode-main = Sox.File.renderStereo "FilterSaw" 22050 reverbedSignal+main =+ File.renderStereoToInt16 "FilterSaw.aiff" 22050 reverbedSignal
src/Haskore/Interface/Signal/Example/Guitar.hs view
@@ -1,9 +1,9 @@ module Haskore.Interface.Signal.Example.Guitar where -- the song-import Haskore.Example.Guitar(parallelSong, stringPitches)+import Haskore.Example.Guitar (parallelSong, stringPitches, ) -- the instrument-import Filter.Example(guitar)+import Synthesizer.Filter.Example (guitar, ) import qualified Haskore.Basic.Pitch as Pitch import Haskore.Music.Standard as StdMusic@@ -18,9 +18,9 @@ import qualified Synthesizer.Plain.Signal as Sig import Synthesizer.Plain.Instrument (fastBell, simpleSaw, moogGuitar, moogGuitarSoft, fmBell, )-import qualified Sox.File+import qualified Synthesizer.Plain.File as File -import Synthesizer.Utility(mapSnd)+import Data.Tuple.HT (mapSnd, ) import qualified Data.List as List @@ -80,7 +80,7 @@ readSamples :: IO [Sig.T Volume] readSamples =- do sampledSounds <- mapM Sox.File.readAIFFMono+ do sampledSounds <- mapM File.readMonoFromInt16 (map (\chr -> "guitar/Zupf/Zupf"++chr:".aiff") ['0'..'5']) return (zipWith FiltNR.amplifyVector [0.5,0.5,0.5,0.5,0.5,0.3::Volume]@@ -89,6 +89,6 @@ main :: IO ExitCode main = do- Sox.File.renderStereo "Guitar" 44100 . computeSignal sampleSong . sampleMap+ File.renderStereoToInt16 "Guitar.aiff" 44100 . computeSignal sampleSong . sampleMap =<< readSamples- Sox.File.renderStereo "GuitarSynth" 44100 (computeSignal synthSong synthMap)+ File.renderStereoToInt16 "GuitarSynth.aiff" 44100 (computeSignal synthSong synthMap)
src/Haskore/Interface/Signal/Example/SwanLake.hs view
@@ -7,7 +7,7 @@ import Synthesizer.Plain.Filter.Recursive (Pole(Pole)) import Synthesizer.Plain.Control(exponential2) import Synthesizer.Plain.Instrument (simpleSaw)-import qualified Sox.File+import qualified Synthesizer.Plain.File as File import qualified Number.Ratio as Ratio import qualified Algebra.Transcendental as Trans@@ -121,4 +121,5 @@ (filteredSignal 0.998) main :: IO ExitCode-main = Sox.File.writeStereo "SwanLake" defltSampleRate stereoSignal+main =+ File.writeStereoToInt16 "SwanLake.aiff" defltSampleRate stereoSignal
src/Haskore/Interface/Signal/Example/WinterAde.hs view
@@ -21,7 +21,7 @@ import Synthesizer.Plain.Displacement (mix) import Synthesizer.Plain.Filter.NonRecursive (fadeInOut) import Synthesizer.Plain.Instrument (bell, squareBell, fatSaw, filterSweep, )-import qualified Sox.File+import qualified Synthesizer.Plain.File as File import System.Exit(ExitCode) @@ -283,4 +283,5 @@ main :: IO ExitCode-main = Sox.File.writeStereo "WinterAde" defltSampleRate songSignal+main =+ File.writeStereoToInt16 "WinterAde.aiff" defltSampleRate songSignal
src/Haskore/Interface/Signal/Write.hs view
@@ -32,7 +32,7 @@ import qualified Synthesizer.Plain.Signal as Sig import qualified Synthesizer.Plain.Cut as Cut-import Synthesizer.Utility(mapSnd)+import Data.Tuple.HT (mapSnd, ) import qualified Algebra.Module as Module import qualified Algebra.RealField as RealField
src/RenderSong.hs view
@@ -1,6 +1,6 @@ module Main where -import qualified Sox.Play+import qualified Synthesizer.Plain.Play as Play import qualified Haskore.Interface.Signal.Example.WinterAde as Song -main = Sox.Play.stereo 11025 Song.songSignal+main = Play.stereoToInt16 11025 Song.songSignal