Browse Source

Microphone example;

bjorn 7 years ago
parent
commit
5dc5efc54d
2 changed files with 35 additions and 1 deletions
  1. 33 0
      examples/Microphone/main.lua
  2. 2 1
      examples/init.lua

+ 33 - 0
examples/Microphone/main.lua

@@ -0,0 +1,33 @@
+-- Measures amplitude of microphone over time and uses it to scale a circle
+
+amplitude = 0
+
+function lovr.load()
+  name = lovr.audio.getMicrophoneNames()[1]
+  assert(name, 'No microphone found!')
+  microphone = lovr.audio.newMicrophone(name)
+  microphone:startRecording()
+  print('Recording from ' .. name)
+end
+
+function lovr.update(dt)
+  if microphone:isRecording() then
+    local soundData = microphone:getData()
+
+    if soundData then
+      local samples = soundData:getSampleCount()
+      local totalAmplitude = 0
+
+      for i = 0, samples - 1 do
+        totalAmplitude = totalAmplitude + math.abs(soundData:getSample(i))
+      end
+
+      amplitude = amplitude + (totalAmplitude / samples - amplitude) * (1 - .05 ^ dt)
+    end
+  end
+end
+
+function lovr.draw()
+  lovr.graphics.setColor(1, 1, 1, .5)
+  lovr.graphics.circle('line', 0, 1.7, -1, amplitude * 20 + .01)
+end

+ 2 - 1
examples/init.lua

@@ -7,5 +7,6 @@ return {
   'Physics',
   'Physics',
   'Cubemap',
   'Cubemap',
   'Primitives',
   'Primitives',
-  'Lighting'
+  'Lighting',
+  'Microphone'
 }
 }