Funktionstest von Audio: Mikrofon und Lautsprecher
Beep-Signale
Das folgende Beispiel lässt den Brick einmalig zwei kurze Beeps abspielen.
import lejos.hardware.Sound;
public class EV3BeepTest {
public static void main(String[] args) {
Sound.twoBeeps();
}
}
import lejos.nxt.Sound;
public class BeepTest {
public static void main(String[] args) {
Sound.twoBeeps();
}
}
Eigene Audiodatei abspielen - EV3
Abgesehen von dem Roboterprogramm, welches die WAV-Datei (hier: Beispiel.wav
) abspielt, muss man sich seperat um die WAV-Datei kümmern. Die Einschränkungen für die WAV-Datei sind nicht mehr so stark wie beim NXT, dennoch sind folgende Aspekte zu beachten:
- Format: Die WAV-Datei darf eine Abtastrate zwischen 8kHz und 48kHz verwenden. Je höher die Abtastrate, desto originalgetreuer werden insbesondere die hohen Töne wiedergegeben. Die Bittiefe darf 8- oder 16-bit betragen, je größer die Bittiefe, desto detailreicher (höher aufgelöst) wird jedes Sample gespeichert. Die Audiospur darf nicht stereo, sondern muss mono sein.
- Größe: hohe Abtastrate, große Bittiefe und lange Spieldauer einer WAV-Datei sind die Faktoren und gleichzeitig Stellschrauben für den Speicherverbrauch (die Dateigröße). Eine zu große Datei (z.B. ein ganzes Lied voll aufgelöst) kann dazu führen, dass der EV3-Brick nicht mehr reagiert und das Roboterprogramm auch nicht das gewünschte Verhalten äußert. Ein Test mit 19MB schluf fehl, ein Test mit 1.4 MB (48kHz, 16-bit, 16 Sekunden) war erfolgreich. Im Zweifel also einfach mit einem vereinfachten Beipiel testen.
- Upload: Die WAV-Datei muss zusätzlich zum Roboterprogramm auf den EV3-Brick geladen werden.
Entsprechend konvertieren kann man z.B. mit dem Programm Audacity. Der Transport auf den Brick erfolgt am einfachsten über die Shell (Windows->Eingabeaufforderung) jxjupload -u [dateiname]
oder über das Eclipse-Plugin:
import lejos.hardware.Sound;
import java.io.File;
public class EV3WavTest {
public static void main(String[] args) {
Sound.playSample(new File("Beispiel2.wav"),100);
}
}
Eigene Audiodatei abspielen - NXT
Abgesehen von dem Programm, welches die WAV-Datei (hier: Beispiel.wav
) abspielt, muss man sich seperat um die WAV-Datei kümmern. Die Datei muss dafür als 8-Bit Monospur vorliegen und als PWM/PCM-WAV gespeichert sein. Entsprechend konvertieren kann man z.B. mit dem Programm Audacity. Der Transport auf den Brick erfolgt am einfachsten über die Shell (Windows->Eingabeaufforderung):
- jxjupload -u [dateiname]
import lejos.nxt.Sound;
import java.io.File;
public class WavTest {
public static void main(String[] args) {
Sound.playSample(new File("Beispiel.wav"),100);
}
}
Lautstärke messen
Das nachfolgende Programm Soundtest.java
misst mithilfe des Sound-Sensors die Umgebungslautstärke und zeigt den Prozentwert auf dem Brick-Display an. Zur besseren Lesbarkeit auf dem Display ist eine Verzögerung von 200ms zwischen den Messungen eingebaut.
import lejos.nxt.*;
public class SoundTest
{
public static void main (String args[]) throws Exception
{
SoundSensor sound = new SoundSensor(SensorPort.S1);
while(true)
{
LCD.clear();
int val =sound.readValue();
LCD.drawInt(val, 1, 1, 0);
Thread.sleep(200);
}
}
}
Quellen
- [1]: Upload der WAV-Datei mit Eclipse Plugin - Urheber: mks - Lizenz: inf-schule.de