Search Syntax
We first performed search through three databases using the following syntax for each.
| Database | Date | Results | Search syntax |
|---|---|---|---|
| Scopus | 12 May 2024 | 227 | TITLE-ABS-KEY ( valence OR arousal OR classi OR categor OR algorithm AND music AND emotion AND recognition ) AND PUBYEAR > 2013 AND PUBYEAR < 2025 AND ( LIMIT-TO ( DOCTYPE , "ar" ) ) |
| Web of Science | 12 May 2024 | 142 | (DT=(Article) AND PY=(2014-2025)) AND ALL=(music emotion recognition valence arousal) |
| Open Alex | 12 May 2024 | 278 | https://openalex.org/works?page=1&filter=default.search%3Amusic%20emotion%20recognition%20valence%20arousal,type%3Atypes%2Farticle, publication_year%3A2014-2024, keywords.id%3Akeywords%2Femotion-recognition, keywords.id%3Akeywords%2Faffective-computing, language%3Alanguages%2Fen,open_access.any_repository_has_fulltext%3Atrue |
First Pass: Identification of relevant studies
The first pass was to eliminate non-relevant studies based on our criteria (link to prereg). This round eliminated studies with incomplete or wrong type of information (e.g. conference proceedings).
library(bib2df)
library(tidyverse)
library(stringr)
library(ggplot2)
#### Read first pass data ---------------------
d <- bib2df::bib2df(paste0(here::here(),
"/studies/bib/Passes/",
"metaMER_library_first_pass.bib")
)
# Remove extra fields
d <- dplyr::select(d,-C1,-DATE.ADDED,-DATE.MODIFIED,-LA,-BDSK.URL.1,-BDSK.URL.2,-ISBN)
# Add explicit source
d$SOURCE[str_detect(d$UNIQUE.ID,'WOS')] <- 'Web of Science'
d$SOURCE[is.na(d$SOURCE)] <- 'Open Alex'
#print(knitr::kable(table(d$SOURCE)))
library(summarytools)
print(summarytools::freq(d$SOURCE, order = "freq",round.digits = 1,missing = 'NA',headings = FALSE))| Freq | % Valid | % Valid Cum. | % Total | % Total Cum. | |
|---|---|---|---|---|---|
| Open Alex | 254 | 45.9 | 45.9 | 45.9 | 45.9 |
| Scopus | 157 | 28.4 | 74.3 | 28.4 | 74.3 |
| Web of Science | 142 | 25.7 | 100.0 | 25.7 | 100.0 |
| 0 | NA | NA | 0.0 | 100.0 | |
| Total | 553 | 100.0 | 100.0 | 100.0 | 100.0 |
After this pass, the unique number of studies in the three collections was 553. During the first pass analysis, the studies were manually checked for relevance based on title and classified into low, moderate, and high relevance based on our focus.
d$PRIORITY<-factor(d$PRIORITY,levels = c("prio1","prio2","prio3"), labels = c("High","Moderate","Low"))
#print(knitr::kable(table(d$PRIORITY)))
summarytools::freq(d$PRIORITY, order = "freq",round.digits = 1,missing = 'NA',headings = FALSE)| Freq | % Valid | % Valid Cum. | % Total | % Total Cum. | |
|---|---|---|---|---|---|
| Low | 338 | 61.1 | 61.1 | 61.1 | 61.1 |
| Moderate | 152 | 27.5 | 88.6 | 27.5 | 88.6 |
| High | 63 | 11.4 | 100.0 | 11.4 | 100.0 |
| 0 | NA | NA | 0.0 | 100.0 | |
| Total | 553 | 100.0 | 100.0 | 100.0 | 100.0 |
The majority of the excluded studies focussed on other aspects such as neuroscience, applied direction (recommendation, therapy) or another modality (visual, video, faces).
eliminated <- dplyr::filter(d, PRIORITY=='Low')
eliminated$themes <- NA
eliminated$themes[str_detect(tolower(eliminated$TITLE),'eeg|parietal|neuro|meg|galvanic|electrodermal|conductanc|heart|ecg|biosignal|brain|physiological|electroenceph|imaging|biomarker|cerebral|cardiovascular|autonomic nervous')]<-'Biosignals'
eliminated$themes[str_detect(tolower(eliminated$TITLE),'stress|therapy|depress|autis|rehabil|schizoph|alzheime|cochle|interve')]<-'Clinical'
eliminated$themes[str_detect(tolower(eliminated$TITLE),'infant|childr|childhood|empath|curriculum|amusia|music education|college|singing|young adults|newbor|memory')]<-'Developmental/Educational'
eliminated$themes[str_detect(tolower(eliminated$TITLE),'tracking|image|wearable|virtual|touch|dance|movie|TV|voice|facial|face|multimodal|body|animat|multimed|video|robot|wireless|visual|sensor|multi-modal')]<-'Multimodal'
eliminated$themes[str_detect(tolower(eliminated$TITLE),'violence|political|speech|melodies|twins|stage|timbre|tonality|age|paralinguistics|ontologies')]<-'Other'
# and more of these themes identified here
#print(knitr::kable(table(eliminated$themes)))
print(summarytools::freq(eliminated$themes, order = "freq",round.digits = 1,missing = 'NA',headings = FALSE))| Freq | % Valid | % Valid Cum. | % Total | % Total Cum. | |
|---|---|---|---|---|---|
| Biosignals | 169 | 51.5 | 51.5 | 50.0 | 50.0 |
| Multimodal | 98 | 29.9 | 81.4 | 29.0 | 79.0 |
| Other | 25 | 7.6 | 89.0 | 7.4 | 86.4 |
| Developmental/Educational | 20 | 6.1 | 95.1 | 5.9 | 92.3 |
| Clinical | 16 | 4.9 | 100.0 | 4.7 | 97.0 |
| 10 | NA | NA | 3.0 | 100.0 | |
| Total | 338 | 100.0 | 100.0 | 100.0 | 100.0 |
eliminated$TITLE[is.na(eliminated$themes)][1] “Music Communicates Affects, Not Basic Emotions - A Constructionist Account of Attribution of Emotional Meanings to Music” [2] “A survey on deep reinforcement learning for audio-based applications”
[3] “Music Emotion Recognition: Toward new, robust standards in personalized and context-sensitive applications”
[4] “Deep Learning for Human Affect Recognition: Insights and New Developments”
[5] “A Survey on Human Emotion Recognition Approaches, Databases and Applications”
[6] “Improving Driver Emotions with Affective Strategies”
[7] “Going with our Guts”
[8] “Automatic subject-specific spatiotemporal feature selection for subject-independent affective BCI”
[9] “Jasper”
[10] “Cultural Differences and Similarities in Emotion Recognition”
Second pass: Assessment of relevant content
Out of the studies identified in the first pass, a closer look at the priority 2 studies using the criteria established in the preregistration plan was carried out.