hsc3-0.20: Haskell SuperCollider
Safe HaskellSafe-Inferred
LanguageHaskell2010

Sound.Sc3.Common.Math.Window

Description

Windowing functions.

Synopsis

Type and conversion

type Window x = x -> x Source #

A function from a (0, 1) normalised input to an output.

type Table x = [x] Source #

A discrete rendering of a Window.

data TableFormat Source #

Format for table. Closed indicates the end point should be equal to the start point. Open indicates it should be one place short. Guarded indicates that an extra place should be added that closes the table, ie. the table has one place more than requested. When using a table with an oscillator we want an Open or Guarded table, since the point following the end point is the start point.

Instances

Instances details
Show TableFormat Source # 
Instance details

Defined in Sound.Sc3.Common.Math.Window

Eq TableFormat Source # 
Instance details

Defined in Sound.Sc3.Common.Math.Window

window_table :: (Integral n, Fractional a, Enum a) => TableFormat -> n -> Window a -> Table a Source #

Generate an n element table from a (0, 1) normalised window function f. The cycle argument decides if the end point should be equal to the start point, or one place short. When using a table with an oscillator we want the latter, since the point following the end point is the start point.

window_table_closed :: (Integral n, Fractional a, Enum a) => n -> Window a -> Table a Source #

window_table of TableClosed.

Math

square :: Num a => a -> a Source #

n ^ 2.

Window functions

gaussian :: Floating a => a -> Window a Source #

Gaussian window, θ <= 0.5.

hann :: Floating a => Window a Source #

Hann raised cosine window.

hamming :: Floating a => Window a Source #

Hamming raised cosine window.

rectangular :: Window a Source #

Unit (id) window, also known as a Dirichlet window.

sine :: Floating a => Window a Source #

sin window.

triangular :: Fractional a => Window a Source #

Triangular window, ie. Bartlett window with zero end-points.

let n = 2 ^ 7
Sound.Sc3.Plot.plot_p1_ln (map (\fmt -> window_table fmt n triangular) [TableClosed, TableOpen])
Sound.Sc3.Plot.plot_p1_ln (map (\fmt -> window_table fmt n triangular) [TableClosed, TableGuarded])

Tables

gaussian_table :: (Integral n, Floating b, Enum b) => n -> b -> [b] Source #

window_table_closed . gaussian.

Sound.Sc3.Plot.plot_p1_ln [gaussian_table 1024 0.25, gaussian_table 1024 0.5]

hamming_table :: Int -> [Double] Source #

window_table_closed . hamming.

Sound.Sc3.Plot.plot_p1_ln [hann_table 128, hamming_table 128]

hann_table :: Int -> [Double] Source #

window_table_closed . hann.

Sound.Sc3.Plot.plot_p1_ln [hann_table (2 ^ 7)]

sine_table :: (Integral n, Floating b, Enum b) => n -> [b] Source #

window_table_closed . sine.

Sound.Sc3.Plot.plot_p1_ln [sine_table (2 ^ 7)]

triangular_table :: (Integral n, Fractional b, Enum b) => n -> [b] Source #

window_table_closed . triangular.

Sound.Sc3.Plot.plot_p1_ln [triangular_table (2 ^ 8)]