I have still no luck. I installed latest hosc and hsc3 from darcs repo, tried the attached example program which uses the new function writeNRT, and got the following output
$ ghci NonRealtime.hs *Main> nonrealtime Loading package fps-0.8 ... linking ... done. Loading package binary-0.2 ... linking ... done. Loading package parsec-1.0 ... linking ... done. Loading package network-1.0 ... linking ... done. Loading package hosc-0.1 ... linking ... done. Loading package hsc3-0.1 ... linking ... done. Using Altivec: no *** ERROR: open directory failed 'synthdefs' start time 0 *Main> :! ls -al tone.* -rw------- 1 thielema users 182 2007-08-12 19:19 tone.aiff -rw------- 1 thielema users 256 2007-08-12 19:19 tone.osc See the attached OSC file in order to see if it matches the one you can produce. If my OSC file matches yours then something with my SCSynth is wrong, if it does not match, maybe ByteString or Binary is wrong. Thanks for the help!
{-
This module tries to reproduce results of the real-time synthesizer
in scsynth's non-real-time mode.
-}
import Sound.OpenSoundControl(OSC(Bundle))
import Sound.OpenSoundControl.Byte (encode_i32)
import Sound.OpenSoundControl.Time(utc)
import Sound.OpenSoundControl.Transport(send)
import Sound.SC3
import Sound.SC3.Server.NRT (writeNRT)
import qualified Sound.SC3.Server.Play as Play
import qualified Data.ByteString.Lazy as B
import System.Cmd (rawSystem)
beep = out 0 (sinOsc AR 440 0)
name ="Beep"
installSound n = d_recv . graphdef n . graph
bundle start t = Bundle (start+t)
rootId = 0
homeId = 1
autoId = -1
latency = 0.1
msgs :: [(Double, [OSC])]
msgs =
(0, g_freeAll [rootId] :
g_new [(homeId, AddToTail, rootId)] :
installSound name beep :
s_new name autoId AddToTail homeId [] :
[]) :
(1, g_freeAll [homeId] :
[]) :
[]
attachTimeStamps :: [(Double, [OSC])] -> IO [OSC]
attachTimeStamps ms =
do now <- utc
return (map (uncurry (bundle (now+latency))) ms)
realtime =
Play.withSC3 $ \fd ->
mapM (send fd) =<< attachTimeStamps msgs
oscFileName = "tone.osc"
nonrealtime =
do let tsMsgs = map (uncurry Bundle) msgs
writeNRT oscFileName tsMsgs
rawSystem "scsynth"
["-o", "1", "-N", oscFileName, "_", "tone.aiff",
"44100", "AIFF", "int16"]
main =
realtime >>
nonrealtime
tone.osc
Description: Binary data
tone.aiff
Description: audio/aiff
_______________________________________________ haskell-art mailing list [email protected] http://lists.lurk.org/mailman/listinfo/haskell-art
