Changelog 2020-06-05

Laurin Quast

Laurin Quast

Engineer

Announcing BPM (beats per minute) and key analysis.

It is now possible to extract BPM and key from audio files using FastMusicalAnalysis and FullScaleMusicalAnalysis.

We added the new GraphQL fields fastMusicalAnalysis and fullScaleAnalysis on the InDepthAnalysis interface type. Both return a union type that represents the status of the analysis as well as the data available on that stage of analysis.

The FullScaleMusical analysis and FastMusicalAnalysis will be enqueued automatically by using the inDepthAnalysisEnqueueAnalysis mutation.

For songs that have been analyzed prior, the analysis can be manually re-enqueued with the inDepthAnalysisEnqueueAnalysis mutation.

Webhook events are both sent for the FullScaleMusical and FastMusicalAnalysis.

Learn more in the guide

New GraphQL types:

interface InDepthAnalysis {
fastMusicalAnalysis: FastMusicalAnalysis!
fullScaleMusicalAnalysis: FullScaleMusicalAnalysis!
}
type InvalidAudioFileError implements Error {
message: String!
}
union FastMusicalAnalysisError = InvalidAudioFileError
union FullScaleMusicalAnalysisError = InvalidAudioFileError
type KeyPrediction {
values: [String!]!
confidences: [Float!]!
}
type FastMusicalAnalysisResult {
bpm: Float!
key: KeyPrediction!
}
type FastMusicalAnalysisNotStarted {
_: Boolean
}
type FastMusicalAnalysisEnqueued {
_: Boolean
}
type FastMusicalAnalysisProcessing {
_: Boolean
}
type FastMusicalAnalysisFinished {
result: FastMusicalAnalysisResult!
}
type FastMusicalAnalysisFailed {
error: FastMusicalAnalysisError!
}
union FastMusicalAnalysis =
FastMusicalAnalysisNotStarted
| FastMusicalAnalysisEnqueued
| FastMusicalAnalysisProcessing
| FastMusicalAnalysisFinished
| FastMusicalAnalysisFailed
type FullScaleMusicalAnalysisResult {
bpm: Float!
key: KeyPrediction!
}
type FullScaleMusicalAnalysisNotStarted {
_: Boolean
}
type FullScaleMusicalAnalysisEnqueued {
_: Boolean
}
type FullScaleMusicalAnalysisProcessing {
_: Boolean
}
type FullScaleMusicalAnalysisFinished {
result: FullScaleMusicalAnalysisResult!
}
type FullScaleMusicalAnalysisFailed {
error: FullScaleMusicalAnalysisError!
}
union FullScaleMusicalAnalysis =
FullScaleMusicalAnalysisNotStarted
| FullScaleMusicalAnalysisEnqueued
| FullScaleMusicalAnalysisProcessing
| FullScaleMusicalAnalysisFinished
| FullScaleMusicalAnalysisFailed

Visit the GraphQL Playground