mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-12 11:49:28 +00:00
37 lines
1.3 KiB
JavaScript
37 lines
1.3 KiB
JavaScript
/*
|
|
* fee[dB]ack v0.3.0 — Venue instrument POV resolver.
|
|
*
|
|
* Maps arrangement / instrument labels to venue background POVs.
|
|
* Vocals/karaoke routing uses the active arrangement name only — not
|
|
* lyrics overlay visibility during guitar practice.
|
|
*/
|
|
(function (root) {
|
|
'use strict';
|
|
|
|
const POV_IDS = Object.freeze(['guitar', 'bass', 'drums', 'piano', 'vocals']);
|
|
|
|
function resolveVenueInstrumentPov(input) {
|
|
const s = String(input == null ? '' : input).trim().toLowerCase();
|
|
if (!s) return 'guitar';
|
|
if (/\b(drums?)\b/.test(s)) return 'drums';
|
|
if (/\b(bass)\b/.test(s)) return 'bass';
|
|
if (/\b(piano|keys|keyboard)\b/.test(s)) return 'piano';
|
|
if (/\b(karaoke|vocal|vocals|lyric|lyrics|sing|singing)\b/.test(s)) return 'vocals';
|
|
if (/\b(lead|rhythm|guitar|combo)\b/.test(s)) return 'guitar';
|
|
return 'guitar';
|
|
}
|
|
|
|
function isVocalsKaraokeArrangement(input) {
|
|
return resolveVenueInstrumentPov(input) === 'vocals';
|
|
}
|
|
|
|
const api = {
|
|
POV_IDS,
|
|
resolveVenueInstrumentPov,
|
|
isVocalsKaraokeArrangement,
|
|
};
|
|
|
|
if (root) root.v3VenueInstrumentPov = api;
|
|
if (typeof module !== 'undefined' && module.exports) module.exports = api;
|
|
}(typeof window !== 'undefined' ? window : (typeof globalThis !== 'undefined' ? globalThis : null)));
|