soundgen 0.1.0.1 → 0.1.1.0
raw patch · 2 files changed
+12/−2 lines, 2 files
Files
- soundgen.cabal +1/−1
- src/Main.hs +11/−1
soundgen.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/ name: soundgen-version: 0.1.0.1+version: 0.1.1.0 synopsis: sound generator description: Simple tone generator. You can decide the tone frequency and duration license: BSD3
src/Main.hs view
@@ -20,12 +20,22 @@ samples :: Double -> Double ->[[Int32]] samples f d = map (:[]) $ sound f samplesPS d (maxBound `div` 2) +samples' :: Double -> Double -> Double -> Double -> [[Int32]] -- play two tones at once +samples' f1 d1 f2 d2 = map (:[]) $ zipWith (+) (sound f1 samplesPS d1 (maxBound `div` 2)) (sound f2 samplesPS d2 (maxBound `div` 2)) + +waveData :: Double -> Double -> WAVE waveData f d = WAVE header (samples f d) +waveData' :: Double -> Double -> Double -> Double ->WAVE +waveData' f1 d1 f2 d2 = WAVE header (samples' f1 d1 f2 d2) + makeWavFile :: WAVE -> IO () makeWavFile wav = putWAVEFile "sound.wav" wav main = do args <- getArgs case args of + [f1,d1,f2,d2] -> (makeWavFile (waveData' (read f1) (read d1) (read f2) (read d2))) >> putStrLn "Done" [f,d] -> (makeWavFile (waveData (read f) (read d))) >> putStrLn "Done" - _ -> putStrLn "USAGE: sound <frequency (Hz)> <duration (s)>" + _ -> putStrLn "USAGE: sound <frequency (Hz)> <duration (s)>" >> + putStrLn " sound <frequency1 (Hz)> <duration1 (s)> <frequency2 (Hz)> <duration2 (s)>" +