Как сделать "по-промышленному", я не подскажу, а вот "наколеночную" штуку, чтобы просто послушать примерное звучание модема, наклепать за 5 минут можно (будет пищать спикером):
#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
const float delay = 1000.0 / 300.0; //300 бод/сек, V.21
const char * text = "Приветствую. Вот скажите мне знатоки, как можно конвертировать текст или речь в звук, издаваемый модемом dial-up?";
int main() {
for (int i = 0; i < strlen(text); i++) {
char x = text[i];
int mask = 1 << 7; //0b1000000
for (int j = 0; j < 8; j++, mask >>= 1) {
int freq = ((x & mask) != 0) ? 980 : 1180; //980Гц для "1", 1180Гц для "0"
Beep(freq, (int)delay); //так не совсем правильно (задержки не те), но "послушать" пойдет
}
}
return 0;
}