sound programm hilfe?



  • ich bastel gerade an einem programm das beim drücken einer taste ein soundfile ab spielt.

    - wie spiele ich einen sound auf tastendruck ab? (auch wenn das program nicht das aktive fenster ist)
    - wie kann ich zwischen "Aufnahme/Mic" und "Aufnahme/Stereo Mixer" hin und her schalten?
    also ähnlich wie das stumm schalten des sound.
    - wie kann ich prüfen ob im Programm TeamSpeak die PTT funktion an geschalten ist?
    - wie kann ich die im TeamSpeak für PTT vergebene taste abfragen und betätigen?

    wenn ich das alles weiß, dann kann ich mein programm fertig machen.



  • hat keiner je sowas versucht oder sich dafür interessiert?
    kann ich fast nicht glauben!


  • Mod



  • ja ich ha mich halb blöd gesucht nch winapi, directsound usw.
    danke die links helfen weiter.



  • so da bin ich wieder.
    hab viel gesucht und genervt 3 monate pause vom programmieren gemacht weil es für meine oben beschriebenen fragen nichts brauchbares gibt.

    darum grab ich meinen beitrag nochmal aus 😉

    ----------------------------------------------------

    also ein wav file kann ich laut diversen wagen aussagen mit der funktion playsound() abspielen.
    die genaue syntax der funktion finde ich beim besten willen nicht.

    des weiteren gibt es offensichtlich null beschreibungen dazu, wie ich einer funktion eine Taste zu ordnen kann.
    Beispiel: F12 = playsound(mein.wav)

    ----------------------------------------------------
    ich hab dazu diverse quellcodes zerlegt und ich finde einfach nicht das was ich brauche.
    leider sind Files wie die SchuDesManitu und Traumschiff... Fun-Sounds Komprimiert und ich bekomm die net entpackt um mal rein zu kucken wie sowas geht.

    need help, und fragt nicht wozu ich das machen will, ich will das lernen, verstehen und anwenden, das sollte genügen.

    thx schon mal.



  • Versteh ich jetzt net, das du immer noch nicht gefunden hast wie playsound() aufgerufen wird, bei google im 4. link is die Erklärung aus der MSDN:

    http://msdn2.microsoft.com/en-us/library/ms712879.aspx

    Die abfrage der tasten kannst du eigentlich ganz einfach über DirectInput machen, dazu wirst du bestimmt auch was finden. Ist aber auch möglich mit ner Hook-Funktion, oder sicher wird da noch was anderes geben.

    und wie du beides verbindest, na einfach wenn die taste gedrückt wird rufst du playsound() auf.

    für dein TeamSpeak Problem hab ich natürlich keine Lösung.

    Gruß Matthias



  • danke *freu*

    auf der msdn hatte ich mich auch schon zu tode gesucht bin aber immer wieder bei direct sound gelandet.
    thx für den link.

    wegen der taste muß ich hald nochmal kucken.

    wegen der TS abfrage hab ich was im dazu gehörigen forum gefunden, es gibt eine dll die ich nutzen kann.
    leider gibt es nur ein delphi beispiel und keine beschreibung was ich damit alles machen kann.
    kann ich irgendwie die dll einsehen was die kann und macht?

    -------

    hab leider nur grundlagen kentnisse in c und c++, ne webseite mach ich euch im schlaf aber das is hald schon was anderes.
    aber mit problem lösungen macht lernen mehr spaß ^^

    ich merk schon, da muß ich mich wohl noch mal ein par monate rann setzen bis das was wird.



  • PlaySound("filepath to your wave file",NULL,SND_FILENAME | SND_ASYNC);

    Header: Declared in Mmsystem.h; include Windows.h.
    Library: Use Winmm.lib.

    Allerdings wird Dein Problem der Zugriff auf die Teamspeak Funktionen sein.
    Mir würde nur folgender Weg einfallen:
    -aus der Registry den aktuellen Zustand lesen
    -und dann per Hook die Eingaben verfolgen (sehr aufwändig)

    Achso, es gibt noch die Funktion sndPlaySound damit kann man auch WaveForms direkt aus dem Speicher abspielen, damit kann man auch noch sehr lustige Sachen machen (StW.: Fouriertrafo, DTFT) 😉



  • Grundlegendes:
    Du mußt mal einen unterschied machen, wenn de dich sagen wir mal 14 tage hinsetzt, kannste schon recht schnell was in html machen (is ja auch keine Programiersprache). Wenn Du C++ anfängst, wirst du in 14 Tagen wahrscheinlich gerade mal mit der Hallo Welt geschichte klar kommen. Wenn Du jetzt noch gar nichts in C++ und/oder MFC gemacht hast, dann schau erst mal zu das Du die grundlagen reinbekommst. Kennste Dich in Java aus, haste schon mal einen Vorteil.

    Spezielles:
    Zu deiner DLL von TS, da mußt Du entweder eine *.lib und das Haederfile haben, oder du öffnest die Funktionen direkt in dem Du dir den Zeiger auf die Funktion geben lasst. aber egal wie, du brauchst immer den Prototypen der Funktion, sonnst weisst Du doch gar nicht was du übergeben sollst.

    Gruß Matthias



  • ok, das mit dem playsound() geht, habs einfach zum testen mal auf einen Button gelegt.

    das mit dem TS, sollte auf dauer auch klappen, hab ein Beispiel in C++ gefunden das wohl alles wichtige mit der dll macht.

    jetzt muß ich nur noch das mit dem auslesen des tasten drucks machen.
    was ist denn da sinvoll, das programm wird ja minimiert laufen und nicht als aktives fenster.
    werd ich wohl doch "per Hook die Eingaben verfolgen" müßen oder?
    dann mach ich mich mal darüber schlau würde ich sagen.

    ------------------------

    @ CTecS
    also das Hallo Welt hatten wir am ersten tag im Grundelagen kurs,
    ich hab schon viel mit Java, PHP und mySql gearbeitet, und auch viel für mIRC gescriptet, also von daher ein totaler noob bin ich nicht 😉
    ich kenn nur nicht die möglichkeiten (klassen und funktionen) die mit der MFC oder WinAPI zur verfügung stehen.
    das ist wie mit den Vokabeln in Englisch 🤡

    -------------------------
    also thx schon mal, wenn noch was is melde ich mich wieder, und wenn ichs fertig hab auch, muß ja wer Beta tester machen 😃



  • Wenn du Glück hast wird die Einstellung direkt in die Registry geschrieben, darauf kann man sicher am einfachsten reagieren.



  • also einen sound kannst du so wieder geben:

    #include <mmsystem.h>
    #pragma comment( lib, "winmm.lib" )
    //...
    void CTestDlg::OnButton1() {
      PlaySound ("test.wav", NULL, SND_FILENAME);
    }
    

    so kannst du auf eine Taste reagieren z.b. hier die 7:

    BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) {
      if (pMsg->message == WM_KEYDOWN) { 
        if(pMsg->wParam == '7') {
          //.... deine funktion was eben passieren soll
        }
        return 0; 
      } 
      return CDialog::PreTranslateMessage(pMsg);
    }
    

    wie du das aufnahmegerät zwischen mic und mixer wechselst kann ich dir nicht sagen,
    das is so geheim das ich keine ahnung davon habe.

    was TeamSpeak an geht gibt es im TS-Verzeichnis einen Ordner "client_sdk"
    da drin ist eine TSRemote.dll und ein beispiel in Delphi, alles weitere dazu
    bekommste im TS-Forum(English)


Anmelden zum Antworten