{-# LANGUAGE OverloadedStrings #-}
module AcousticBrainz.LowLevel.BarkBands where

import           AcousticBrainz.StatisticalUnits
import           AcousticBrainz.LowLevel.Bands

import           Data.Aeson                         as JSON
import           Data.Aeson.Types                   as JSON

newtype BarkBands = BarkBands Bands deriving(Eq, Ord, Read, Show)

instance FromJSON BarkBands where
  parseJSON = withObject "BarkBands" $ \v -> fmap BarkBands (Bands
    <$> (_statisticalUnitsList <$> v .: "barkbands")
    <*> v .: "barkbands_crest"
    <*> v .: "barkbands_flatness_db"
    <*> v .: "barkbands_kurtosis"
    <*> v .: "barkbands_skewness"
    <*> v .: "barkbands_spread")