Use a real list comprehension:
waves = [(frequency, amplitude) for _ in range(wave_count)]
or just multiply the list as you did:
waves = [(frequency, amplitude)] * wave_count
The latter is safe in this case because tuples are not mutable.
The first option creates a new tuple for each iteration of the loop, the second option expands the list using wave_count
references to the same tuple. If you used a mutable instead (say, a list or dict), then that could lead to unexpected results, but it does use less memory.