LCOV - code coverage report
Current view: top level - muse/framework/global - utils.cpp Coverage Total Hit
Test: filtered_coverage.info Lines: 0.0 % 11 0
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              : #include "utils.h"
      23              : 
      24              : #include "translation.h"
      25              : 
      26              : using namespace muse;
      27              : 
      28              : [[maybe_unused]]
      29              : static constexpr const char* noteNamesWithOctaves[] = {
      30              :     // octave -1
      31              :     QT_TRANSLATE_NOOP("global/pitchName", "C-1"),
      32              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯-1"),
      33              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭-1"),
      34              :     QT_TRANSLATE_NOOP("global/pitchName", "D-1"),
      35              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯-1"),
      36              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭-1"),
      37              :     QT_TRANSLATE_NOOP("global/pitchName", "E-1"),
      38              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯-1"),
      39              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭-1"),
      40              :     QT_TRANSLATE_NOOP("global/pitchName", "F-1"),
      41              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯-1"),
      42              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭-1"),
      43              :     QT_TRANSLATE_NOOP("global/pitchName", "G-1"),
      44              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯-1"),
      45              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭-1"),
      46              :     QT_TRANSLATE_NOOP("global/pitchName", "A-1"),
      47              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯-1"),
      48              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭-1"),
      49              :     QT_TRANSLATE_NOOP("global/pitchName", "B-1"),
      50              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯-1"),
      51              :     // octave 0
      52              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭0"),
      53              :     QT_TRANSLATE_NOOP("global/pitchName", "C0"),
      54              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯0"),
      55              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭0"),
      56              :     QT_TRANSLATE_NOOP("global/pitchName", "D0"),
      57              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯0"),
      58              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭0"),
      59              :     QT_TRANSLATE_NOOP("global/pitchName", "E0"),
      60              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯0"),
      61              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭0"),
      62              :     QT_TRANSLATE_NOOP("global/pitchName", "F0"),
      63              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯0"),
      64              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭0"),
      65              :     QT_TRANSLATE_NOOP("global/pitchName", "G0"),
      66              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯0"),
      67              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭0"),
      68              :     QT_TRANSLATE_NOOP("global/pitchName", "A0"),
      69              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯0"),
      70              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭0"),
      71              :     QT_TRANSLATE_NOOP("global/pitchName", "B0"),
      72              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯0"),
      73              :     // octave 1
      74              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭1"),
      75              :     QT_TRANSLATE_NOOP("global/pitchName", "C1"),
      76              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯1"),
      77              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭1"),
      78              :     QT_TRANSLATE_NOOP("global/pitchName", "D1"),
      79              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯1"),
      80              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭1"),
      81              :     QT_TRANSLATE_NOOP("global/pitchName", "E1"),
      82              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯1"),
      83              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭1"),
      84              :     QT_TRANSLATE_NOOP("global/pitchName", "F1"),
      85              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯1"),
      86              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭1"),
      87              :     QT_TRANSLATE_NOOP("global/pitchName", "G1"),
      88              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯1"),
      89              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭1"),
      90              :     QT_TRANSLATE_NOOP("global/pitchName", "A1"),
      91              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯1"),
      92              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭1"),
      93              :     QT_TRANSLATE_NOOP("global/pitchName", "B1"),
      94              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯1"),
      95              :     // octave 2
      96              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭2"),
      97              :     QT_TRANSLATE_NOOP("global/pitchName", "C2"),
      98              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯2"),
      99              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭2"),
     100              :     QT_TRANSLATE_NOOP("global/pitchName", "D2"),
     101              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯2"),
     102              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭2"),
     103              :     QT_TRANSLATE_NOOP("global/pitchName", "E2"),
     104              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯2"),
     105              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭2"),
     106              :     QT_TRANSLATE_NOOP("global/pitchName", "F2"),
     107              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯2"),
     108              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭2"),
     109              :     QT_TRANSLATE_NOOP("global/pitchName", "G2"),
     110              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯2"),
     111              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭2"),
     112              :     QT_TRANSLATE_NOOP("global/pitchName", "A2"),
     113              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯2"),
     114              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭2"),
     115              :     QT_TRANSLATE_NOOP("global/pitchName", "B2"),
     116              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯2"),
     117              :     // octave 3
     118              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭3"),
     119              :     QT_TRANSLATE_NOOP("global/pitchName", "C3"),
     120              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯3"),
     121              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭3"),
     122              :     QT_TRANSLATE_NOOP("global/pitchName", "D3"),
     123              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯3"),
     124              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭3"),
     125              :     QT_TRANSLATE_NOOP("global/pitchName", "E3"),
     126              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯3"),
     127              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭3"),
     128              :     QT_TRANSLATE_NOOP("global/pitchName", "F3"),
     129              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯3"),
     130              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭3"),
     131              :     QT_TRANSLATE_NOOP("global/pitchName", "G3"),
     132              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯3"),
     133              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭3"),
     134              :     QT_TRANSLATE_NOOP("global/pitchName", "A3"),
     135              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯3"),
     136              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭3"),
     137              :     QT_TRANSLATE_NOOP("global/pitchName", "B3"),
     138              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯3"),
     139              :     // octave 4
     140              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭4"),
     141              :     QT_TRANSLATE_NOOP("global/pitchName", "C4"),
     142              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯4"),
     143              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭4"),
     144              :     QT_TRANSLATE_NOOP("global/pitchName", "D4"),
     145              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯4"),
     146              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭4"),
     147              :     QT_TRANSLATE_NOOP("global/pitchName", "E4"),
     148              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯4"),
     149              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭4"),
     150              :     QT_TRANSLATE_NOOP("global/pitchName", "F4"),
     151              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯4"),
     152              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭4"),
     153              :     QT_TRANSLATE_NOOP("global/pitchName", "G4"),
     154              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯4"),
     155              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭4"),
     156              :     QT_TRANSLATE_NOOP("global/pitchName", "A4"),
     157              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯4"),
     158              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭4"),
     159              :     QT_TRANSLATE_NOOP("global/pitchName", "B4"),
     160              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯4"),
     161              :     // octave 5
     162              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭5"),
     163              :     QT_TRANSLATE_NOOP("global/pitchName", "C5"),
     164              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯5"),
     165              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭5"),
     166              :     QT_TRANSLATE_NOOP("global/pitchName", "D5"),
     167              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯5"),
     168              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭5"),
     169              :     QT_TRANSLATE_NOOP("global/pitchName", "E5"),
     170              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯5"),
     171              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭5"),
     172              :     QT_TRANSLATE_NOOP("global/pitchName", "F5"),
     173              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯5"),
     174              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭5"),
     175              :     QT_TRANSLATE_NOOP("global/pitchName", "G5"),
     176              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯5"),
     177              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭5"),
     178              :     QT_TRANSLATE_NOOP("global/pitchName", "A5"),
     179              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯5"),
     180              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭5"),
     181              :     QT_TRANSLATE_NOOP("global/pitchName", "B5"),
     182              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯5"),
     183              :     // octave 6
     184              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭6"),
     185              :     QT_TRANSLATE_NOOP("global/pitchName", "C6"),
     186              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯6"),
     187              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭6"),
     188              :     QT_TRANSLATE_NOOP("global/pitchName", "D6"),
     189              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯6"),
     190              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭6"),
     191              :     QT_TRANSLATE_NOOP("global/pitchName", "E6"),
     192              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯6"),
     193              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭6"),
     194              :     QT_TRANSLATE_NOOP("global/pitchName", "F6"),
     195              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯6"),
     196              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭6"),
     197              :     QT_TRANSLATE_NOOP("global/pitchName", "G6"),
     198              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯6"),
     199              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭6"),
     200              :     QT_TRANSLATE_NOOP("global/pitchName", "A6"),
     201              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯6"),
     202              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭6"),
     203              :     QT_TRANSLATE_NOOP("global/pitchName", "B6"),
     204              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯6"),
     205              :     // octave 7
     206              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭7"),
     207              :     QT_TRANSLATE_NOOP("global/pitchName", "C7"),
     208              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯7"),
     209              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭7"),
     210              :     QT_TRANSLATE_NOOP("global/pitchName", "D7"),
     211              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯7"),
     212              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭7"),
     213              :     QT_TRANSLATE_NOOP("global/pitchName", "E7"),
     214              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯7"),
     215              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭7"),
     216              :     QT_TRANSLATE_NOOP("global/pitchName", "F7"),
     217              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯7"),
     218              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭7"),
     219              :     QT_TRANSLATE_NOOP("global/pitchName", "G7"),
     220              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯7"),
     221              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭7"),
     222              :     QT_TRANSLATE_NOOP("global/pitchName", "A7"),
     223              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯7"),
     224              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭7"),
     225              :     QT_TRANSLATE_NOOP("global/pitchName", "B7"),
     226              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯7"),
     227              :     // octave 8
     228              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭8"),
     229              :     QT_TRANSLATE_NOOP("global/pitchName", "C8"),
     230              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯8"),
     231              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭8"),
     232              :     QT_TRANSLATE_NOOP("global/pitchName", "D8"),
     233              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯8"),
     234              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭8"),
     235              :     QT_TRANSLATE_NOOP("global/pitchName", "E8"),
     236              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯8"),
     237              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭8"),
     238              :     QT_TRANSLATE_NOOP("global/pitchName", "F8"),
     239              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯8"),
     240              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭8"),
     241              :     QT_TRANSLATE_NOOP("global/pitchName", "G8"),
     242              :     QT_TRANSLATE_NOOP("global/pitchName", "G♯8"),
     243              :     QT_TRANSLATE_NOOP("global/pitchName", "A♭8"),
     244              :     QT_TRANSLATE_NOOP("global/pitchName", "A8"),
     245              :     QT_TRANSLATE_NOOP("global/pitchName", "A♯8"),
     246              :     QT_TRANSLATE_NOOP("global/pitchName", "B♭8"),
     247              :     QT_TRANSLATE_NOOP("global/pitchName", "B8"),
     248              :     QT_TRANSLATE_NOOP("global/pitchName", "B♯8"),
     249              :     // octave 9
     250              :     QT_TRANSLATE_NOOP("global/pitchName", "C♭9"),
     251              :     QT_TRANSLATE_NOOP("global/pitchName", "C9"),
     252              :     QT_TRANSLATE_NOOP("global/pitchName", "C♯9"),
     253              :     QT_TRANSLATE_NOOP("global/pitchName", "D♭9"),
     254              :     QT_TRANSLATE_NOOP("global/pitchName", "D9"),
     255              :     QT_TRANSLATE_NOOP("global/pitchName", "D♯9"),
     256              :     QT_TRANSLATE_NOOP("global/pitchName", "E♭9"),
     257              :     QT_TRANSLATE_NOOP("global/pitchName", "E9"),
     258              :     QT_TRANSLATE_NOOP("global/pitchName", "E♯9"),
     259              :     QT_TRANSLATE_NOOP("global/pitchName", "F♭9"),
     260              :     QT_TRANSLATE_NOOP("global/pitchName", "F9"),
     261              :     QT_TRANSLATE_NOOP("global/pitchName", "F♯9"),
     262              :     QT_TRANSLATE_NOOP("global/pitchName", "G♭9"),
     263              :     QT_TRANSLATE_NOOP("global/pitchName", "G9"),
     264              : };
     265              : 
     266              : static constexpr const char* sharpNotes[] = {
     267              :     QT_TRANSLATE_NOOP("global/noteName", "C"),
     268              :     QT_TRANSLATE_NOOP("global/noteName", "C♯"),
     269              :     QT_TRANSLATE_NOOP("global/noteName", "D"),
     270              :     QT_TRANSLATE_NOOP("global/noteName", "D♯"),
     271              :     QT_TRANSLATE_NOOP("global/noteName", "E"),
     272              :     QT_TRANSLATE_NOOP("global/noteName", "F"),
     273              :     QT_TRANSLATE_NOOP("global/noteName", "F♯"),
     274              :     QT_TRANSLATE_NOOP("global/noteName", "G"),
     275              :     QT_TRANSLATE_NOOP("global/noteName", "G♯"),
     276              :     QT_TRANSLATE_NOOP("global/noteName", "A"),
     277              :     QT_TRANSLATE_NOOP("global/noteName", "A♯"),
     278              :     QT_TRANSLATE_NOOP("global/noteName", "B")
     279              : };
     280              : 
     281              : static constexpr const char* flatNotes[] = {
     282              :     QT_TRANSLATE_NOOP("global/noteName", "C"),
     283              :     QT_TRANSLATE_NOOP("global/noteName", "D♭"),
     284              :     QT_TRANSLATE_NOOP("global/noteName", "D"),
     285              :     QT_TRANSLATE_NOOP("global/noteName", "E♭"),
     286              :     QT_TRANSLATE_NOOP("global/noteName", "E"),
     287              :     QT_TRANSLATE_NOOP("global/noteName", "F"),
     288              :     QT_TRANSLATE_NOOP("global/noteName", "G♭"),
     289              :     QT_TRANSLATE_NOOP("global/noteName", "G"),
     290              :     QT_TRANSLATE_NOOP("global/noteName", "A♭"),
     291              :     QT_TRANSLATE_NOOP("global/noteName", "A"),
     292              :     QT_TRANSLATE_NOOP("global/noteName", "B♭"),
     293              :     QT_TRANSLATE_NOOP("global/noteName", "B")
     294              : };
     295              : 
     296            0 : std::string muse::pitchToString(int pitch, bool addoctave, bool useFlats /* = false */)
     297              : {
     298            0 :     if (pitch < 0 || pitch > 127) {
     299            0 :         return std::string();
     300              :     }
     301              : 
     302            0 :     auto source = useFlats ? flatNotes : sharpNotes;
     303              : 
     304            0 :     int i = pitch % 12;
     305            0 :     if (addoctave) {
     306            0 :         int octave = (pitch / 12) - 1;
     307            0 :         std::string key = std::string(source[i]) + std::to_string(octave);
     308            0 :         return muse::trc("global/pitchName", key.c_str());
     309            0 :     }
     310            0 :     return muse::trc("global/noteName", source[i]);
     311              : }
        

Generated by: LCOV version 2.0-1