-- Copyright 2017 Evan Laforge
-- This program is distributed under the terms of the GNU General Public
-- License 3.0, see COPYING or http://www.gnu.org/licenses/gpl-3.0.txt

module Ness.Multiplate.Patch where
import qualified Util.Control
import qualified Synth.Shared.Control as Control

import           Ness.Multiplate


instruments :: [Instrument]
instruments :: [Instrument]
instruments = [Instrument
instrument1]

c_x, c_y :: Control.Control
c_x :: Control
c_x = Control
"x"
c_y :: Control
c_y = Control
"y"

c_duration :: Control.Control
c_duration :: Control
c_duration = Control
"duration"

instrument1 :: Instrument
instrument1 = Instrument
    { iName :: Text
iName = Text
"gongs"
    , iNormalize :: Bool
iNormalize = Bool
False
    , iAirbox :: Airbox
iAirbox = Airbox
        { aWidth :: Meters
aWidth = Meters
1.32
        , aDepth :: Meters
aDepth = Meters
1.32
        , aHeight :: Meters
aHeight = Meters
1.37
        , aC_a :: Meters
aC_a = Meters
340.0
        , aRho_a :: Meters
aRho_a = Meters
1.21
        , aOutputs :: [AirboxOutput]
aOutputs = forall a b. (a -> b) -> [a] -> [b]
map (forall a b c d. (a -> b -> c -> d) -> (a, b, c) -> d
Util.Control.uncurry3 Meters -> Meters -> Meters -> AirboxOutput
AirboxOutput)
            [ (Meters
0.01, Meters
0.02, Meters
0.6)
            , (-Meters
0.6, Meters
0.012, Meters
0.15)
            , (-Meters
0.6, Meters
0.012, -Meters
0.15)
            , (Meters
0.01, Meters
0.02, -Meters
0.6)
            , (Meters
0.01, Meters
0.7, Meters
0.01)
            , (-Meters
0.01, -Meters
0.7, -Meters
0.01)
            , (Meters
0.6, Meters
0.012, Meters
0.15)
            , (Meters
0.6, Meters
0.012, -Meters
0.15)
            ]
        }
    , iPlates :: [Plate]
iPlates = [Plate
low, Plate
high, Plate
mid]
    , iMembranes :: [Membrane]
iMembranes = []
    , iDrumshells :: [Drumshell]
iDrumshells = []
    }

membrane1 :: Membrane
membrane1 = Membrane
    { mName :: Text
mName = Text
"m1"
    , mRadius :: Meters
mRadius = Meters
0.5
    , mCenter :: (Meters, Meters, Meters)
mCenter = (Meters
0, Meters
0, Meters
0.22)
    , mMaterial :: Material
mMaterial = Meters
-> Meters -> Meters -> Meters -> Meters -> Meters -> Material
Material Meters
7800 Meters
0.002 Meters
8e11 Meters
0.33 Meters
4 Meters
0.001
    , mT :: Meters
mT = Meters
0
    }

low :: Plate
low = Plate
    { pName :: Text
pName = Text
"low"
    , pSize :: (Meters, Meters)
pSize = (Meters
0.81, Meters
0.87)
    , pCenter :: (Meters, Meters, Meters)
pCenter = (Meters
0, Meters
0, Meters
0.22)
    , pMaterial :: Material
pMaterial = Meters
-> Meters -> Meters -> Meters -> Meters -> Meters -> Material
Material Meters
7800 Meters
0.002 Meters
8e11 Meters
0.33 Meters
4 Meters
0.001
    , pOutputs :: [PlateOutput]
pOutputs = forall a b. (a -> b) -> [a] -> [b]
map (forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry Meters -> Meters -> PlateOutput
PlateOutput)
        [ (Meters
0.141421356237310, Meters
0.113137084989848)
        , (-Meters
0.282842712474619, Meters
0.056568542494924)
        ]
    }
high :: Plate
high = Plate
    { pName :: Text
pName = Text
"high"
    , pSize :: (Meters, Meters)
pSize = (Meters
0.39, Meters
0.42)
    , pCenter :: (Meters, Meters, Meters)
pCenter = (-Meters
0.1, -Meters
0.1, Meters
0)
    , pMaterial :: Material
pMaterial = Meters
-> Meters -> Meters -> Meters -> Meters -> Meters -> Material
Material Meters
7800 Meters
0.002 Meters
8e11 Meters
0.33 Meters
4 Meters
0.001
    , pOutputs :: [PlateOutput]
pOutputs = forall a b. (a -> b) -> [a] -> [b]
map (forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry Meters -> Meters -> PlateOutput
PlateOutput)
        [ (Meters
0.141421356237310, Meters
0.113137084989848)
        , (-Meters
0.282842712474619, Meters
0.056568542494924)
        ]
    }
mid :: Plate
mid = Plate
    { pName :: Text
pName = Text
"mid"
    , pSize :: (Meters, Meters)
pSize = (Meters
0.65, Meters
0.61)
    , pCenter :: (Meters, Meters, Meters)
pCenter = (Meters
0.1, Meters
0.1, -Meters
0.27)
    , pMaterial :: Material
pMaterial = Meters
-> Meters -> Meters -> Meters -> Meters -> Meters -> Material
Material Meters
7800 Meters
0.002 Meters
8e11 Meters
0.33 Meters
4 Meters
0.001
    , pOutputs :: [PlateOutput]
pOutputs = forall a b. (a -> b) -> [a] -> [b]
map (forall a b c. (a -> b -> c) -> (a, b) -> c
uncurry Meters -> Meters -> PlateOutput
PlateOutput)
        [ (Meters
0.141421356237310, Meters
0.113137084989848)
        , (-Meters
0.282842712474619, Meters
0.056568542494924)
        ]
    }