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

637

    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. Mitä yhteistä on sulla ja kaivatulla?

      Onko teillä samantyyppinen olemus tai luonne? Vai muistuttaako vartalonne toisiaan? Tai kasvot? Entä pukeutuminen? Onko
      Ikävä
      99
      1516
    2. Ozzy Osbourne on kuollut

      Kevyet mullat ja R.I.P. Ei soi enää Paranoid.
      Maailman menoa
      223
      1136
    3. Kerran oltiin mekin kahdestaan

      Saanko sanoa, että minua kyllä vähän huvitti jälkeenpäin? Olit kuin vapiseva jänis ketun vieressä valmis loikkimaan paik
      Ikävä
      13
      1136
    4. Oikeasti, voitais mennä kahville

      ja jutella niin kuin normi-ihmiset. Kyllä toivon sitä. En pelkää kohdata enkä istua sun kanssa samassa pöydässä. Miten o
      Ikävä
      81
      949
    5. Persut yritti estää somalinaista väittelemästä lääketieteen tohtoriksi

      Yrittivät saada hänet lähihoitajakouluun, vaikka pärjäsi hyvin koulussa. Nyt hän on yliopistossa väitellyt lääketieteen
      Maailman menoa
      240
      941
    6. Naiset, naiset

      Älkää antako painonne nousta. Naisella ylipaino ei ole hyvä.💝
      Ikävä
      141
      920
    7. Jos nainen harrastaa seksiä

      Useiden kanssa, miten se eroaa miesten mielestä siitä, jos miehellä on ollut useita s kumppaneita? Oletan että kaikki mi
      Ikävä
      179
      903
    8. Pihlaja-puulle

      Illat on mulle pahimpia. En tiiä miks se olis vaan parasta yöstä toiseen nukkua sun kanssa ja herätä sun kasvoihin. Jos
      Ikävä
      15
      819
    9. No mitä nyt

      Ollaanko vaiko eikö olla? Miehelle.
      Ikävä
      71
      757
    10. Yritin keväällä unohtaa sinut nainen

      mutta siinä kävi niin, että ikävä tuli korkoineen takaisin. Niin että mikä taikavoima sinulla on minuun, sitä joutuu mie
      Ikävä
      31
      713
    Aihe