{-# LANGUAGE OverloadedStrings #-}
module AcousticBrainz.LowLevel.Algorithm.HPCP where
import AcousticBrainz.StatisticalUnits
import Data.Aeson
import Data.Aeson.Types
import Data.Scientific
data Output = Output
{ _harmonicPitchClassProfile :: [StatisticalUnits]
, _transposedHarmonicPitchClassProfile :: [Scientific]
} deriving(Eq, Ord, Read, Show)
instance FromJSON Output where
parseJSON value = flip (withObject "HPCP") value $ \v -> Output
<$> (_statisticalUnitsList <$> v .: "hpcp")
<*> v .: "thpcp"