pozwala mieć nam gabbana pochodzących z głośników dźwięku
#!/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
}
choć bardziej poważnie:
//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);
}
Wydaje mi się, że potrzebujesz "root privs", aby dostroić specyfikację dźwiękową głośnika komputera, przynajmniej pod X. –
Nie z tym kodem, używam go bezpośrednio z konta użytkownika. Myślę, że kontrola jest narażona przez standardowy sterownik urządzenia ioctl() interfejs – paxdiablo