Hei!
Miten saa tehtyä Windowsilla piip-ääniä PC speakerilla ILMAN consolea? Onko mahdollista ollenkaan? Vastaukseksi ei nyt käy ECHO ^G tai vastaava printf-viritelmä, kaipaisin ohjetta miten voisi ohjastella PC speakeria ilman, että näytöllä vilahtelee console-ikkunaa.
Tarve olisi yksinkertaisesti generoida jotenkin .exe, jonka ajamalla kuuluu äänimerkki, eikä mitään muuta.
Tällaista olen kokeillut:
#include // WinApi header file
void main()
{
Beep(1500,250);
}
...joka sinänsä toimii, mutta jotta tämän sai kääntymään Visual Studiossa oli pakko perustaa console application. Tuloksena yli 150 kB kokoinen .exe (kyllä nyt yksi piippaus pitäisi syntyä muutaman kB:n .exe:lläkin??) joka toimii, mutta ajettaessa vilahtaa näytöllä konsoli-ikkuna.
Miten tämä pitäisi tehdä oikealla tavalla? Ei luulisi olevan vaikea, mutta kun ei ole tuo Visual Studio meikäläiselle kovin tuttu...
Miten saa tehtyä Windowsilla piip-ääniä PC speakerilla ILMAN consolea? Onko mahdollista ollenkaan? Vastaukseksi ei nyt käy ECHO ^G tai vastaava printf-viritelmä, kaipaisin ohjetta miten voisi ohjastella PC speakeria ilman, että näytöllä vilahtelee console-ikkunaa.
Tarve olisi yksinkertaisesti generoida jotenkin .exe, jonka ajamalla kuuluu äänimerkki, eikä mitään muuta.
Tällaista olen kokeillut:
#include // WinApi header file
void main()
{
Beep(1500,250);
}
...joka sinänsä toimii, mutta jotta tämän sai kääntymään Visual Studiossa oli pakko perustaa console application. Tuloksena yli 150 kB kokoinen .exe (kyllä nyt yksi piippaus pitäisi syntyä muutaman kB:n .exe:lläkin??) joka toimii, mutta ajettaessa vilahtaa näytöllä konsoli-ikkuna.
Miten tämä pitäisi tehdä oikealla tavalla? Ei luulisi olevan vaikea, mutta kun ei ole tuo Visual Studio meikäläiselle kovin tuttu...
Vastaukset 4
Vanhimmat
Täytyyhän sillä joku isäntä olla. Kyllä pääikkunan voi joko piilottaa tai näyttää halutessaan oli se sitten konsoli tai ei. Siinähän voi olla upotettuna mediasoitin, jota ei näytetä, mutta joka kuuluu ja sitten voi vaikka mikkiin itte puhua paremmat äänet ja käyttää varastoistaan audioitten BMP: tä WAV: ia, jolta voi sanoa mitä vaan.
Älä tee konsoli-ohjelmaa, vaan Windows-ohjelma.
Ota esimerkki ohjelmasta turhat pois, tähän tyyliin:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
Beep(1500,250);
return 0;
}
Toi on hyvä idea, jos haluu soittaa yhden piipin yhdellä taajuudella. Jos haluu vaik piippolan vaarin soittaa kaikilla tarvittavilla taajuuksilla, niin laittaa vaan taajuuden jakeston uuteen piippiin perätysten niin kauan, että se on piippolan vaari siinä niin, että kaveritkin kuulee, vaikka mitään ei näy.
Kääntyi, 89088 tavua.. :-)
Onhan tuo edelleen suurehko, mutta ilmeisesti windowsilla ei pysty pienempään.. No, eipä tuo haittaa ja pääasia että toimii tarkoituksessaan. Tässä sovelluksessa ei tosiaan tarvita yhtä piippausta kummempaa eli haetaan pientä hälytysääntä joka ei ole liian häiritsevä, mutta erottuu lievästä taustahälinästä. Kokonaan toinen ja suurempi sovellus ajaa tämän exen hälytystilanteessa, se on idea.
En ole tosiaan winikkaan juurikaan mitään koodaillut, enempi sulautetulle puolelle perus C:llä ja vielä enempi assemblerilla. Sulautetussa ympäristössä tuollainen speakerin piippauskoodi vaatii ehkä parikymmentä tavua korkeintaan, joten siksi tuo 89088 kuulosti minusta isolta. Mutta tietysti jollain muutaman kB muistilla varustetulla sulautetulla ja PC:llä on eronsa.. :)
Kiitokset!