-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Haskell SuperCollider Plotting -- @package hsc3-plot @version 0.15 module Sound.SC3.Plot.Histogram data Histogram x Histogram :: [x] -> [x] -> Histogram x -- | Calculate Histogram for number of bins n and sample data -- x. histogram :: Int -> [Double] -> Histogram Double instance Eq x => Eq (Histogram x) instance Show x => Show (Histogram x) -- | Simple-minded plotters for Sound.SC3. module Sound.SC3.Plot -- | minimum and maximum. minmax :: Ord t => [t] -> (t, t) linlin'' :: Fractional a => (a, a) -> (a, a) -> a -> a -- | linlin of z. normalise_seq :: (Fractional b, Ord b) => (b, b) -> (b, b) -> [b] -> [b] -- | Variant that derives domain from minmax of z. normalise_seq' :: (Fractional b, Ord b) => (b, b) -> [b] -> [b] -- | n * n. square :: Num a => a -> a -- | Root mean square. rms :: Floating a => [a] -> a -- | rms of chunksOf. resample_rms :: Floating b => Int -> [b] -> [b] -- | Class of plottable numbers. This is necessary to allow -- Rational, the show instance of which cannot be read by -- gnuplot. class Num n => PNum n pshow :: PNum n => n -> String ratio_to_double :: Integral n => Ratio n -> Double -- | Attibutes are generated given (i,j) where i is the data set -- (one indexed) and j is the number of data sets. type Attr = (Int, Int) -> String attr_frac :: String -> Double -> Attr attr_frac_lines :: Double -> Attr -- | List of y values, at (implicit) equal x increments. type Table t = [t] -- | Plot Table data. -- --
--   plotTable [[0,2..12],[0..6],[0,4..12]]
--   plotTable [map (\x -> x * cos (x / 20)) [-400 .. 800]]
--   
plotTable :: PNum t => [Table t] -> IO () -- | Variant to plot singular Table. plotTable1 :: PNum t => Table t -> IO () -- | Variant of plotTable where each value is drawn as an impulse. -- --
--   plotImpulses [[0,2..12],[0..6],[0,4..12]]
--   plotImpulses [map (\x -> x * cos (x / 20)) [-400 .. 800]]
--   
plotImpulses :: PNum t => [[t]] -> IO () -- | Variant that scales each plot lie within (0,1) and displaces them. -- --
--   plot_table_displace [[0,2..12],[0..6],[0,4..12]]
--   
plot_table_displace :: (Enum t, Fractional t, Ord t, PNum t) => [[t]] -> IO () -- | Variant that normalises each table separately. -- --
--   plot_table_displace_nrm [[0,2..12],[0..6],[0,4..12]]
--   
plot_table_displace_nrm :: (Enum t, Fractional t, Ord t, PNum t) => [[t]] -> IO () -- | Cartesian (x,y) pair. type P2 t = (t, t) -- | List of P2. type Coord t = [P2 t] -- | Plot set of Coord. -- --
--   let {x = [-pi,-pi + 0.01 .. pi]
--       ;f r t = (r t * cos t,r t * sin t)}
--   in plot_p2 (attr_frac_lines 0.5)
--              [zip (map cos x) (map sin x)
--              ,zip (map cos x) (map (sin . (* 3)) x)
--              ,map (f ((/ (2 * pi)) . (+ pi))) x]
--   
plot_p2 :: PNum t => Attr -> [Coord t] -> IO () -- | plot_p2 of with lines. plot_p2_ln :: PNum t => [Coord t] -> IO () -- | plot_p2 of with points. -- --
--   let f a b c d (x,y) =
--       (x ** 2 - y ** 2 + a * x + b * y
--       ,2 * x * y + c * x + d * y)
--   in plot_p2_pt [take 5000 (iterate (f 0.9 (-0.6013) 2.0 0.5) (0.1,0.0))]
--   
plot_p2_pt :: PNum t => [Coord t] -> IO () -- | plot_p2 of with steps. -- --
--   plot_p2_stp [[(0,0),(1,1),(2,0.5),(4,6),(5,1),(6,0.25)]]
--   
plot_p2_stp :: PNum t => [Coord t] -> IO () -- | Cartesian (x,y,z) triple. type P3 t = (t, t, t) -- | List of P3. type Path t = [P3 t] -- | Three-dimensional variant of plot_p2. -- --
--   let {t' = [-pi,-pi + 0.01 .. pi]
--       ;f0 n d = sin . (+) d . (*) n
--       ;f1 t = (f0 1 (pi/2) t,f0 3 0 t,f0 5 0 t)
--       ;e' = [0,0.005 .. pi]
--       ;f2 a b r e t = ((a * t + r * sin e) * cos t
--                       ,(a * t + r * sin e) * sin t
--                       ,b * t + r * (1 - cos e))}
--   in plot_p3 (const "with lines")
--              [map f1 t'
--              ,zipWith (f2 0.25 0.25 0.25) e' t']
--   
plot_p3 :: PNum t => Attr -> [Path t] -> IO () -- | plot_p3 of with lines. plot_p3_ln :: PNum t => [Path t] -> IO () -- | plot_p3 of with points pt 0. plot_p3_pt :: PNum t => [Path t] -> IO () -- | List of (P2,P2) vectors. type Vc t = [(P2 t, P2 t)] -- | Plot vectors given as (p,q). -- --
--   let {p = [((0,0),(2,1)),((2,2),(3,2)),((3,4),(4,1))]
--       ;d = [1,2,3,2,3,2,1]
--       ;x = 0 : scanl1 (+) d
--       ;y = [6,4,5,3,7,2,8]
--       ;f x y d = ((x,y),(x+d,y))}
--   in plotVectors [p,zipWith3 f x y d]
--   
plotVectors :: (PNum t, Num t) => [Vc t] -> IO () -- | Plot regular matrix data. -- --
--   plotMatrix ["set palette grey","unset colorbox"] [[1,3,2],[6,4,5],[8,9,7]]
--   
-- --
--   let d = [[1.00000000,1.00000000,1.00000000,0.73961496]
--           ,[1.00000000,1.00000000,1.00000000,0.39490538]
--           ,[0.53443549,0.31331112,0.90917979,0.58216201]
--           ,[0.35888692,0.7361968,0.95389629,0.94283073]
--           ,[0.85763543,0.1405479,0.78166569,0.43739318]
--           ,[0.18519824,0.31907815,0.18394244,0.01633875]
--           ,[0.0442339,0.33393132,0.77247883,0.79683943]
--           ,[0.8472137,0.42471225,0.94257581,0.70417117]]
--   in plotMatrix ["set palette color"] d
--   
plotMatrix :: (PNum t, Num t) => [String] -> [[t]] -> IO () -- | Plot Envelope data. -- --
--   import Sound.SC3
--   
-- --
--   plotEnvelope [envPerc 0.2 1
--                ,envSine 1 0.75
--                ,envADSR 0.4 0.4 0.8 0.9 1 (EnvNum (-4)) 0]
--   
plotEnvelope :: (PNum t, Ord t, Floating t, Enum t) => [Envelope t] -> IO () -- | plotTable1 of b_fetch. -- --
--   withSC3 (plot_buffer1 0)
--   
plot_buffer1 :: (MonadIO m, DuplexOSC m) => Int -> m () -- | plotTable1 of resample_rms of b_fetch. -- --
--   withSC3 (plot_buffer1_rms 512 0)
--   
plot_buffer1_rms :: (MonadIO m, DuplexOSC m) => Int -> Int -> m () -- | plot_table1_resamp1 of b_fetch. -- --
--   withSC3 (plot_buffer1_resamp1 512 0)
--   
plot_buffer1_resamp1 :: (MonadIO m, DuplexOSC m) => Int -> Int -> m () -- | plot_table_displace of mapM of b_fetch. plot_buffer :: (MonadIO m, DuplexOSC m) => [Int] -> m () -- | plot_table_displace_nrm of mapM of b_fetch. plot_buffer_nrm :: (MonadIO m, DuplexOSC m) => [Int] -> m () -- | Plot Histogram data. -- --
--   plotHistogram [histogram 3 [0,0,1,2,2,2]
--                 ,histogram 9 [1,2,2,3,3,3,4,4,4,4]]
--   
plotHistogram :: PNum t => [Histogram t] -> IO () -- | plotTable1 of toList. plot_table1_vector :: PNum t => Vector t -> IO () -- | plot_table1_vector of resamp1. -- --
--   d <- withSC3 (b_fetch 512 0)
--   plot_table1_resamp1 1024 (V.fromList d)
--   
plot_table1_resamp1 :: (Enum t, RealFrac t, PNum t) => Int -> Vector t -> IO () -- | plot_p2_ln plotCoord :: PNum t => [Coord t] -> IO () -- | plot_p2_pt plotPoints :: PNum t => [Coord t] -> IO () -- | plot_p2_stp plotCoord_steps :: PNum t => [Coord t] -> IO () -- | plot_p3_ln plotPath :: PNum t => [Path t] -> IO () -- | Plot size (width,height). type PlotSize = (Double, Double) -- | Plot options. data PlotOpt PlotOpt :: Maybe PlotSize -> Maybe (Double, Double) -> Maybe (Double, Double) -> FilePath -> String -> String -> [String] -> PlotOpt plotSize :: PlotOpt -> Maybe PlotSize plotXRange :: PlotOpt -> Maybe (Double, Double) plotYRange :: PlotOpt -> Maybe (Double, Double) plotDir :: PlotOpt -> FilePath plotName :: PlotOpt -> String plotTerminal :: PlotOpt -> String plotGnuplotOpt :: PlotOpt -> [String] -- | Default options for X11. plotOptX11 :: PlotOpt -- | Default options for WXT. plotOptWXT :: PlotOpt -- | Default options for SVG. plotOptSVG :: PlotSize -> PlotOpt -- | Names for SVG terminal have character restrictions. plotNameEnc :: PlotOpt -> String -- | Plot parameters, (pre,cmd,attr) type PlotParam = ([String], String, Attr) plotDataFile :: PlotOpt -> Int -> FilePath plotRCFile :: PlotOpt -> FilePath plotOutputFile :: PlotOpt -> FilePath writePlotRC :: PlotOpt -> PlotParam -> Int -> IO () writePlotData :: (PNum t, Num t) => PlotOpt -> [[[t]]] -> IO () -- | Plotter given PlotOpt and PlotParam. mkPlotOpt :: (PNum t, Num t) => PlotOpt -> PlotParam -> [[[t]]] -> IO () -- | mkPlotOpt with plotOptX11. mkPlotX11 :: (PNum t, Num t) => PlotParam -> [[[t]]] -> IO () -- | mkPlotOpt with plotOptSVG. mkPlotSVG :: (Num t, PNum t) => PlotSize -> PlotParam -> [[[t]]] -> IO () -- | WXT and SVG. mkPlot :: (PNum t, Num t) => PlotParam -> [[[t]]] -> IO () instance Integral n => PNum (Ratio n) instance PNum Double instance PNum Float instance PNum Integer instance PNum Int