face sunete (beep) cu c++ (Programare, C++)

user319854 a intrebat.

Cum se face sunetul de bip hardware cu c++?

Mulțumesc

Comentarii

  • toot este un fișier C cross-platform C care încearcă să apeleze mai multe generatoare de sunet pentru a produce semnalul sonor. github.com/vareille/toot –  > Por renataflow.
12 răspunsuri
usr-local-ΕΨΗΕΛΩΝ
cout << 'a';

Sursa

🙂

Comentarii

  • Acest lucru provine din difuzoare. Cum pot face ca placa de bază internă să emită un bip în loc de difuzor? –  > Por Zeta.Investigator.
  • Asta depinde de sistemul de operare. Vechiul MS-DOS a declanșat un sunet al plăcii de bază cu asta. Dacă folosești un sistem de operare foarte recent mă aștept ca nucleul să declanșeze un semnal audio de la difuzor, în loc să folosească hardware – -.  > Por usr-local-ΕΨΗΕΛΩΝ.
  • acest lucru nu funcționează am încercat volumul complet, versiunea mea de g++ este g++ (Ubuntu 9.3.0-10ubuntu2) 9.3.0 –  > Por Shoyeb Sheikh.
RobertPitt

Dacă utilizați sistemul de operare Windows, atunci există o funcție numită Beep()

#include <iostream> 
#include <windows.h> // WinApi header 

using namespace std;

int main() 
{ 
    Beep(523,500); // 523 hertz (C5) for 500 milliseconds     
    cin.get(); // wait 
    return 0; 
}

Sursă: http://www.daniweb.com/forums/thread15252.html

Pentru sistemele de operare bazate pe Linux există:

echo -e "07" >/dev/tty10

Și dacă nu doriți să folosiți Beep() în Windows puteți face:

echo "^G"

Sursa: Sursa: http://www.frank-buss.de/beep/index.html

Comentarii

  • Acesta nu este un C++ standard. Nici măcar nu știm dacă folosește Windows. –  > Por Ben Voigt.
  • Sistemul de operare nu a fost menționat niciodată în întrebare sau în etichete –  > Por Samuel.
  • Nu sunt un programator C++, C# în principal, dar am crezut că această resursă ar fi fost utilă, Nu cred că merită un vot negativ, dar asta e prerogativa ta –  > Por RobertPitt.
  • +1 Acesta este un răspuns bun având în vedere că întrebarea „nici măcar nu este greșită”. –  > Por I. J. Kennedy.
  • Pentru ultima, aceasta NU funcționează atunci când introduc ^ și G. Funcționează doar atunci când apăsați Ctrl+G. Chiar dacă șirurile arată la fel atunci când sunt introduse, ele sunt diferite și sunt, de asemenea, tipărite diferit. –  > Por Felix Dombek.
asveikau

Există câteva rutine specifice sistemului de operare pentru semnalul sonor.

  • Pe un sistem de operare de tip Unix, încercați funcția (n)curses beep(). Aceasta este probabil să fie mai portabilă decât scrierea 'a' așa cum au sugerat alții, deși pentru majoritatea emulatoarelor de terminale probabil că va funcționa.

  • În unele *BSD există o funcție dispozitiv de difuzoare pentru PC. Citind sursa driverului, se poate obține SPKRTONE ioctl pare să corespundă interfeței hardware brute, dar se pare că există și un limbaj de nivel înalt construit în jurul write()-pentru a trimite șiruri de caractere către driver, descris în pagina de manual.

  • Se pare că Linux are un driver similar (a se vedea acest articol de exemplu; există, de asemenea, un cod de exemplu pe această pagină dacă derulați puțin în jos).

  • În Windows există o funcție numită Beep().

Comentarii

  • ‘a’ este definită de standardul C++ și este extrem de portabilă. Desigur, dacă folosiți un software de terminal stricat, toate pariurile sunt anulate, dar subsistemul de consolă Win32 și majoritatea clonelor xterm procesează ‘a’ în mod corespunzător. –  > Por Ben Voigt.
  • @Ben Voigt: Corectați-mă dacă greșesc, dar standardul C++ specifică doar că ‘a’ va reprezenta un caracter ASCII BEL; dar nu specifică niciodată care ar trebui să fie comportamentul programelor atunci când trimit un astfel de caracter la stdout. Partea în care ASCII BEL == ‘a’ este extrem de portabilă, așa cum ați spus, dar partea cu semnalul sonor este un comportament total nedefinit. –  > Por Lie Ryan.
  • @Ben: în ceea ce mă privește, un software de terminal este stricat dacă nu are o modalitate de a opri soneria. –  > Por Steve Jessop.
  • @Steve: Sunt de acord, dar nu citesc această întrebare este „Cum faci un semnal sonor atunci când utilizatorii au oprit în mod explicit sunetele?”. –  > Por Ben Voigt.
Namit Sinha

alternativ, în c sau c++ după includerea stdio.h

char d=(char)(7);
printf("%c
",d);

(char)7 se numește caracterul clopot.

Benjamin Lindley
std::cout << '7';

Ani

Iată o modalitate:

cout << 'a';

De la Constante de caractere C++:

Alertă: a

Krys
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;

int main()
{

    Beep(1568, 200);
    Beep(1568, 200);
    Beep(1568, 200);
    Beep(1245, 1000);
    Beep(1397, 200);
    Beep(1397, 200);
    Beep(1397, 200);
    Beep(1175, 1000);

cout<<endl;
_getch()

return 0
}

Martin Beckett

Cea mai ușoară cale este probabil doar să imprimați un clopot ascii ^G

Comentarii

  • stdout, , poate? Nu există nici un obiect numit out în namespace std. –  > Por Ben Voigt.
ndrewxie

Ați putea utiliza compilarea condiționată:

#ifdef WINDOWS
#include <Windows.h>
void beep() {
  Beep(440, 1000);
}
#elif LINUX
#include <stdio.h>
void beep() {
  system("echo -e "07" >/dev/tty10");
}
#else
#include <stdio.h>
void beep() {
  cout << "a" << flush;
}
#endif

Comentarii

  • Este mai bine să lăsați partea LINUX să fie flexibilă și cu frecvența și timpul, folosind ‘system(„beep -f 5000 -l 50 -r 2”) ‘ ( vezi wiki.archlinux.org/index.php/PC_speaker ) –  > Por Vit.
ubiquibacon

Caracterul de clopot ASCII ar putea fi ceea ce căutați. Numărul 7 din acest tabel.

baraje
cout << "a";

În Xcode, După compilare, trebuie să rulați manual executabilul pentru a auzi semnalul sonor.

Rafael

Am încercat majoritatea lucrurilor de aici, niciunul nu a funcționat pe VM-ul meu Ubuntu.

Iată un hack rapid (creditele merg aici):

#include <iostream>
int main() {
  system("(speaker-test -t sine -f 1000)& pid=$!; sleep 1.0s; kill -9 $pid");
}

Acesta va folosi practic sistemul speaker-test pentru a produce sunetul. Acest lucru nu se va termina rapid, totuși, așa că comanda îl rulează în fundal (comanda & parte), apoi îi capturează id-ul de proces (partea pid=$1 parte), doarme pentru o anumită perioadă de timp pe care o puteți schimba (partea sleep 1.0s parte) și apoi omoară procesul respectiv (partea kill -9 $pid parte).

sine este sunetul produs. Îl puteți schimba în pink sau la un wav fișier.

Tags: