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

627

    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. Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa

      En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod
      Ikävä
      22
      5164
    2. Huomenta ihana

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      25
      4348
    3. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      27
      2461
    4. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      34
      2244
    5. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      1998
    6. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      15
      1918
    7. En ole koskaan kokenut

      Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka
      Ikävä
      19
      1587
    8. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      12
      1521
    9. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      21
      1247
    10. Kerranki asiat oikein

      Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa
      Haapavesi
      10
      1174
    Aihe