Our Taxonomy

Cyanite’s taxonomy is constantly being refined and improved. Our internal music and engineering team leads our research, development, and training to continuously improve the AI’s capabilities.
Universal Production Music

Angel “AROCK” Castillo

BPM Supreme

“We’ve received positive reviews from all types of DJs, saying that our search functionality remains strides ahead of other similar music services. Since the integration of moods, we’ve found that DJs are spending less time searching for music, which allows them more time to focus on other aspects of their business.”

Christian Hufnagel

SWR

“With Cyanite’s recommendation algorithms we are developing a user-centric radio of the future.”

Lutz Fassbender

Mediengruppe RTL / i2i Music

“In Cyanite, we have found the suitable AI partner who equips us with important innovative future technology.”

Michele Arnese

amp

“Cyanite’s deep music insights and metrics help us show our customers a new perspective on their sound brand identity and to enrich the user experience in our own Sonic Space application.”

Anthony Walters

Cinephonix

“The integration of Cyanite’s Similarity Search into Cinephonix has made it even more intuitive for our users to find the music they need and experience our music service in an intuitive and modern way. The Cyanite API was straightforward to integrate and since launching the Similarity Search functionality has been stable and extremely fast.”

Mati Gavriel

Songanizer

“You can tag one song manually in 15 minutes, or have Cyanite’s AI tag your music catalog in seconds. Thank’s to Cyanite’s state-of-the-art technology our clients can spend less time organizing and more time creating! Similarity search and visualizing meta data open another whole new world of possibilities.”

Overview

BPM

The BPM classifier provides you the BPM of the track.
“value”: 30 – 285
“confidence“: 0 – 1
“bpmRangeAdjusted”: 60 – 180

Key

The Key classifier provides you with the predicted key.
“aMinor”,
“eMinor”,
“bMinor”,
“fsMinor”,
“csMinor”,
“gsMinor”,
“dsMinor”,
“bbMinor”,
“fMinor”,
“cMinor”,
“gMinor”,
“dMinor”,
“cMajor”,
“gMajor”,
“dMajor”,
“aMajor”,
“eMajor”,
“bMajor”,
“fsMajor”,
“dbMajor”,
“abMajor”,
“ebMajor”,
“bbMajor”,
“fMajor”
“confidence“: 0 – 1

Time Signature

The Time Signature classifier provides you with timeSignature.
“3/4”,
“4/4”

Mood

The mood multi-label classifier provides mood, moodTags, moodAdvanced, moodAdvancedTags, moodMaxTimes.

(The mood can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution)

“aggressive”: 0 – 1,
“calm”: 0 – 1,
“chilled”: 0 – 1,
“dark”: 0 – 1,
“energetic”: 0 – 1,
“epic”: 0 – 1,
“happy”: 0 – 1,
“romantic”: 0 – 1,
“sad”: 0 – 1,
“scary”: 0 – 1,
“sexy”: 0 – 1,
“ethereal”: 0 – 1,
“uplifting”: 0 – 1
“aggressive”,
“calm”,
“chilled”,
“dark”,
“energetic”,
“epic”,
“happy”,
“romantic”,
“sad”,
“scary”,
“sexy”,
“ethereal”,
“uplifting”
(every possible mood as potential moodTags)
“mood”: “agressive”,
“start”: 15,
“end”: 45
“mood”: “calm”,
“start”: 15,
“end”: 45
“mood”: “chilled”,
“start”: 15,
“end”: 45

 

