To start, I suggest a slight modification in the function to avoid indeterminate values:
zwave[n_, x_] := Cos[N@Im[ZetaZero[n]] Log[x + $MachineEpsilon]]
There are two main ways to turn a function into an audio signal:
use the function to compute the samples directly:
AudioNormalize@AudioGenerator[Sum[zwave[n, #], {n, 1, 100}] &]
AudioGenerator[zwave[100, #] &]
This of course produces something useful only if the frequencies contained in the signal are high enough to be audible (you can check once the generation is done you can check with Periodogram
and Spectrogram
).
use the function to control the frequency of an oscillator:
AudioGenerator[{"Sin", 400 + 200*zwave[1, #] &}]
AudioGenerator[{"Sin", 400 + 200*Sum[zwave[n, #], {n, 1, 60}] &}, 10]
This usually produces better results for more slowly varying functions.