Workshop › Rhythm Lanes › Step 7 of 35

From text to notes

What we are doing

The game needs notes, not text. Every 1 in the chart becomes a note object { lane, time, hit }, where time is the frame at which it must be hit.

```js
const STEP = 15 // frames between rows of the chart (an eighth note at 120 beats a minute)
const LEAD = 120 // frames before the first row reaches the line

let notes // { lane, time, hit }

function reset() {
  notes = []
  CHART.forEach((row, i) => {
    for (let lane = 0; lane < LANES; lane++) if (row[lane] === '1') notes.push({ lane, time: LEAD + i * STEP, hit: false })
  })
}

reset()
draw()
```

What it means

Your turn

  1. Under HIT_Y, write STEP and LEAD.
  2. Under CHART, after an empty line, write let notes and reset.
  3. At the bottom, write reset() above draw().

Skills: Arrays and objects, Loops

All steps

  1. A stage for the notes
  2. The first lane
  3. Four lanes with a loop
  4. The hit line
  5. A function that draws
  6. The song as text
  7. From text to notes
  8. The clock decides where
  9. Draw the notes
  10. A clock that ticks
  11. The game loop
  12. Lanes that light up
  13. Keys for the lanes
  14. Show the keys
  15. Hit the closest note
  16. Close enough in time
  17. One press, one hit
  18. A message on the screen
  19. Say Hit
  20. Let the message go
  21. Perfect or good
  22. Keep count
  23. Missed notes
  24. Score
  25. Hits in a row
  26. The multiplier
  27. The song ends
  28. Stop the clock
  29. Accuracy
  30. The grade
  31. The results
  32. Play again
  33. Best score
  34. Lanes you can tap
  35. Build it yourself: a speed setting