(every possible mood as moodMaxTimes)
“anxious”: 0 – 1,
“barren”: 0 – 1,
“cold”: 0 – 1,
“creepy”: 0 – 1,
“dark”: 0 – 1,
“disturbing”: 0 – 1,
“eerie”: 0 – 1,
“evil”: 0 – 1,
“fearful”: 0 – 1,
“mysterious”: 0 – 1,
“nervous”: 0 – 1,
“restless”: 0 – 1,
“spooky”: 0 – 1,
“strange”: 0 – 1,
“supernatural”: 0 – 1,
“suspenseful”: 0 – 1,
“tense”: 0 – 1,
“weird”: 0 – 1,
“aggressive”: 0 – 1,
“agitated”: 0 – 1,
“angry”: 0 – 1,
“dangerous”: 0 – 1,
“fiery”: 0 – 1,
“intense”: 0 – 1,
“passionate”: 0 – 1,
“ponderous”: 0 – 1,
“violent”: 0 – 1,
“comedic”: 0 – 1,
“eccentric”: 0 – 1,
“funny”: 0 – 1,
“mischievous”: 0 – 1,
“quirky”: 0 – 1,
“whimsical”: 0 – 1,
“boisterous”: 0 – 1,
“boingy”: 0 – 1,
“bright”: 0 – 1,
“celebratory”: 0 – 1,
“cheerful”: 0 – 1,
“excited”: 0 – 1,
“feelGood”: 0 – 1,
“fun”: 0 – 1,
“happy”: 0 – 1,
“joyous”: 0 – 1,
“lighthearted”: 0 – 1,
“perky”: 0 – 1,
“playful”: 0 – 1,
“rollicking”: 0 – 1,
“upbeat”: 0 – 1,
“calm”: 0 – 1,
“contented”: 0 – 1,
“dreamy”: 0 – 1,
“introspective”: 0 – 1,
“laidBack”: 0 – 1,
“leisurely”: 0 – 1,
“lyrical”: 0 – 1,
“peaceful”: 0 – 1,
“quiet”: 0 – 1,
“relaxed”: 0 – 1,
“serene”: 0 – 1,
“soothing”: 0 – 1,
“spiritual”: 0 – 1,
“tranquil”: 0 – 1,
“bittersweet”: 0 – 1,
“blue”: 0 – 1,
“depressing”: 0 – 1,
“gloomy”: 0 – 1,
“heavy”: 0 – 1,
“lonely”: 0 – 1,
“melancholic”: 0 – 1,
“mournful”: 0 – 1,
“poignant”: 0 – 1,
“sad”: 0 – 1,
“frightening”: 0 – 1,
“horror”: 0 – 1,
“menacing”: 0 – 1,
“nightmarish”: 0 – 1,
“ominous”: 0 – 1,
“panicStricken”: 0 – 1,
“scary”: 0 – 1,
“concerned”: 0 – 1,
“determined”: 0 – 1,
“dignified”: 0 – 1,
“emotional”: 0 – 1,
“noble”: 0 – 1,
“serious”: 0 – 1,
“solemn”: 0 – 1,
“thoughtful”: 0 – 1,
“cool”: 0 – 1,
“seductive”: 0 – 1,
“sexy”: 0 – 1,
“adventurous”: 0 – 1,
“confident”: 0 – 1,
“courageous”: 0 – 1,
“resolute”: 0 – 1,
“energetic”: 0 – 1,
“epic”: 0 – 1,
“exciting”: 0 – 1,
“exhilarating”: 0 – 1,
“heroic”: 0 – 1,
“majestic”: 0 – 1,
“powerful”: 0 – 1,
“prestigious”: 0 – 1,
“relentless”: 0 – 1,
“strong”: 0 – 1,
“triumphant”: 0 – 1,
“victorious”: 0 – 1,
“delicate”: 0 – 1,
“graceful”: 0 – 1,
“hopeful”: 0 – 1,
“innocent”: 0 – 1,
“intimate”: 0 – 1,
“kind”: 0 – 1,
“light”: 0 – 1,
“loving”: 0 – 1,
“nostalgic”: 0 – 1,
“reflective”: 0 – 1,
“romantic”: 0 – 1,
“sentimental”: 0 – 1,
“soft”: 0 – 1,
“sweet”: 0 – 1,
“tender”: 0 – 1,
“warm”: 0 – 1,
“anthemic”: 0 – 1,
“aweInspiring”: 0 – 1,
“euphoric”: 0 – 1,
“inspirational”: 0 – 1,
“motivational”: 0 – 1,
“optimistic”: 0 – 1,
“positive”: 0 – 1,
“proud”: 0 – 1,
“soaring”: 0 – 1,
“uplifting”: 0 – 1
“anxious”,
“barren”,
“cold”,
“creepy”,
“dark”,
“disturbing”,
“eerie”,
“evil”,
“fearful”,
“mysterious”,
“nervous”,
“restless”,
 
