import React from 'react'
const KEY_NAMES = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
function transposeNote(note, semitones) {
if (!note || semitones === 0) return note
const idx = KEY_NAMES.indexOf(note)
if (idx === -1) return note
return KEY_NAMES[(idx + semitones + 120) % 12]
}
function ScalesDisplay({ scales, semitones = 0 }) {
if (!scales || scales.length === 0) return null
return (
Suggested Scales
{scales.map((scale, i) => {
const parts = scale.name.split(' ')
const scaleRoot = parts[0]
const scaleSuffix = parts.slice(1).join(' ')
const transposedRoot = transposeNote(scaleRoot, semitones)
const transposedNotes = scale.notes.map(n => transposeNote(n, semitones))
return (
{/* Header row */}
{transposedRoot} {scaleSuffix}
{scale.guitar_friendly && (
guitar
)}
{i === 0 && (
Best fit
)}
{/* Note chips */}
{transposedNotes.map((note, j) => (
{note}
))}
)
})}
)
}
export default React.memo(ScalesDisplay)