LCOV - code coverage report
Current view: top level - muse/framework/mpe - soundid.h Coverage Total Hit
Test: filtered_coverage.info Lines: 65.8 % 38 25
Test Date: 2026-11-05 04:07:02

            Line data    Source code
       1              : /*
       2              :  * SPDX-License-Identifier: GPL-3.0-only
       3              :  * MuseScore-CLA-applies
       4              :  *
       5              :  * MuseScore Studio
       6              :  * Music Composition & Notation
       7              :  *
       8              :  * Copyright (C) 2021 MuseScore Limited and others
       9              :  *
      10              :  * This program is free software: you can redistribute it and/or modify
      11              :  * it under the terms of the GNU General Public License version 3 as
      12              :  * published by the Free Software Foundation.
      13              :  *
      14              :  * This program is distributed in the hope that it will be useful,
      15              :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      16              :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      17              :  * GNU General Public License for more details.
      18              :  *
      19              :  * You should have received a copy of the GNU General Public License
      20              :  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
      21              :  */
      22              : 
      23              : #ifndef MUSE_MPE_SOUNDID_H
      24              : #define MUSE_MPE_SOUNDID_H
      25              : 
      26              : #include <set>
      27              : #include <unordered_map>
      28              : 
      29              : #include "types/string.h"
      30              : 
      31              : namespace muse::mpe {
      32              : enum class SoundId
      33              : {
      34              :     Undefined = -1,
      35              :     Unknown,
      36              : 
      37              :     Accordion,
      38              :     Bandoneon,
      39              :     Concertina,
      40              :     Harmonica,
      41              :     Melodica,
      42              :     Sheng,
      43              :     Celesta,
      44              :     Clavichord,
      45              :     Harpsichord,
      46              :     Virginal,
      47              :     Piano,
      48              :     Organ,
      49              :     Harmonium,
      50              :     Synthesizer,
      51              :     Theremin,
      52              :     OndesMartenot,
      53              : 
      54              :     Harp,
      55              :     Cavaquinho,
      56              :     Guitar,
      57              :     BassGuitar,
      58              :     Banjo,
      59              :     Ukulele,
      60              :     Mandolin,
      61              :     MtnDulcimer,
      62              :     Lute,
      63              :     Theorbo,
      64              :     Archlute,
      65              :     Balalaika,
      66              :     Guzheng,
      67              :     Guqin,
      68              :     Pipa,
      69              :     Yangqin,
      70              :     Koto,
      71              :     Oud,
      72              :     Shamisen,
      73              :     Sitar,
      74              :     Prim,
      75              :     Brac,
      76              :     Bugarija,
      77              :     Berda,
      78              :     Celo,
      79              :     Bandurria,
      80              :     Laud,
      81              :     StringsGroup,
      82              :     Violin,
      83              :     Viola,
      84              :     ViolaDaGamba,
      85              :     Violoncello,
      86              :     Viol,
      87              :     PardessusViol,
      88              :     Baryton,
      89              :     Violone,
      90              :     Nyckelharpa,
      91              :     Erhu,
      92              :     Ajaeng,
      93              :     Gayageum,
      94              :     Contrabass,
      95              :     Octobass,
      96              :     TimpleCanario,
      97              : 
      98              :     WindsGroup,
      99              :     Piccolo,
     100              :     Dulzaina,
     101              :     Heckelphone,
     102              :     HeckelphoneClarinet,
     103              :     Oboe,
     104              :     Lupophone,
     105              :     Flute,
     106              :     PanFlute,
     107              :     Danso,
     108              :     Daegeum,
     109              :     Traverso,
     110              :     Dizi,
     111              :     Shakuhachi,
     112              :     Hichiriki,
     113              :     Sho,
     114              :     Fife,
     115              :     Whistle,
     116              :     Flageolet,
     117              :     Recorder,
     118              :     Ocarina,
     119              :     Gemshorn,
     120              :     Quena,
     121              :     Horn,
     122              :     Bassethorn,
     123              :     Shawm,
     124              :     Cromorne,
     125              :     Crumhorn,
     126              :     Cornamuse,
     127              :     Kelhorn,
     128              :     Rauschpfeife,
     129              :     Duduk,
     130              :     Shenai,
     131              :     Clarinet,
     132              :     Chalumeau,
     133              :     Xaphoon,
     134              :     Tarogato,
     135              :     Octavin,
     136              :     Saxophone,
     137              :     Aulochrome,
     138              :     Bassoon,
     139              :     Contrabassoon,
     140              :     Dulcian,
     141              :     Rackett,
     142              :     Sarrusophone,
     143              :     Bagpipe,
     144              :     Tuba,
     145              :     Cornet,
     146              :     Posthorn,
     147              :     BrassGroup,
     148              :     Trumpet,
     149              :     Bugle,
     150              :     MellophoneBugle,
     151              :     EuphoniumBugle,
     152              :     Euphonium,
     153              :     Fiscorn,
     154              :     Flugelhorn,
     155              :     Kuhlohorn,
     156              :     Ophicleide,
     157              :     Cornettino,
     158              :     Cornett,
     159              :     Serpent,
     160              :     Trombone,
     161              :     Cimbasso,
     162              :     Sackbut,
     163              :     Sousaphone,
     164              :     Helicon,
     165              :     Conch,
     166              :     Saxhorn,
     167              :     Horagai,
     168              :     Alphorn,
     169              :     RagDung,
     170              :     Didgeridoo,
     171              :     Shofar,
     172              :     Vuvuzela,
     173              : 
     174              :     Timpani,
     175              :     RotoToms,
     176              :     Tubaphone,
     177              :     SteelDrums,
     178              :     Glockenspiel,
     179              :     Xylophone,
     180              :     Xylomarimba,
     181              :     Vibraphone,
     182              :     Dulcimer,
     183              :     Cimbalom,
     184              :     Marimba,
     185              :     Crotales,
     186              :     Chimes,
     187              :     Carillon,
     188              :     Gong,
     189              :     Metallophone,
     190              :     Flexatone,
     191              :     MusicalSaw,
     192              :     MusicalGlasses,
     193              :     KlaxonHorns,
     194              :     Kalimba,
     195              :     Bongos,
     196              :     Xiaogu,
     197              :     Bangu,
     198              :     Dagu,
     199              :     Daluo,
     200              :     Xiaoluo,
     201              :     Ban,
     202              :     Dabo,
     203              :     Naobo,
     204              :     Bangzi,
     205              :     Janggu,
     206              :     Buk,
     207              :     SamulBuk,
     208              :     SamulJanggu,
     209              :     SanjoJanggu,
     210              :     SoriBuk,
     211              :     Sogo,
     212              :     Kkwaenggwari,
     213              :     Jing,
     214              :     TomToms,
     215              :     KoTsuzumi,
     216              :     OTsuzumi,
     217              :     Kakko,
     218              :     ShimeDaiko,
     219              :     MiyaDaiko,
     220              :     TsuriDaiko,
     221              :     OkedoDaiko,
     222              :     Kane,
     223              :     Shoko,
     224              :     Conga,
     225              :     Djembe,
     226              :     Doumbek,
     227              :     Cajon,
     228              :     Cuica,
     229              :     Drumset,
     230              :     Drum,
     231              :     Tablas,
     232              :     Timbales,
     233              :     Anvil,
     234              :     BellTree,
     235              :     Bell,
     236              :     Chain,
     237              :     Cymbal,
     238              :     HiHat,
     239              :     Pipe,
     240              :     MarkTree,
     241              :     Castanet,
     242              :     TamTam,
     243              :     Thundersheet,
     244              :     Triangle,
     245              :     Claves,
     246              :     Guiro,
     247              :     Block,
     248              :     Cabasa,
     249              :     Maraca,
     250              :     Quijada,
     251              :     Ratchet,
     252              :     Shaker,
     253              :     Shekere,
     254              :     Stones,
     255              :     Tambourine,
     256              :     Tubo,
     257              :     Vibraslap,
     258              :     Whip,
     259              :     Cannon,
     260              :     BirdCall,
     261              :     Snap,
     262              :     Clap,
     263              :     Slap,
     264              :     Stamp,
     265              :     Choir,
     266              :     Kazoo,
     267              :     Taiko,
     268              :     Metronome,
     269              : 
     270              :     Last
     271              : };
     272              : 
     273              : enum class SoundCategory
     274              : {
     275              :     Undefined = -1,
     276              :     Keyboards,
     277              :     Strings,
     278              :     Winds,
     279              :     Percussions,
     280              :     Voices,
     281              : 
     282              :     Last
     283              : };
     284              : 
     285              : enum class SoundSubCategory
     286              : {
     287              :     Undefined = -1,
     288              :     Unknown,
     289              : 
     290              :     English,
     291              :     Armenian,
     292              :     Alpine,
     293              :     Australian,
     294              :     Irish,
     295              :     French,
     296              :     Chinese,
     297              :     Vienna,
     298              :     Greek,
     299              :     Japanese,
     300              :     Korean,
     301              :     Tibetan,
     302              :     African,
     303              :     Indian,
     304              :     Spanish,
     305              :     Castilian,
     306              :     Swedish,
     307              :     Hungarian,
     308              :     Romanian,
     309              :     CentralEuropean,
     310              : 
     311              :     Baroque,
     312              :     Classical,
     313              :     Modern,
     314              :     Orchestral,
     315              : 
     316              :     Hammond,
     317              :     Wagner,
     318              :     Orff,
     319              :     Huang,
     320              :     Hohner,
     321              : 
     322              :     Percussive,
     323              :     Piped,
     324              :     Rotary,
     325              :     Reed,
     326              :     Foot,
     327              :     Hand,
     328              :     Finger,
     329              :     Boy,
     330              :     Girl,
     331              :     Male,
     332              :     Female,
     333              :     Pad,
     334              :     Plucked,
     335              : 
     336              :     FourPiece,
     337              :     FivePiece,
     338              : 
     339              :     Temple,
     340              :     Military,
     341              :     Ride,
     342              :     Sleigh,
     343              :     Cow,
     344              :     Agogo,
     345              :     Marching,
     346              :     Show_Style,
     347              :     Opera,
     348              :     China,
     349              : 
     350              :     Splash,
     351              :     Crash,
     352              :     Plate,
     353              :     Bowl,
     354              :     Frame,
     355              :     Slit,
     356              :     Log,
     357              :     Ocean,
     358              :     Field,
     359              :     Snare,
     360              :     Brake,
     361              :     Slide,
     362              :     Pocket,
     363              :     Garklein,
     364              :     Toy,
     365              :     String,
     366              :     TwelveString,
     367              : 
     368              :     Grand,
     369              :     HonkyTonk,
     370              :     Upright,
     371              :     Prima,
     372              :     Secunda,
     373              : 
     374              :     Electric,
     375              :     Electronic,
     376              :     Acoustic,
     377              :     Fretless,
     378              :     Pedal,
     379              :     Steel,
     380              :     Metal,
     381              :     Iron,
     382              :     Brass,
     383              :     Tin,
     384              :     Nylon,
     385              :     Wooden,
     386              :     Sandpaper,
     387              :     Glass,
     388              :     Shell,
     389              :     Wind,
     390              :     Soft,
     391              : 
     392              :     Treble,
     393              :     Diatonic,
     394              :     Chromatic,
     395              :     Octave,
     396              : 
     397              :     Piccolo,
     398              :     Alto,
     399              :     Tenor,
     400              :     Baritone,
     401              :     Soprano,
     402              :     Mezzo_Soprano,
     403              :     Sopranino,
     404              :     Sopranissimo,
     405              :     Counter_Tenor,
     406              :     Contra,
     407              :     Contra_Alto,
     408              :     Sub_Contra_Alto,
     409              :     Contra_Bass,
     410              :     Sub_Contra_Bass,
     411              :     Double_Contra_Bass,
     412              :     Bass,
     413              :     Bowed,
     414              :     Great_Bass,
     415              :     Hyper_Bass,
     416              :     Melody,
     417              : 
     418              :     FX_Goblins,
     419              :     FX_Atmosphere,
     420              :     FX_Brightness,
     421              :     FX_Crystal,
     422              :     FX_Echoes,
     423              :     FX_Rain,
     424              :     FX_SciFi,
     425              :     FX_SoundTrack,
     426              : 
     427              :     Sweep,
     428              :     Warm,
     429              :     NewAge,
     430              :     Polysynth,
     431              :     Halo,
     432              :     Metallic,
     433              :     Choir,
     434              : 
     435              :     Sine_Wave,
     436              :     Square_Wave,
     437              :     Sawtooth_Wave,
     438              : 
     439              :     Primary,
     440              :     Secondary,
     441              :     Section,
     442              : 
     443              :     In_C,
     444              :     In_D,
     445              :     In_D_flat,
     446              :     In_E,
     447              :     In_E_flat,
     448              :     In_F,
     449              :     In_G,
     450              :     In_G_flat,
     451              :     In_A,
     452              :     In_A_flat,
     453              :     In_B,
     454              :     In_B_flat,
     455              : 
     456              :     Last
     457              : };
     458              : 
     459              : inline const std::unordered_map<SoundId, String> ID_STRINGS
     460              : {
     461              :     { SoundId::Undefined, String(u"undefined") },
     462              :     { SoundId::Unknown, String(u"unknown") },
     463              :     { SoundId::Accordion, String(u"accordion") },
     464              :     { SoundId::Bandoneon, String(u"bandoneon") },
     465              :     { SoundId::Concertina, String(u"concertina") },
     466              :     { SoundId::Harmonica, String(u"harmonica") },
     467              :     { SoundId::Melodica, String(u"melodica") },
     468              :     { SoundId::Sheng, String(u"sheng") },
     469              :     { SoundId::Celesta, String(u"celesta") },
     470              :     { SoundId::Clavichord, String(u"clavichord") },
     471              :     { SoundId::Harpsichord, String(u"harpsichord") },
     472              :     { SoundId::Virginal, String(u"virginal") },
     473              :     { SoundId::Piano, String(u"piano") },
     474              :     { SoundId::Organ, String(u"organ") },
     475              :     { SoundId::Harmonium, String(u"harmonium") },
     476              :     { SoundId::Synthesizer, String(u"synthesizer") },
     477              :     { SoundId::Theremin, String(u"theremin") },
     478              :     { SoundId::OndesMartenot, String(u"ondes_martenot") },
     479              : 
     480              :     { SoundId::Harp, String(u"harp") },
     481              :     { SoundId::Cavaquinho, String(u"cavaquinho") },
     482              :     { SoundId::Guitar, String(u"guitar") },
     483              :     { SoundId::BassGuitar, String(u"bass_guitar") },
     484              :     { SoundId::Banjo, String(u"banjo") },
     485              :     { SoundId::Ukulele, String(u"ukulele") },
     486              :     { SoundId::Mandolin, String(u"mandolin") },
     487              :     { SoundId::MtnDulcimer, String(u"mtn_dulcimer") },
     488              :     { SoundId::Lute, String(u"lute") },
     489              :     { SoundId::Theorbo, String(u"theorbo") },
     490              :     { SoundId::Archlute, String(u"archlute") },
     491              :     { SoundId::Balalaika, String(u"balalaika") },
     492              :     { SoundId::Guzheng, String(u"guzheng") },
     493              :     { SoundId::Guqin, String(u"guqin") },
     494              :     { SoundId::Pipa, String(u"pipa") },
     495              :     { SoundId::Yangqin, String(u"yangqin") },
     496              :     { SoundId::Koto, String(u"koto") },
     497              :     { SoundId::Oud, String(u"oud") },
     498              :     { SoundId::Shamisen, String(u"shamisen") },
     499              :     { SoundId::Sitar, String(u"sitar") },
     500              :     { SoundId::Prim, String(u"prim") },
     501              :     { SoundId::Brac, String(u"brac") },
     502              :     { SoundId::Bugarija, String(u"bugarija") },
     503              :     { SoundId::Berda, String(u"berda") },
     504              :     { SoundId::Celo, String(u"celo") },
     505              :     { SoundId::Bandurria, String(u"bandurria") },
     506              :     { SoundId::Laud, String(u"laud") },
     507              :     { SoundId::StringsGroup, String(u"strings_group") },
     508              :     { SoundId::Violin, String(u"violin") },
     509              :     { SoundId::Viola, String(u"viola") },
     510              :     { SoundId::ViolaDaGamba, String(u"viola_dagamba") },
     511              :     { SoundId::Violoncello, String(u"violoncello") },
     512              :     { SoundId::Viol, String(u"viol") },
     513              :     { SoundId::PardessusViol, String(u"pardessus_viol") },
     514              :     { SoundId::Baryton, String(u"baryton") },
     515              :     { SoundId::Violone, String(u"violone") },
     516              :     { SoundId::Nyckelharpa, String(u"nyckelharpa") },
     517              :     { SoundId::Erhu, String(u"erhu") },
     518              :     { SoundId::Ajaeng, String(u"ajaeng") },
     519              :     { SoundId::Gayageum, String(u"gayageum") },
     520              :     { SoundId::Contrabass, String(u"contrabass") },
     521              :     { SoundId::Octobass, String(u"octobass") },
     522              :     { SoundId::TimpleCanario, String(u"timple_canario") },
     523              : 
     524              :     { SoundId::WindsGroup, String(u"winds_group") },
     525              :     { SoundId::Piccolo, String(u"piccolo") },
     526              :     { SoundId::Dulzaina, String(u"dulzaina") },
     527              :     { SoundId::Heckelphone, String(u"heckelphone") },
     528              :     { SoundId::HeckelphoneClarinet, String(u"heckelphone_clarinet") },
     529              :     { SoundId::Oboe, String(u"oboe") },
     530              :     { SoundId::Lupophone, String(u"lupophone") },
     531              :     { SoundId::Flute, String(u"flute") },
     532              :     { SoundId::PanFlute, String(u"pan_flute") },
     533              :     { SoundId::Danso, String(u"danso") },
     534              :     { SoundId::Daegeum, String(u"daegeum") },
     535              :     { SoundId::Traverso, String(u"traverso") },
     536              :     { SoundId::Dizi, String(u"dizi") },
     537              :     { SoundId::Shakuhachi, String(u"shakuhachi") },
     538              :     { SoundId::Hichiriki, String(u"hichiriki") },
     539              :     { SoundId::Sho, String(u"sho") },
     540              :     { SoundId::Fife, String(u"fife") },
     541              :     { SoundId::Whistle, String(u"whistle") },
     542              :     { SoundId::Flageolet, String(u"flageolet") },
     543              :     { SoundId::Recorder, String(u"recorder") },
     544              :     { SoundId::Ocarina, String(u"ocarina") },
     545              :     { SoundId::Gemshorn, String(u"gemshorn") },
     546              :     { SoundId::Quena, String(u"quena") },
     547              :     { SoundId::Horn, String(u"horn") },
     548              :     { SoundId::Bassethorn, String(u"bassethorn") },
     549              :     { SoundId::Shawm, String(u"shawm") },
     550              :     { SoundId::Cromorne, String(u"cromorne") },
     551              :     { SoundId::Crumhorn, String(u"crumhorn") },
     552              :     { SoundId::Cornamuse, String(u"cornamuse") },
     553              :     { SoundId::Kelhorn, String(u"kelhorn") },
     554              :     { SoundId::Rauschpfeife, String(u"rauschpfeife") },
     555              :     { SoundId::Duduk, String(u"duduk") },
     556              :     { SoundId::Shenai, String(u"shenai") },
     557              :     { SoundId::Clarinet, String(u"clarinet") },
     558              :     { SoundId::Chalumeau, String(u"chalumeau") },
     559              :     { SoundId::Xaphoon, String(u"xaphoon") },
     560              :     { SoundId::Tarogato, String(u"tarogato") },
     561              :     { SoundId::Octavin, String(u"octavin") },
     562              :     { SoundId::Saxophone, String(u"saxophone") },
     563              :     { SoundId::Aulochrome, String(u"aulochrome") },
     564              :     { SoundId::Bassoon, String(u"bassoon") },
     565              :     { SoundId::Contrabassoon, String(u"contrabassoon") },
     566              :     { SoundId::Dulcian, String(u"dulcian") },
     567              :     { SoundId::Rackett, String(u"rackett") },
     568              :     { SoundId::Sarrusophone, String(u"sarrusophone") },
     569              :     { SoundId::Bagpipe, String(u"bagpipe") },
     570              :     { SoundId::Tuba, String(u"tuba") },
     571              :     { SoundId::Cornet, String(u"cornet") },
     572              :     { SoundId::Posthorn, String(u"posthorn") },
     573              :     { SoundId::BrassGroup, String(u"brass_group") },
     574              :     { SoundId::Trumpet, String(u"trumpet") },
     575              :     { SoundId::Bugle, String(u"bugle") },
     576              :     { SoundId::MellophoneBugle, String(u"mellophone_bugle") },
     577              :     { SoundId::EuphoniumBugle, String(u"euphonium_bugle") },
     578              :     { SoundId::Euphonium, String(u"euphonium") },
     579              :     { SoundId::Fiscorn, String(u"fiscorn") },
     580              :     { SoundId::Flugelhorn, String(u"flugelhorn") },
     581              :     { SoundId::Kuhlohorn, String(u"kuhlohorn") },
     582              :     { SoundId::Ophicleide, String(u"ophicleide") },
     583              :     { SoundId::Cornettino, String(u"cornettino") },
     584              :     { SoundId::Cornett, String(u"cornett") },
     585              :     { SoundId::Serpent, String(u"serpent") },
     586              :     { SoundId::Trombone, String(u"trombone") },
     587              :     { SoundId::Cimbasso, String(u"cimbasso") },
     588              :     { SoundId::Sackbut, String(u"sackbut") },
     589              :     { SoundId::Sousaphone, String(u"sousaphone") },
     590              :     { SoundId::Helicon, String(u"helicon") },
     591              :     { SoundId::Conch, String(u"conch") },
     592              :     { SoundId::Saxhorn, String(u"saxhorn") },
     593              :     { SoundId::Horagai, String(u"horagai") },
     594              :     { SoundId::Alphorn, String(u"alphorn") },
     595              :     { SoundId::RagDung, String(u"rag_dung") },
     596              :     { SoundId::Didgeridoo, String(u"didgeridoo") },
     597              :     { SoundId::Shofar, String(u"shofar") },
     598              :     { SoundId::Vuvuzela, String(u"vuvuzela") },
     599              : 
     600              :     { SoundId::Timpani, String(u"timpani") },
     601              :     { SoundId::RotoToms, String(u"roto_toms") },
     602              :     { SoundId::Tubaphone, String(u"tubaphone") },
     603              :     { SoundId::SteelDrums, String(u"steel_drums") },
     604              :     { SoundId::Glockenspiel, String(u"glockenspiel") },
     605              :     { SoundId::Xylophone, String(u"xylophone") },
     606              :     { SoundId::Xylomarimba, String(u"xylomarimba") },
     607              :     { SoundId::Vibraphone, String(u"vibraphone") },
     608              :     { SoundId::Dulcimer, String(u"dulcimer") },
     609              :     { SoundId::Cimbalom, String(u"cimbalom") },
     610              :     { SoundId::Marimba, String(u"marimba") },
     611              :     { SoundId::Crotales, String(u"crotales") },
     612              :     { SoundId::Chimes, String(u"chimes") },
     613              :     { SoundId::Carillon, String(u"carillon") },
     614              :     { SoundId::Gong, String(u"gong") },
     615              :     { SoundId::Metallophone, String(u"metallophone") },
     616              :     { SoundId::Flexatone, String(u"flexatone") },
     617              :     { SoundId::MusicalSaw, String(u"musical_saw") },
     618              :     { SoundId::MusicalGlasses, String(u"musical_glasses") },
     619              :     { SoundId::KlaxonHorns, String(u"klaxon_horns") },
     620              :     { SoundId::Kalimba, String(u"kalimba") },
     621              :     { SoundId::Bongos, String(u"bongos") },
     622              :     { SoundId::Xiaogu, String(u"xiaogu") },
     623              :     { SoundId::Bangu, String(u"bangu") },
     624              :     { SoundId::Dagu, String(u"dagu") },
     625              :     { SoundId::Daluo, String(u"daluo") },
     626              :     { SoundId::Xiaoluo, String(u"xiaoluo") },
     627              :     { SoundId::Ban, String(u"ban") },
     628              :     { SoundId::Dabo, String(u"dabo") },
     629              :     { SoundId::Naobo, String(u"naobo") },
     630              :     { SoundId::Bangzi, String(u"bangzi") },
     631              :     { SoundId::Janggu, String(u"janggu") },
     632              :     { SoundId::Buk, String(u"buk") },
     633              :     { SoundId::SamulBuk, String(u"samul_buk") },
     634              :     { SoundId::SamulJanggu, String(u"samul_janggu") },
     635              :     { SoundId::SanjoJanggu, String(u"sanjo_janggu") },
     636              :     { SoundId::SoriBuk, String(u"sori_buk") },
     637              :     { SoundId::Sogo, String(u"sogo") },
     638              :     { SoundId::Kkwaenggwari, String(u"kkwaenggwari") },
     639              :     { SoundId::Jing, String(u"jing") },
     640              :     { SoundId::TomToms, String(u"tom_toms") },
     641              :     { SoundId::KoTsuzumi, String(u"ko_tsuzumi") },
     642              :     { SoundId::OTsuzumi, String(u"o_tsuzumi") },
     643              :     { SoundId::Kakko, String(u"kakko") },
     644              :     { SoundId::ShimeDaiko, String(u"shime_daiko") },
     645              :     { SoundId::MiyaDaiko, String(u"miya_daiko") },
     646              :     { SoundId::TsuriDaiko, String(u"tsuri_daiko") },
     647              :     { SoundId::OkedoDaiko, String(u"okedo_daiko") },
     648              :     { SoundId::Kane, String(u"kane") },
     649              :     { SoundId::Shoko, String(u"shoko") },
     650              :     { SoundId::Conga, String(u"conga") },
     651              :     { SoundId::Djembe, String(u"djembe") },
     652              :     { SoundId::Doumbek, String(u"doumbek") },
     653              :     { SoundId::Cajon, String(u"cajon") },
     654              :     { SoundId::Cuica, String(u"cuica") },
     655              :     { SoundId::Drumset, String(u"drumset") },
     656              :     { SoundId::Drum, String(u"drum") },
     657              :     { SoundId::Tablas, String(u"tablas") },
     658              :     { SoundId::Timbales, String(u"timbales") },
     659              :     { SoundId::Anvil, String(u"anvil") },
     660              :     { SoundId::BellTree, String(u"bell_tree") },
     661              :     { SoundId::Bell, String(u"bell") },
     662              :     { SoundId::Chain, String(u"chain") },
     663              :     { SoundId::Cymbal, String(u"cymbal") },
     664              :     { SoundId::HiHat, String(u"hi_hat") },
     665              :     { SoundId::Pipe, String(u"pipe") },
     666              :     { SoundId::MarkTree, String(u"mark_tree") },
     667              :     { SoundId::Castanet, String(u"castanet") },
     668              :     { SoundId::TamTam, String(u"tam_tam") },
     669              :     { SoundId::Thundersheet, String(u"thunder_sheet") },
     670              :     { SoundId::Triangle, String(u"triangle") },
     671              :     { SoundId::Claves, String(u"claves") },
     672              :     { SoundId::Guiro, String(u"guiro") },
     673              :     { SoundId::Block, String(u"block") },
     674              :     { SoundId::Cabasa, String(u"cabasa") },
     675              :     { SoundId::Maraca, String(u"maraca") },
     676              :     { SoundId::Quijada, String(u"quijada") },
     677              :     { SoundId::Ratchet, String(u"ratchet") },
     678              :     { SoundId::Shaker, String(u"shaker") },
     679              :     { SoundId::Shekere, String(u"shekere") },
     680              :     { SoundId::Stones, String(u"stones") },
     681              :     { SoundId::Tambourine, String(u"tambourine") },
     682              :     { SoundId::Tubo, String(u"tubo") },
     683              :     { SoundId::Vibraslap, String(u"vibraslap") },
     684              :     { SoundId::Whip, String(u"whip") },
     685              :     { SoundId::Cannon, String(u"cannon") },
     686              :     { SoundId::BirdCall, String(u"bird_call") },
     687              :     { SoundId::Snap, String(u"snap") },
     688              :     { SoundId::Clap, String(u"clap") },
     689              :     { SoundId::Slap, String(u"slap") },
     690              :     { SoundId::Stamp, String(u"stamp") },
     691              :     { SoundId::Choir, String(u"choir") },
     692              :     { SoundId::Kazoo, String(u"kazoo") },
     693              :     { SoundId::Taiko, String(u"taiko") },
     694              :     { SoundId::Metronome, String(u"metronome") },
     695              :     { SoundId::Last, String(u"last") }
     696              : };
     697              : 
     698          861 : inline const String& soundIdToString(const SoundId id)
     699              : {
     700          861 :     auto search = ID_STRINGS.find(id);
     701          861 :     if (search == ID_STRINGS.cend()) {
     702            0 :         return ID_STRINGS.at(SoundId::Unknown);
     703              :     }
     704              : 
     705          861 :     return search->second;
     706              : }
     707              : 
     708           30 : inline SoundId soundIdFromString(const String& str)
     709              : {
     710           30 :     if (str.empty()) {
     711            0 :         return SoundId::Undefined;
     712              :     }
     713              : 
     714           30 :     auto search = std::find_if(ID_STRINGS.cbegin(),
     715              :                                ID_STRINGS.cend(),
     716         4311 :                                [str](const auto& pair) { return pair.second == str; });
     717              : 
     718           30 :     if (search == ID_STRINGS.cend()) {
     719            0 :         return SoundId::Unknown;
     720              :     }
     721              : 
     722           30 :     return search->first;
     723              : }
     724              : 
     725              : inline const std::unordered_map<SoundCategory, String> CATEGORY_STRINGS
     726              : {
     727              :     { SoundCategory::Keyboards, String(u"keyboards") },
     728              :     { SoundCategory::Strings, String(u"strings") },
     729              :     { SoundCategory::Winds, String(u"winds") },
     730              :     { SoundCategory::Percussions, String(u"percussions") },
     731              :     { SoundCategory::Voices, String(u"voices") },
     732              :     { SoundCategory::Last, String(u"last") }
     733              : };
     734              : 
     735          184 : inline const String& soundCategoryToString(const SoundCategory category)
     736              : {
     737          184 :     auto search = CATEGORY_STRINGS.find(category);
     738          184 :     if (search == CATEGORY_STRINGS.cend()) {
     739           31 :         static const String UNDEFINED_SUBCATEGORY_STR(u"undefined");
     740            0 :         return UNDEFINED_SUBCATEGORY_STR;
     741              :     }
     742              : 
     743          184 :     return search->second;
     744              : }
     745              : 
     746            0 : inline SoundCategory soundCategoryFromString(const String& str)
     747              : {
     748            0 :     auto search = std::find_if(CATEGORY_STRINGS.cbegin(),
     749              :                                CATEGORY_STRINGS.cend(),
     750            0 :                                [str](const auto& pair) { return pair.second == str; });
     751              : 
     752            0 :     if (search == CATEGORY_STRINGS.cend()) {
     753            0 :         return SoundCategory::Undefined;
     754              :     }
     755              : 
     756            0 :     return search->first;
     757              : }
     758              : 
     759              : inline const std::unordered_map<SoundSubCategory, String> SUBCATEGORY_STRINGS
     760              : {
     761              :     { SoundSubCategory::Undefined, String(u"undefined") },
     762              :     { SoundSubCategory::Unknown, String(u"unknown") },
     763              :     { SoundSubCategory::English, String(u"english") },
     764              :     { SoundSubCategory::Armenian, String(u"armenian") },
     765              :     { SoundSubCategory::Alpine, String(u"alpine") },
     766              :     { SoundSubCategory::Australian, String(u"australian") },
     767              :     { SoundSubCategory::Irish, String(u"irish") },
     768              :     { SoundSubCategory::French, String(u"french") },
     769              :     { SoundSubCategory::Chinese, String(u"chinese") },
     770              :     { SoundSubCategory::Vienna, String(u"vienna") },
     771              :     { SoundSubCategory::Greek, String(u"greek") },
     772              :     { SoundSubCategory::Japanese, String(u"japanese") },
     773              :     { SoundSubCategory::Korean, String(u"korean") },
     774              :     { SoundSubCategory::Tibetan, String(u"tibetan") },
     775              :     { SoundSubCategory::African, String(u"african") },
     776              :     { SoundSubCategory::Indian, String(u"indian") },
     777              :     { SoundSubCategory::Spanish, String(u"spanish") },
     778              :     { SoundSubCategory::Castilian, String(u"castilian") },
     779              :     { SoundSubCategory::Swedish, String(u"swedish") },
     780              :     { SoundSubCategory::Hungarian, String(u"hungarian") },
     781              :     { SoundSubCategory::Romanian, String(u"romanian") },
     782              :     { SoundSubCategory::CentralEuropean, String(u"central_european") },
     783              : 
     784              :     { SoundSubCategory::Baroque, String(u"baroque") },
     785              :     { SoundSubCategory::Classical, String(u"classical") },
     786              :     { SoundSubCategory::Modern, String(u"modern") },
     787              :     { SoundSubCategory::Orchestral, String(u"orchestral") },
     788              : 
     789              :     { SoundSubCategory::Hammond, String(u"hammond") },
     790              :     { SoundSubCategory::Wagner, String(u"wagner") },
     791              :     { SoundSubCategory::Orff, String(u"orff") },
     792              :     { SoundSubCategory::Huang, String(u"huang") },
     793              :     { SoundSubCategory::Hohner, String(u"hohner") },
     794              : 
     795              :     { SoundSubCategory::Percussive, String(u"percussive") },
     796              :     { SoundSubCategory::Piped, String(u"piped") },
     797              :     { SoundSubCategory::Rotary, String(u"rotary") },
     798              :     { SoundSubCategory::Reed, String(u"reed") },
     799              :     { SoundSubCategory::Foot, String(u"foot") },
     800              :     { SoundSubCategory::Hand, String(u"hand") },
     801              :     { SoundSubCategory::Finger, String(u"finger") },
     802              :     { SoundSubCategory::Boy, String(u"boy") },
     803              :     { SoundSubCategory::Girl, String(u"girl") },
     804              :     { SoundSubCategory::Male, String(u"male") },
     805              :     { SoundSubCategory::Female, String(u"female") },
     806              :     { SoundSubCategory::Pad, String(u"pad") },
     807              :     { SoundSubCategory::Plucked, String(u"plucked") },
     808              : 
     809              :     { SoundSubCategory::FourPiece, String(u"4_piece") },
     810              :     { SoundSubCategory::FivePiece, String(u"5_piece") },
     811              : 
     812              :     { SoundSubCategory::Temple, String(u"temple") },
     813              :     { SoundSubCategory::Military, String(u"military") },
     814              :     { SoundSubCategory::Ride, String(u"ride") },
     815              :     { SoundSubCategory::Sleigh, String(u"sleigh") },
     816              :     { SoundSubCategory::Cow, String(u"cow") },
     817              :     { SoundSubCategory::Agogo, String(u"agogo") },
     818              :     { SoundSubCategory::Marching, String(u"marching") },
     819              :     { SoundSubCategory::Show_Style, String(u"show_style") },
     820              :     { SoundSubCategory::Opera, String(u"opera") },
     821              :     { SoundSubCategory::China, String(u"china") },
     822              : 
     823              :     { SoundSubCategory::Splash, String(u"splash") },
     824              :     { SoundSubCategory::Crash, String(u"crash") },
     825              :     { SoundSubCategory::Plate, String(u"plate") },
     826              :     { SoundSubCategory::Bowl, String(u"bowl") },
     827              :     { SoundSubCategory::Frame, String(u"frame") },
     828              :     { SoundSubCategory::Slit, String(u"slit") },
     829              :     { SoundSubCategory::Log, String(u"log") },
     830              :     { SoundSubCategory::Ocean, String(u"ocean") },
     831              :     { SoundSubCategory::Field, String(u"field") },
     832              :     { SoundSubCategory::Snare, String(u"snare") },
     833              :     { SoundSubCategory::Brake, String(u"brake") },
     834              :     { SoundSubCategory::Slide, String(u"slide") },
     835              :     { SoundSubCategory::Pocket, String(u"pocket") },
     836              :     { SoundSubCategory::Garklein, String(u"garklein") },
     837              :     { SoundSubCategory::Toy, String(u"toy") },
     838              :     { SoundSubCategory::String, String(u"string") },
     839              :     { SoundSubCategory::TwelveString, String(u"twelve_string") },
     840              : 
     841              :     { SoundSubCategory::Grand, String(u"grand") },
     842              :     { SoundSubCategory::HonkyTonk, String(u"honky_tonk") },
     843              :     { SoundSubCategory::Upright, String(u"upright") },
     844              :     { SoundSubCategory::Prima, String(u"prima") },
     845              :     { SoundSubCategory::Secunda, String(u"secunda") },
     846              : 
     847              :     { SoundSubCategory::Electric, String(u"electric") },
     848              :     { SoundSubCategory::Electronic, String(u"electronic") },
     849              :     { SoundSubCategory::Acoustic, String(u"acoustic") },
     850              :     { SoundSubCategory::Fretless, String(u"fretless") },
     851              :     { SoundSubCategory::Pedal, String(u"pedal") },
     852              :     { SoundSubCategory::Steel, String(u"steel") },
     853              :     { SoundSubCategory::Metal, String(u"metal") },
     854              :     { SoundSubCategory::Iron, String(u"iron") },
     855              :     { SoundSubCategory::Brass, String(u"brass") },
     856              :     { SoundSubCategory::Tin, String(u"tin") },
     857              :     { SoundSubCategory::Nylon, String(u"nylon") },
     858              :     { SoundSubCategory::Wooden, String(u"wooden") },
     859              :     { SoundSubCategory::Sandpaper, String(u"sandpaper") },
     860              :     { SoundSubCategory::Glass, String(u"glass") },
     861              :     { SoundSubCategory::Shell, String(u"shell") },
     862              :     { SoundSubCategory::Wind, String(u"wind") },
     863              :     { SoundSubCategory::Soft, String(u"soft") },
     864              : 
     865              :     { SoundSubCategory::Treble, String(u"treble") },
     866              :     { SoundSubCategory::Diatonic, String(u"diatonic") },
     867              :     { SoundSubCategory::Chromatic, String(u"chromatic") },
     868              :     { SoundSubCategory::Octave, String(u"octave") },
     869              : 
     870              :     { SoundSubCategory::Piccolo, String(u"piccolo") },
     871              :     { SoundSubCategory::Alto, String(u"alto") },
     872              :     { SoundSubCategory::Tenor, String(u"tenor") },
     873              :     { SoundSubCategory::Baritone, String(u"baritone") },
     874              :     { SoundSubCategory::Soprano, String(u"soprano") },
     875              :     { SoundSubCategory::Mezzo_Soprano, String(u"mezzo_soprano") },
     876              :     { SoundSubCategory::Sopranino, String(u"sopranino") },
     877              :     { SoundSubCategory::Sopranissimo, String(u"sopranissimo") },
     878              :     { SoundSubCategory::Counter_Tenor, String(u"counter_tenor") },
     879              :     { SoundSubCategory::Contra, String(u"contra") },
     880              :     { SoundSubCategory::Contra_Alto, String(u"contra_alto") },
     881              :     { SoundSubCategory::Sub_Contra_Alto, String(u"sub_contra_alto") },
     882              :     { SoundSubCategory::Contra_Bass, String(u"contra_bass") },
     883              :     { SoundSubCategory::Sub_Contra_Bass, String(u"sub_contra_bass") },
     884              :     { SoundSubCategory::Double_Contra_Bass, String(u"double_contra_bass") },
     885              :     { SoundSubCategory::Bass, String(u"bass") },
     886              :     { SoundSubCategory::Bowed, String(u"bowed") },
     887              :     { SoundSubCategory::Great_Bass, String(u"great_bass") },
     888              :     { SoundSubCategory::Hyper_Bass, String(u"hyper_bass") },
     889              :     { SoundSubCategory::Melody, String(u"melody") },
     890              : 
     891              :     { SoundSubCategory::FX_Goblins, String(u"fx_goblins") },
     892              :     { SoundSubCategory::FX_Atmosphere, String(u"fx_atmosphere") },
     893              :     { SoundSubCategory::FX_Brightness, String(u"fx_brightness") },
     894              :     { SoundSubCategory::FX_Crystal, String(u"fx_crystal") },
     895              :     { SoundSubCategory::FX_Echoes, String(u"fx_echoes") },
     896              :     { SoundSubCategory::FX_Rain, String(u"fx_rain") },
     897              :     { SoundSubCategory::FX_SciFi, String(u"fx_scifi") },
     898              :     { SoundSubCategory::FX_SoundTrack, String(u"fx_soundtrack") },
     899              : 
     900              :     { SoundSubCategory::Sweep, String(u"sweep") },
     901              :     { SoundSubCategory::Warm, String(u"warm") },
     902              :     { SoundSubCategory::NewAge, String(u"new_age") },
     903              :     { SoundSubCategory::Polysynth, String(u"polysynth") },
     904              :     { SoundSubCategory::Halo, String(u"halo") },
     905              :     { SoundSubCategory::Metallic, String(u"metallic") },
     906              :     { SoundSubCategory::Choir, String(u"choir") },
     907              : 
     908              :     { SoundSubCategory::Sine_Wave, String(u"sine_wave") },
     909              :     { SoundSubCategory::Square_Wave, String(u"square_wave") },
     910              :     { SoundSubCategory::Sawtooth_Wave, String(u"sawtooth_wave") },
     911              : 
     912              :     { SoundSubCategory::Primary, String(u"primary") },
     913              :     { SoundSubCategory::Secondary, String(u"secondary") },
     914              :     { SoundSubCategory::Section, String(u"section") },
     915              : 
     916              :     { SoundSubCategory::In_C, String(u"in_c") },
     917              :     { SoundSubCategory::In_D, String(u"in_d") },
     918              :     { SoundSubCategory::In_D_flat, String(u"in_d_flat") },
     919              :     { SoundSubCategory::In_E, String(u"in_e") },
     920              :     { SoundSubCategory::In_E_flat, String(u"in_e_flat") },
     921              :     { SoundSubCategory::In_F, String(u"in_f") },
     922              :     { SoundSubCategory::In_G, String(u"in_g") },
     923              :     { SoundSubCategory::In_G_flat, String(u"in_g_flat") },
     924              :     { SoundSubCategory::In_A, String(u"in_a") },
     925              :     { SoundSubCategory::In_A_flat, String(u"in_a_flat") },
     926              :     { SoundSubCategory::In_B, String(u"in_b") },
     927              :     { SoundSubCategory::In_B_flat, String(u"in_b_flat") },
     928              : 
     929              :     { SoundSubCategory::Last, String(u"last") }
     930              : };
     931              : 
     932              : using SoundSubCategories = std::set<SoundSubCategory>;
     933              : 
     934          946 : inline const String& soundSubCategoryToString(const SoundSubCategory& subCategory)
     935              : {
     936          946 :     auto search = SUBCATEGORY_STRINGS.find(subCategory);
     937          946 :     if (search == SUBCATEGORY_STRINGS.cend()) {
     938            0 :         return SUBCATEGORY_STRINGS.at(SoundSubCategory::Unknown);
     939              :     }
     940              : 
     941          946 :     return search->second;
     942              : }
     943              : 
     944           16 : inline SoundSubCategory soundSubCategoryFromString(const String& str)
     945              : {
     946           16 :     if (str.empty()) {
     947            0 :         return SoundSubCategory::Undefined;
     948              :     }
     949              : 
     950           16 :     auto search = std::find_if(SUBCATEGORY_STRINGS.cbegin(),
     951              :                                SUBCATEGORY_STRINGS.cend(),
     952         1344 :                                [str](const auto& pair) { return pair.second == str; });
     953              : 
     954           16 :     if (search == SUBCATEGORY_STRINGS.cend()) {
     955            0 :         return SoundSubCategory::Unknown;
     956              :     }
     957              : 
     958           16 :     return search->first;
     959              : }
     960              : }
     961              : 
     962              : #endif // MUSE_MPE_SOUNDID_H
        

Generated by: LCOV version 2.0-1