(every possible moodAdvanced as potential moodAdvancedTags)

Emotion

The Emotion classifier provides emotionalProfile and emotionalDynamics.

(The Emotion can be retrieved averaged over the whole track)

“variable”,
“negative”,
“balanced”,
“positive”
“low”,
“medium”,
“high”

Genre

The genre multi-label classifier provides genre, genreTags.

(The genre can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution)

“ambient”: 0 – 1,
“blues”: 0 – 1,
“classical”: 0 – 1,
“electronicDance”: 0 – 1,
“folkCountry”: 0 – 1,
“funkSoul”: 0 – 1,
“jazz”: 0 – 1,
“latin”: 0 – 1,
“metal”: 0 – 1,
“pop”: 0 – 1,
“rapHipHop”: 0 – 1,
“reggae”: 0 – 1,
“rnb”: 0 – 1,
“rock”: 0 – 1,
“singerSongwriter”: 0 – 1
“ambient”,
“blues”,
“classical”,
“electronicDance”,
“folkCountry”,
“funkSoul”,
“jazz”,
“latin”,
“metal”,
“pop”,
“rapHipHop”,
“reggae”,
“rnb”,
“rock”,
“singerSongwriter”
(every possible genre as potential genreTags)

Sub-Genre

The sub-genre multi-label classifier provides subgenre, subgenreTags.

(The subgenre can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution)

“bluesRock”: null – 1,
“folkRock”: null – 1,
“hardRock”: null – 1,
“indieAlternative”: null – 1,
“psychedelicProgressiveRock”: null – 1,
“punk”: null – 1,
“rockAndRoll”: null – 1,
“popSoftRock”: null – 1,
“abstractIDMLeftfield”: null – 1,
“breakbeatDnB”: null – 1,
“deepHouse”: null – 1,
“electro”: null – 1,
“house”: null – 1,
“minimal”: null – 1,
“synthPop”: null – 1,
“techHouse”: null – 1,
“techno”: null – 1,
“trance”: null – 1,
“contemporaryRnB”: null – 1,
“gangsta”: null – 1,
“jazzyHipHop”: null – 1,
“popRap”: null – 1,
“trap”: null – 1,
“blackMetal”: null – 1,
“deathMetal”: null – 1,
“doomMetal”: null – 1,
“heavyMetal”: null – 1,
“metalcore”: null – 1,
“nuMetal”: null – 1,
“disco”: null – 1,
“funk”: null – 1,
“gospel”: null – 1,
“neoSoul”: null – 1,
“soul”: null – 1,
“bigBandSwing”: null – 1,
“bebop”: null – 1,
“contemporaryJazz”: null – 1,
“easyListening”: null – 1,
“fusion”: null – 1,
“latinJazz”: null – 1,
“smoothJazz”: null – 1,
“country”: null – 1,
“folk”: null – 1
“bluesRock”,
“folkRock”,
“hardRock”,
“indieAlternative”,
 
(every possible subGenre as potential subGenreTags)

Classical Epoch

The Classical Epoch multi-label classifier provides classicalEpoch, classicalEpochTags.

(The Classical Epoch can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution – it is triggered once the Classical main genre is tagged)

“middleAge”: 0 – 1,
“renaissance”: 0 – 1,
“baroque”: 0 – 1,
“classical”: 0 – 1,
“romantic”: 0 – 1,
“contemporary”: 0 – 1
“middleAge”,
“renaissance”,
“baroque”,
“classical”,
“romantic”,
“contemporary”
(every possible classicalEpoch as potential classicalEpochTags)

Voice

The voice classifiers provides voice, voiceTags, voicePresenceProfile, and predominantVoiceGender.

(The voice classifier results can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution)

“female”: 0 – 1,
“male”: 0 – 1,
“instrumental”: 0 – 1
“female”,
“male”,
“instrumental”
“none”,
“low”,
“medium”,
“high”
“none”,
“female”,
“male”

Instruments

The instruments classifiers provides instrumentsPresence, instrumentTags, and instrumentsSegments.

