Basic vs. C, löytyykö sound-komentoa?

tahtoo ääntä

Onko C-kielessä mitään vastaavia komentoja kuin Basicissa on Play ja Sound-komennot?

Play-komennolla voi komentaa soittamaan haluttuja nuotteja haluamallaan pituudella ja taukoja ym. voi säätää.

Sound-komennolla taas soitetaan ääniä suoraan antamalla taajuudet.

Ja molemmat noista komennoista ei siis soita mitään waveja tai midejä tai mp3:sia vaan ne komentaa emolevyä niinkuin ennen vanhaan kun ei pc:ssä ollut vielä äänikorttia. Ääni kuulosti vähän kuin joltain vanhalta kotimikrolta 80-luvulta. Ja nimenomaan haluaisin tuota soundia edelleen, sitä ei saa millään aikaan äänipiireillä/äänikorteilla tai mp3:silla vaan nimenomaan emolevyn tuottama kanttiaalto.

Mun olis tarkoitus tehdä c-kielellä sen takia että saisin tehtyä myös linuxille sellaisen ohjelman joka tuottaa tuota raakaa kanttiaaltoa.

19

601

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • C:ssä on lähinnä vain perusasiat kuten yleensäkin kielissä, mutta ääntä voi toistaa jollakin kirjastolla (esimerkiksi SDL) ja tuollaisen toiminnon voi tietysti ohjelmoida muutamalla rivillä. Kanttiaaltohan on äärimmäisen yksinkertainen, aallonpituudesta puolet on amplitudi on toisessa laidassa ja toinen puoli toisessa laidassa.

    • Toimii sittenkin

      Tarkoitukseesi sopinee Windowsin täydellisistä, 32-bittisistä (äänesi laatu siis ei tule olemaan mikään ongelma, mutta se soi vaikka pöntössä eli suoraan emolevyn kaiuttimesta) funktioista
      Beep(dwTaajuusHertsia,dwKestoMillisekuntia)

      • Tuota ei ole C-kielessä, eikä tuota kutsua ole LSB alustassa, eli ei vastaa kysyjän tarpeita millään tavalla. Tarvitsee jonkun wrapperin ja muutaman rivin funktion.

        SDL on hyvä, toimii heittämällä Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD -perheessä, OpenBSD, BSD/OS, Solaris, IRIX, QNX, AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, OS/2 ja tietysti likimain kaikissa linuxeissa.


      • tahtoo ääntä

        jossa sanoin että haluaisin ohjelmoida linuxillekin tuollaisen? Mitä minä teen pelkästään windowsille tehdyllä funktiolla kun linuxiin on tarkoitus tehdä.

        Selvennykseksi, siis että tarkoitus tuottaa nimenomaan pc speaker-ääntä, elikkä eri kestoisia ja korkuisia piippauksia (jotka siis on kanttiaaltoa).


      • Se toimii

        Tuo on hyvä: se toimii valtaosassa maailman pc-ohjelmointi- ja loppukäyttäjäympäristöissä. Vain murto-osassa eli harvinaisissa käyttöjärjestelmissä koodatessa voi muitakin täysin odottamattomia ongelmia tulla, kuten alkuperäisen kysyjän kommenteista voidaan päätellä


      • Se toimii kirjoitti:

        Tuo on hyvä: se toimii valtaosassa maailman pc-ohjelmointi- ja loppukäyttäjäympäristöissä. Vain murto-osassa eli harvinaisissa käyttöjärjestelmissä koodatessa voi muitakin täysin odottamattomia ongelmia tulla, kuten alkuperäisen kysyjän kommenteista voidaan päätellä

        Tuohan nimenomaan ei toimi valtaosassa maailman PC-ohjelmointiympäristöjä. Windowsithan on vähemmistössä tietotyössä. Siitä nimenomaan tulee ongelmia jos käyttää jotain kummallisia rajapintakutsuja mitkä ei ole virallisten standardien mukaisia tai avoimia.


      • tahtoo ääntä
        Se toimii kirjoitti:

        Tuo on hyvä: se toimii valtaosassa maailman pc-ohjelmointi- ja loppukäyttäjäympäristöissä. Vain murto-osassa eli harvinaisissa käyttöjärjestelmissä koodatessa voi muitakin täysin odottamattomia ongelmia tulla, kuten alkuperäisen kysyjän kommenteista voidaan päätellä

        "Vain murto-osassa eli harvinaisissa käyttöjärjestelmissä koodatessa voi muitakin täysin odottamattomia ongelmia tulla, kuten alkuperäisen kysyjän kommenteista voidaan päätellä"

        Mitä ihmeen ongelmia sä oikein tarkoitat? Ei mulla mitään ongelmia ole esiintynyt. En vaan ole aiemmin ohjelmoinut C-kielellä joten kaikki siinä on oikeastaan mulle uutta! C-kieltä kun voi käyttää kaikissa käyttiksissä! Ja Visual Basic taas on vain windowsille eikä VB edes mielestäni tue tuota pc speakerin ohjelmointia!

        Joten lopeta toi ihmeellinen lässyttäminen ja puhu asiaa tai vaikene!


      • Juuri näin!
        tahtoo ääntä kirjoitti:

        "Vain murto-osassa eli harvinaisissa käyttöjärjestelmissä koodatessa voi muitakin täysin odottamattomia ongelmia tulla, kuten alkuperäisen kysyjän kommenteista voidaan päätellä"

        Mitä ihmeen ongelmia sä oikein tarkoitat? Ei mulla mitään ongelmia ole esiintynyt. En vaan ole aiemmin ohjelmoinut C-kielellä joten kaikki siinä on oikeastaan mulle uutta! C-kieltä kun voi käyttää kaikissa käyttiksissä! Ja Visual Basic taas on vain windowsille eikä VB edes mielestäni tue tuota pc speakerin ohjelmointia!

        Joten lopeta toi ihmeellinen lässyttäminen ja puhu asiaa tai vaikene!

        Puhuin C: stä enkä VB: stä. Oma syysi, jos et halua tietää, vaikka kysyit, miten voit soittaa käytännössä kaikkien (joittenkin harvinaisten käyttöjärjestelmien käyttämät yhtä harvinaiset tietokoneet poislukien) maailman kaikkien henkilökohtaisten tietokoneitten kaiuttimia.


      • tahtoo ääntä
        Juuri näin! kirjoitti:

        Puhuin C: stä enkä VB: stä. Oma syysi, jos et halua tietää, vaikka kysyit, miten voit soittaa käytännössä kaikkien (joittenkin harvinaisten käyttöjärjestelmien käyttämät yhtä harvinaiset tietokoneet poislukien) maailman kaikkien henkilökohtaisten tietokoneitten kaiuttimia.

        Ja mä haluaisin tietää mitä tarkoitat harvinaisten käyttöjärjestelmien käyttämillä tietokoneilla?? Toivottavasti et tarkoita sillä linuxia, koska linux ei ole harvinainen ja nimenomaan haluan oppia koodaamaan linuxille noita sovelluksia. Jos tarkoitat, olet varmaankin joku windows-trolli. Sellaisten ei tarvi tähän ketjuun vastailla.


    • http://www.libsdl.org/

      Sillä saat ääntä käyttiksestä riippumatta. Samoin grafiikkaa, hiiren käyttöä tai mitä nyt haluatkaan. Tuo on oikeasti hieno.

      • Voi voi sentään

        Tuo on niin TYYPILLISTÄ: jos joku funktiota kysyy, niin harvinaisen käyttöjärjestelmän käyttäjä vastaa erittäin monimutkallisesti kysymyksen vierestä kikilla muilla keinoilla kuin yksinkertaisesti kysytyllä funktiolla, joka oli siis Beep(Hz,ms)


      • OpenSource
        Voi voi sentään kirjoitti:

        Tuo on niin TYYPILLISTÄ: jos joku funktiota kysyy, niin harvinaisen käyttöjärjestelmän käyttäjä vastaa erittäin monimutkallisesti kysymyksen vierestä kikilla muilla keinoilla kuin yksinkertaisesti kysytyllä funktiolla, joka oli siis Beep(Hz,ms)

        C ja C kielissä ei ole funktiota, jolla saa suoraan ääntä kuvaamallasi tavalla. Molempiin kieliin on olemassa alustasidonnaisia tapoja toteuttaa asia. Näitä "kikkailuja" tarjotaan usein kaupallisten kääntäjien oheiskirjastoina, joten voi syntyä vaikutelma, että ne ylimääräiset funktiot kuuluvat kielen standardisettiin mukaan.

        Alkuperäinen kysyjä haluaisi tehdä asian linuxilla. Tässä tuo jo aikaisemmin ehdotettu SDL on varmasti hyvä vaihtoehto, koska joka tapauksessa jotain "kikkailua" on käytettävä kun ohjelmointikieli itse ei kykene asiaa hoitamaan. SDL:n hyvä puoli on se, että kyseinen kirjasto on saatavissa monille eri käyttöjärjestelmille, joten jos ohjelmoija hoitaa asian kunnialla, on samainen koodi hyödynnettävissä myöhemmin muussakin ympäristössä kuin kysyjän alkuperäisessä kohdeympäristössä, eli linuxissa.


        Nimimerkin "voi voi sentään" ehdottama beeb-funktio on microsoftin tekemästä windows.h -tiedostosta joten se ei ensinnäkään ole osa C-kieltä eikä toisekseen toimi alkuperäisen kysyjän ympäristössä. Tyypillistä windowskäyttäjän osaamisen ja ymmärryksen puutetta kuitenkin ehdottaa sitä.


      • Voi voi sentään kirjoitti:

        Tuo on niin TYYPILLISTÄ: jos joku funktiota kysyy, niin harvinaisen käyttöjärjestelmän käyttäjä vastaa erittäin monimutkallisesti kysymyksen vierestä kikilla muilla keinoilla kuin yksinkertaisesti kysytyllä funktiolla, joka oli siis Beep(Hz,ms)

        C kielen standardissa EI OLE OLEMASSA tuollaista funktiota! Lue vaikka sieltä: http://en.wikipedia.org/wiki/C_standard_library

        C- kieli on se mitä tuohon kuuluu, ja kaikki muu ei kuulu C-kieleen. Sitä varten tarvitaan kirjastoja, ja tässä tapauksessa halutaan kirjasto mikä toimii linuxeissa ja Windowsissa ja varmaan mielellään mahdollisimman monessa muussa paikassa. Win32 API ei ole standardi, eikä missään Winen käytössä ole mitään järkeä.

        Jos funktio on Beep(Hz,ms) niin sano mikä kirjasto minun pitää linkata vaikka esimerkiksi tässä Ubuntu 8.04:ssä?


      • Ei oo vaikeeta
        OpenSource kirjoitti:

        C ja C kielissä ei ole funktiota, jolla saa suoraan ääntä kuvaamallasi tavalla. Molempiin kieliin on olemassa alustasidonnaisia tapoja toteuttaa asia. Näitä "kikkailuja" tarjotaan usein kaupallisten kääntäjien oheiskirjastoina, joten voi syntyä vaikutelma, että ne ylimääräiset funktiot kuuluvat kielen standardisettiin mukaan.

        Alkuperäinen kysyjä haluaisi tehdä asian linuxilla. Tässä tuo jo aikaisemmin ehdotettu SDL on varmasti hyvä vaihtoehto, koska joka tapauksessa jotain "kikkailua" on käytettävä kun ohjelmointikieli itse ei kykene asiaa hoitamaan. SDL:n hyvä puoli on se, että kyseinen kirjasto on saatavissa monille eri käyttöjärjestelmille, joten jos ohjelmoija hoitaa asian kunnialla, on samainen koodi hyödynnettävissä myöhemmin muussakin ympäristössä kuin kysyjän alkuperäisessä kohdeympäristössä, eli linuxissa.


        Nimimerkin "voi voi sentään" ehdottama beeb-funktio on microsoftin tekemästä windows.h -tiedostosta joten se ei ensinnäkään ole osa C-kieltä eikä toisekseen toimi alkuperäisen kysyjän ympäristössä. Tyypillistä windowskäyttäjän osaamisen ja ymmärryksen puutetta kuitenkin ehdottaa sitä.

        C: llä ohjelmoitaessa voidaan naurettavankin helposti käyttää vaikka VB: stä tuotua koodia, kovalevyltä löytynyttä dll: ää tai mitä tahansa toimivaa ratkaisua: kieli ei ole C: tä käytettäessä mikään ongelma. Käyttäkää Beep(Hz,ms), kun haluatte soittaa henkilökohtaisen tietokoneen kaiutinta haluamallanne tavalla.


      • piip-piip
        Ei oo vaikeeta kirjoitti:

        C: llä ohjelmoitaessa voidaan naurettavankin helposti käyttää vaikka VB: stä tuotua koodia, kovalevyltä löytynyttä dll: ää tai mitä tahansa toimivaa ratkaisua: kieli ei ole C: tä käytettäessä mikään ongelma. Käyttäkää Beep(Hz,ms), kun haluatte soittaa henkilökohtaisen tietokoneen kaiutinta haluamallanne tavalla.

        Oletpas hauska trolli, jatka samaan malliin.


    • piip-piip

      Vaihtoehtoja:
      1)
      Asenna paketti beep (ainakin ubuntu, debian) ja C-koodissa kutsu esim:

      system("beep -f 440 -l 1000");

      Lisää optioita beep -h

      2)
      Tee oma beep-funktio tuolta löytyvää koodia mukaillen (beep.c):
      http://johnath.com/beep/

      Huom! Valitettavaa, mutta käännöksen jälkeen pitää muuttaa binäärin oikeuksia ja tässä järjestyksessä (ainakin mulla tää toimi):
      sudo chown root mybeep
      sudo chmod 4755 mybeep

      Jonka jälkeen ./mybeep (ilman sudoa) toimii.

      3) Hmm... kernelissä on nykyään joku pcspkr-ajuri, jolla voi soittaa mitä vaan:
      http://www.oocities.com/stssppnn/pcsp.html

      • tahtoo ääntä

        Noista sun vinkeistä on hyötyä. Mä kokeilin jo tuota kakkoskohtaa ja toimii. :)


    • tällästä

      jos sul on vb to c kääntäjä nii tee vb:llä joku ääni juttu ja käännä se ja katso miten se on.

      toimiiskos.

    • FireOfFeenix

      Hauska pieni väittely. Mutta tosiasia on että ääni ja kuva ovat näissä peruskielissä aina kytketty käyttöjärjestelmän kirjastoihin kuten asia varmaan selvisi tuossa väittelyssä. Mutta otapa käyttöösi joku sellainen kirjasto, joka esiintyy kaikissa jäyttöjärjestelmissä - vaikka C kirjasto QT ja sen jälkeen tutki miten BEEP ääni syntyy. Muuten joudut define lauseilla hoitamaan äänen käytön eri käyttisten puolella. Tai tee ohjelmasi JAVALLA tai vaikka MONOLLA, joiden avulla tuo onnistuu sekä linuxissa että windowsissa, kun juttu on hoidettu pohjakirjastoissa.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Aivosyöpää sairastava Olga Temonen TV:ssä - Viimeinen Perjantai-keskusteluohjelma ulos

      Näyttelijä-yrittäjä Olga Temonen sairastaa neljännen asteen glioomaa eli aivosyöpää, jota ei ole mahdollista leikata. Hä
      Maailman menoa
      91
      2900
    2. Pelotelkaa niin paljon kuin sielu sietää.

      Mutta ei mene perille asti. Miksi Venäjä hyökkäisi Suomeen? No, tottahan se tietenkin on jos Suomi joka ei ole edes soda
      Maailman menoa
      299
      1686
    3. Mikä saa ihmisen tekemään tällaista?

      Onko se huomatuksi tulemisen tarve tosiaan niin iso tarve, että nuoruuttaan ja tietämättömyyttään pilataan loppuelämä?
      Sinkut
      246
      1557
    4. Minkä merkkisellä

      Autolla kaivattusi ajaa? Mies jota kaipaan ajaa Mersulla.
      Ikävä
      87
      1391
    5. IL - VARUSMIEHIÄ lähetetään jatkossa NATO-tehtäviin ulkomaille!

      Suomen puolustuksen uudet linjaukset: Varusmiehiä suunnitellaan Nato-tehtäviin Puolustusministeri Antti Häkkänen esittel
      Maailman menoa
      402
      1374
    6. Nyt kun Pride on ohi 3.0

      Edelliset kaksi ketjua tuli täyteen. Pidetään siis edelleen tämä asia esillä. Raamattu opettaa johdonmukaisesti, että
      Luterilaisuus
      398
      1292
    7. Kiitos nainen

      Kuitenkin. Olet sitten ajanmerkkinä. Tuskin enää sinua näen ja huomasitko, että olit siinä viimeisen kerran samassa paik
      Tunteet
      2
      1079
    8. Esko Eerikäinen tatuoi kasvoihinsa rakkaan nimen - Kärkäs kommentti "Ritvasta" lävähti somessa

      Ohhoh! Esko Eerikäinen on ottanut uuden tatuoinnin. Kyseessä ei ole mikä tahansa kuva minne tahansa, vaan Eerikäisen tat
      Suomalaiset julkkikset
      38
      1037
    9. Hyväksytkö sinä sen että päättäjämme ei rakenna rauhaa Venäjän kanssa?

      Vielä kun sota ehkäpä voitaisiin välttää rauhanponnisteluilla niin millä verukkeella voidaan sanoa että on hyvä asia kun
      Maailman menoa
      329
      874
    10. Miksi Purra-graffiti ei nyt olekkaan naisvihaa?

      "Pohtikaapa reaktiota, jos vastaava graffiti olisi tehty Sanna Marinista", kysyy Tere Sammallahti. Helsingin Suvilahden
      Maailman menoa
      257
      855
    Aihe