nos permite tener cierta gabba procedente de los altavoces de audio
#!/usr/bin/ruby
$audio = File.open("/dev/audio", "w+")
def snd char
$audio.print char.chr
end
def evil z
0.step(100, 4.0/z) { |i|
(i/z).to_i.times { snd 0 }
(i/z).to_i.times { snd 255 }
}
end
loop {
evil 1
evil 1
evil 1
evil 4
}
De forma más seria:
//g++ -o pa pa.cpp -lportaudio
#include <portaudio.h>
#include <cmath>
int callback(void*, void* outputBuffer, unsigned long framesPerBuffer, PaTimestamp, void*) {
float *out = (float*)outputBuffer;
static float phase;
for(int i = 0; i < framesPerBuffer; ++i) {
out[i] = std::sin(phase);
phase += 0.1f;
}
return 0;
}
int main() {
Pa_Initialize();
PaStream* stream;
Pa_OpenDefaultStream(&stream, 0, 1, paFloat32, 44100, 256, 1, callback, NULL);
Pa_StartStream(stream);
Pa_Sleep(4000);
}
Creo que necesita privilegios de root para sintonizar las especificaciones de pitido del altavoz de PC, al menos en X. –
No con este código, lo uso directamente desde una cuenta de usuario. Creo que el control está expuesto por el controlador de dispositivo estándar ioctl() interfaz. – paxdiablo