Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  14 1207
hei,
lurer på om det går an å lage et c++ program som spiller av en lyd
(feks *wav) i den interne høytaleren.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Den interne høyttaleren fungerer såvidt meg bekjent ikke helt på den måten (ikke helt sikker,) men...
http://lmgtfy.com/?q=C%2B%2B+Play+.wav+on+PC+speaker
Trådstarter
18 0
ja, jeg kan dette, men jeg lurer på om det går ann å spille av en sang el. som er lagret på datamaskinen (ikke bare en pipelyd) når jeg starter programmet.
Sist endret av V1K3N; 28. april 2009 kl. 18:37.

Kode

#include <windows.h>

int main () {

   // play and loop background music
   PlaySound ("Back.wav",0,SND_FILENAME|SND_LOOP|SND_ASYNC);

   while (1) {
// whatever...
   }
  return 0;
}
Utestet kode, men du kan vel prøve å se om den funker.
NOOOOOOOOOOOOOOOOOO-
robhol's Avatar
Intern høyttaler, altså ikke vanlig lydavspilling. Og jeg tror helt ærlig det går ganske dårlig.
Trådstarter
18 0
funka ikke..
var noe feil med Playsound(..)
error massage: "undefned reference to 'PlaySoundA@12"
Sist endret av V1K3N; 28. april 2009 kl. 19:11.
Jeg vet vi drev med dette på skolen, og du må bare spille lyd og stoppe i en bestemt sekvens, for å 'skape' musikk eller imitere musikk.

Dette er vel lettest i assembly. Du kan skrive assembly sammen med C, ved syntax:

#asm {
//My assembly code
}

eller
_asm {
//Assembly code
}
:lol: Slutt å post googlingen deres. Man spiller ikke .wav filer i internhøytaleren :-P

Stratops listet jo fasiten. beep() er tingen

Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av Wierd1 Vis innlegg
:lol: Slutt å post googlingen deres. Man spiller ikke .wav filer i internhøytaleren :-P

Stratops listet jo fasiten. beep() er tingen

Vis hele sitatet...
Slutt å poste når du ikkje har peiling ;P

http://en.wikipedia.org/wiki/PC_spea...dth_modulation - ja, det er mulig. Du vil ikkje få god lyd akkurat...
Sist endret av vidarlo; 28. april 2009 kl. 22:48.
Sitat av slashdot Vis innlegg
Slutt å poste når du ikkje har peiling.

http://en.wikipedia.org/wiki/PC_spea...dth_modulation - ja, det er mulig. Du vil ikkje få god lyd akkurat...
Vis hele sitatet...
neivel, så har jeg ikke peiling. Er ikke ute etter en pissekonkuranse.

Jeg skriver at man ikke gjør dette, ikke at det er umulig. .wav-filer spilles i all hovedsak av/ut via vanlig lyd-interface, ikke internhøytaleren. Det var poenget mitt, ikke at det er umulig å få til.

Så vidt jeg vet er Internhøytaleren primært brukt for en alarm eller en hendelse, der man ønsker brukers oppmerksomhet via lyd. beep() eller avarter er da tingen.

Hvorfor linken til puls-bredde modulasjon?
Sist endret av Wierd1; 28. april 2009 kl. 22:35. Grunn: typo
Her har du noen gamle greier om temaet: http://fly.cc.fer.hr/GDM/articles/sndmus/index.html (Ikke C++ though)
Trådstarter
18 0
okei får leke meg litt og se hva jeg får til..
Sitat av Wierd1 Vis innlegg
Hvorfor linken til puls-bredde modulasjon?
Vis hele sitatet...
Fordi PC-speakeren har et API som kun kan styre frekvensen (puls-bredden), men ikke spenningen som sendes til høyttaleren. I teorien betyr dette at den kun kan spille pipetoner i 1-bits firkantpuls.

Men i praksis kan man bruke puls-bredde modulasjon for å "emulere" ekte lydbølger. Det er måten man må bruke hvis man skal spille av samplet lyddata via en PC-speaker. Dette er ikke noe jeg anbefaler som et start-prosjekt for C++ akkurat, men hvis man skjønner de linkene som er postet her (både den fra the freak og den fra slashdot) bør man klare det fint.

Slightly off-topic: det var samme teknikk som ble brukt for å spille av samplet lyd på Commodore 64, så de som har hørt det vet sånn cirka hvilken lydkvalitet de kan forvente.
Sist endret av fuzzy76; 1. mai 2009 kl. 15:20.