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

571

    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. Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita

      Pupuhuhdasta löytyi lähes sadan kilon miljoonalasti huumeita – neljä Jyväskylän Outlaws MC:n jäsentä vangittu: "Määrät p
      Jyväskylä
      60
      2454
    2. Istuva kansanedustaja epäiltynä pahoinpitelystä ja ampuma-aserikoksesta

      Seiskan tietojen mukaan Timo Vornanen on epäiltynä pahoinpitelystä ja ampuma-aserikoksesta eikä kenellekään taatusti tul
      Maailman menoa
      280
      2087
    3. Persut petti kannattajansa, totaalisesti !

      Peraujen fundamentalisteille, vaihtkaa saittia. Muille, näin sen näimme. On helppo luvata kehareille, eikä ne ymmärrä,
      Maailman menoa
      86
      2040
    4. Ei luottoa lakko maahan

      Patria menetti sovitun ksupan.
      Suomen Keskusta
      57
      1771
    5. Nähtäiskö ylihuomenna taas siellä missä viimeksikin?

      Otetaan ruokaöljyä, banaaneita ja tuorekurkkuja sinne messiin. Tehdään taas sitä meidän salakivaa.
      Ikävä
      4
      1681
    6. Sinäkö se olit...

      Vai olitko? Jostain kumman syystä katse venyi.. Ajelin sitten miten sattuu ja sanoin ääneen siinä se nyt meni😅😅... Lis
      Ikävä
      4
      1649
    7. Housuvaippojen käyttö Suomi vs Ulkomaat

      Suomessa housuvaippoja aletaan käyttämään vauvoilla heti, kun ne alkavat ryömiä. Tuntuu, että ulkomailla housuvaippoihin
      Vaipat
      1
      1554
    8. Hyvää yötä ja kauniita unia!

      Täytyy alkaa taas nukkumaan, että jaksaa taas tämän päivän haasteet. Aikainen tipu madon löytää, vai miten se ärsyttävä
      Tunteet
      5
      1377
    9. Lepakot ja lepakkopönttö

      Ajattelin tehdä lepakkopöntön. Tietääkö joku ovatko lepakot talvella lepakkopöntössä ´vai jossain muualla nukkumassa ta
      7
      1331
    10. Pullonpalautusjärjestelmä muuttuu - paluu menneisyyteen

      EU suuressa viisaudessaan on päättänyt, että pulloja pitää kierrättää. Jos oikein ymmärsin, nykyisen järjestelmänmme ti
      Maailman menoa
      109
      1238
    Aihe