Changelog 2020-10-09

Laurin Quast

Laurin Quast

Engineer

Announcing the new InDepthAnalysisResult.segmentData GraphQL field, deprecating InDepthAnalysisResult.segments, an updated overview of our classifiers and a GraphQL query builder.

New Track Segment GraphQL Field

We added a new GraphQL field segmentData to our InDepthAnalysisResult type. It will replace the old InDepthAnalysisResult.segments field which is now deprecated. We recommend you to switch over and use InDepthAnalysisResult.segmentData. In addition to restructuring how the data is exposed it now also exposes the voice and genre classifier results for each segment. You can find a quick overview over all the new types at the end of the changelog.

GraphQL Query Builder

Screenshot: Query Builder

We also got a lot feedback from people new to GraphQL about being overwhelmed with writing queries and grasping what data we expose. Because of this we are proud to present you our new GraphQL Query Builder. You can easily select a list of classifiers you need or want to check out. We generate a GraphQL Query out of the selected classifiers that can be execute on the GraphQL Playground or against a test data set. The latter allows peeking into the data without having to care about setting up a integration or handle authentication. Check it out 😊

Classifier Overview

We also added a new overview of all public classifiers available trough the Cyanite.ai GraphQL API. You can find the list here.

New GraphQL Types

Here is an overview over all new available fields and types on our GraphQL API.

type InDepthAnalysisResult {
"""
The classifier results on a track segment level. Useful if you want to have a deeper insight into a track over time.
"""
segmentData: AnalysisSegmentData!
moodMeanScores: [AnalysisMoodMeanScore!]!
}
"""
Describes the mood classifier result over time.
"""
type AnalysisSegmentDataMoodScore {
"""
The mood type identifier.
"""
type: String!
"""
Human readable mood type.
"""
name: String!
"""
The confidence of the classifier, for the given mood type, mapped to the index of the timestamp on `AnalysisSegmentData`.
"""
values: [Float!]!
}
"""
Describes the voice classifier results over time, mapped to the index of the timestamps.
"""
type VoiceSegmentScores {
"""
Scores for female voice, mapped to the index of the timestamp.
"""
female: [Float]!
"""
Scores for instrumental, mapped to the index of the timestamp.
"""
instrumental: [Float]!
"""
Scores for male voice, mapped to the index of the timestamp.
"""
male: [Float]!
}
"""
Describes the mood classifier result over time.
"""
type AnalysisSegmentDataGenreScore {
"""
The genre identifier.
"""
type: String!
"""
Human readable genre.
"""
name: String!
"""
The confidence of the classifier, for the given mood type, mapped to the index of the timestamp on `AnalysisSegmentData`.
"""
values: [Float!]!
}
"""
Describes the classifier result over time.
"""
type AnalysisSegmentData @public {
"""
The timestamp of each segment.
"""
timestamps: [Float!]!
"""
Mood classifier scores over time.
"""
moodScores: [AnalysisSegmentDataMoodScore!]!
"""
Genre classifier scores over time.
"""
genreScores: [AnalysisSegmentDataGenreScore!]!
"""
The valence for each segment, mapped to the index of the timestamp.
"""
valence: [Float!]!
"""
The arousal for each segment, mapped to the index of the timestamp.
"""
arousal: [Float!]!
"""
The voice segment scores for each segment, mapped to the index of the timestamp.
"""
voiceScores: VoiceSegmentScores!
}
type AnalysisMoodMeanScore {
type: String!
name: String!
value: Float!
}