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

import           AcousticBrainz.StatisticalUnits
import           AcousticBrainz.LowLevel.Bands

import           Data.Aeson
import           Data.Aeson.Types

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

instance FromJSON MelBands where
  parseJSON = withObject "MelBands" $ \v -> fmap MelBands (Bands
    <$> (_statisticalUnitsList <$> v .: "melbands")
    <*> v .: "melbands_crest"
    <*> v .: "melbands_flatness_db"
    <*> v .: "melbands_kurtosis"
    <*> v .: "melbands_skewness"
    <*> v .: "melbands_spread")