Musical keyboard component written in React.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

15 lines
467 B

  1. type GroupKeysIntoOctaves = (dummyKeys: number[]) => Record<number, number[]>
  2. const groupKeysIntoOctaves: GroupKeysIntoOctaves = (dummyKeys) =>
  3. dummyKeys
  4. .map((k) => [k, Math.floor(k / 12)])
  5. .reduce<Record<number, number[]>>(
  6. (theOctaves, [key, keyOctave]) => ({
  7. ...theOctaves,
  8. [keyOctave]: Array.isArray(theOctaves[keyOctave]) ? [...theOctaves[keyOctave], key] : [key],
  9. }),
  10. {},
  11. )
  12. export default groupKeysIntoOctaves