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

586

    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. Metsäkoneen kuljettaja huuteli tutkijalle

      "voisit kyllä ottaa rintaliivit pois ennen kuin tulet minulle juttelemaan, hän sanoo." https://yle.fi/a/74-20106446 On
      Suomussalmi
      704
      10030
    2. Suomi on täysin sekaisin

      Jo ties monettako päivää hirveä itku ja poru jostain helvetin nilviäisistä. https://www.is.fi/taloussanomat/art-2000010
      Maailman menoa
      412
      4390
    3. Kaikki ei vieläkään usko luontokatoon.

      Suomussalmen Hukkajoella foliohattu metsäkoneen kuljettaja tuhosi tuhansia harvinaisia jokihelmisimpukoita eli raakkuja
      Kajaani
      90
      3016
    4. Sano vain suoraan, että nyt riittää

      ettei kiinnosta. Sano, että lopeta! En ihmettelisi, jos olet saanut tarpeeksesi ja toivot minun ymmärtävän lopettaa. Eh
      Ikävä
      43
      2855
    5. Mari Rantanen asettaa sairaan lapsen edun oman uransa edelle - (tekikö Marin samaa)

      Noin toimii kunnon vastuuntuntoinen äiti, mutta siitäkin nämä mt-ongelmaiset vasemmistolaiset häntä täällä haukkuvat. "
      Maailman menoa
      230
      2668
    6. Ohhoh! Ex-pääministeri Sanna Marinin Joni-rakas paljasti ilouutisen: "Tässä kuussa..."

      Sanna Marin on ollut naimisissa Markus Räikkösen kanssa. Nyt hänen seurassaan on usein julkkishiusmuotoilija Joni Willb
      Kotimaiset julkkisjuorut
      55
      2664
    7. Mitä ajattelet aina

      Kun hän tulee näköpiiriin?
      Ikävä
      153
      1855
    8. Luokatonta toimintaa

      Tyrmistyttävää toimintaa Stora Enson korjuu yrittäjältä Hukkajoella. Täyttä piittaamattomuutta laeista ja luontoarvoista
      Suomussalmi
      71
      1710
    9. Ensimmäisestä kohtaamisesta saakka

      minulla on ollut hämmentynyt olo. Miten voit tuntua siltä, että olisin tuntenut sinut aina? Sinun kanssasi on yhtä aikaa
      Ikävä
      14
      1620
    10. Maailmankuulu homopingviini on kuollut

      Minä niin toivoin että pariskunta olisi saatu kunniavieraiksi ensi kesän Prideen. 💔 "Maailmankuulu homopingviini on k
      Lapua
      6
      1423
    Aihe