Ваша проблема вызвана повторным использованием имен / идентификаторов,
Вывод после разматывания цикла выглядит следующим образом:
<div>
1
<img :src="keys[0]" alt="" usemap="#piano-map">
<map name="piano-map" :key="keys[0].id">
<area target="" alt="k" title="k" @click="piano.note('c'+ parseInt(1)).play()" coords="2,0,81,267" shape="rect">
</map>
</div>
<div>
2
<img :src="keys[1]" alt="" usemap="#piano-map">
<map name="piano-map" :key="keys[1].id">
<area target="" alt="k" title="k" @click="piano.note('c'+ parseInt(2)).play()" coords="2,0,81,267" shape="rect">
</map>
</div>
Как вы можете видеть на приведенном выше выводеВ вашем коде есть несколько элементов с одним и тем же именем.
Причиной вашей ошибки при нажатии на любое из ваших изображений становится активация элемента first с таким именем, поэтому он всегда вызывает примечание.1.
Чтобы решить эту проблему, присвойте каждому элементу имя, основанное на их индексе:
<div v-for="(k, i) in keys" :key="k.id">
{{i+1}}
<img :src="k" alt="" :usemap="'#piano-map-' + i">
<map :name="'#piano-map-' + i" :key="k.id">
<area target="" alt="k" title="k" @click="piano.note('c'+ parseInt(i+1)).play()" coords="2,0,81,267" shape="rect">
</map>
</div>
Поскольку каждое изображение, активирующее первую запись, выглядит так, будто Vue игнорирует ваш индекс, вы, вероятно, подумали, чтовместо актуальной проблемы.