Anonymous user
Sine wave: Difference between revisions
Scala contribution added.
(cross platform) |
(Scala contribution added.) |
||
Line 134:
beep(prompt_number("Enter Frequency (100..10000 recommended):",{0x25,0x7FFF}))</lang>
=={{header|Scala}}==
<lang Scala>import javax.sound.sampled.{AudioFormat, AudioSystem, SourceDataLine}
import scala.math.{Pi, sin}
object SineWave extends App {
val sampleRate = 44000
val buffer = beep(440, 5, sampleRate)
val line: SourceDataLine = AudioSystem.getSourceDataLine(format)
def format = new AudioFormat(sampleRate.toFloat, 8, 1, true, false)
def beep(frequency: Int, seconds: Int, sampleRate: Int) = {
val samples = seconds * sampleRate
val interval = sampleRate / frequency
val angle = 2.0 * Pi / interval
(0 until samples).map(i => (sin(angle * i) * 127).toByte).toArray
}
line.open()
line.start()
line.write(buffer, 0, buffer.length)
line.drain()
line.close()
}</lang>
|