Skip to main content

Changelog 2020-06-05

· 2 min read
Laurin Quast

Announcing BPM (beats per minute) and key analysis.

caution

FastMusicalAnalysis and FullScaleMusicalAnalysis are deprecated as of June 15 2021. Please use the AudioAnalysisV6.

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.

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 GraphiQL