(instrumentsPresence and instrumentTags results can be retrieved averaged over the whole track. instrumentsSegments can be retrieved segment-wise over time with 15s temporal resolution)

available instruments:
“percussion”,
“synth”,
“piano”,
“acousticGuitar”,
“electricGuitar”,
“strings”,
“bass,
“bassGuitar”,
“brassWoodwinds”
possible values:
“absent”,
“partially”,
“frequently”,
“throughout”
“percussion”,
“synth”,
“piano”,
“acousticGuitar”,
“electricGuitar”,
“strings”,
“bass,
“bassGuitar”,
“brassWoodwinds”
 
(every possible instrument as potential instrumentTags)
“percussion”: 0 – 1,
“synth”: 0 – 1,
“piano”: 0 – 1,
“acousticGuitar”: 0 – 1,
“electricGuitar”: 0 – 1,
“strings”: 0 – 1,
“bass: 0 – 1,
“bassGuitar”: 0 – 1,
“brassWoodwinds”: 0 – 1

Transformer Caption

The transformer caption classifier provides transformerCaption.

(It contains a string of max. 30 words describing the track in one or few sentences)

“transformerCaption”

Musical Era

The musical era classifier describes the era the audio was likely produced in, or which the sound of production suggests.

It includes musicalEraTag.

“late 1940s / early 1950s”,
“early 1950s / mid 1950s”,
“mid 1950s / late 1950s”,
“late 1950s / early 1960s”,
“early 1960s / mid 1960s”,
“mid 1960s / late 1960s”,
“late 1960s / early 1970s”,
“early 1970s / mid 1970s”,
“mid 1970s / late 1970s”,
“late 1970s / early 1980s”,
“early 1980s / mid 1980s”,
“mid 1980s / late 1980s”,
“late 1980s / early 1990s”,
“early 1990s / mid 1990s”,
“mid 1990s / late 1990s”,
“late 1990s / early 2000s”,
“early 2000s / mid 2000s”,
“mid 2000s / late 2000s”,
“late 2000s / contemporary”,
“contemporary”

Movement

The Movement classifier provides movement, movementTags.

(The Movement classifier results can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution)

“bouncy”: 0 – 1,
“driving”: 0 – 1,
“flowing”: 0 – 1,
“groovy”: 0 – 1,
“nonrhythmic”: 0 – 1,
“pulsing”: 0 – 1,
“robotic”: 0 – 1,
“running”: 0 – 1,
“steady”: 0 – 1,
“stomping”: 0 – 1
“bouncy”,
“driving”,
“flowing”,
“groovy”,
“nonrhythmic”,
“pulsing”,
“robotic”,
“running”,
“steady”,
“stomping”
(every possible movement as potential movementTags)

Character

The Character classifier provides character, characterTags.

(The Movement classifier results can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution)

“bold”: 0 – 1,
“cool”: 0 – 1,
“epic”: 0 – 1,
“ethereal”: 0 – 1,
“heroic”: 0 – 1,
“luxurious”: 0 – 1,
“magical”: 0 – 1,
“mysterious”: 0 – 1,
“playful”: 0 – 1,
“powerful”: 0 – 1,
“retro”: 0 – 1,
“sophisticated”: 0 – 1,
“sparkling”: 0 – 1,
“sparse”: 0 – 1,
“unpolished”: 0 – 1,
“warm”: 0 – 1
“bold”,
“cool”,
“epic”,
“ethereal”,
“heroic”,
“luxurious”,
“magical”,
“mysterious”,
“playful”,
“powerful”,
“retro”,
“sophisticated”,
“sparkling”,
“sparse”,
“unpolished”,
“warm”
(every possible character as potential characterTags)

Valence / Arousal

The Valence / Arousal classifier provides valence, arousal.

(The Valence / Arousal classifier results can be retrieved both averaged over the whole track and segment-wise over time with 15s temporal resolution)

“valence”: 0 – 1
“arousal”: 0 – 1

Energy

The Energy classifier provides energyLevel and energyDynamics.

(The Energy can be retrieved averaged over the whole track)

“energyLevel”
possible values:
“variable”,
“medium”,
“high”,
“low”
“energyDynamics”
possible values:
“low”,
“medium”,
“high”