Soundboard



  • Hallo,

    Ich bräuchte etwas hilfe für ein Schulprojekt. Ich bin noch ein blutiger anfänger und alles was wir bisher gemacht haben sind einfache Konsolenanwendungen. Nun ist unsere Aufgabe ein eigenes Program zu schreiben, Was auch immer es ist, Hauptsache wir verwenden ein paar Basics (Arrays, Funktionen, Schleifen, Bedingungen etc.). Es muss nicht ALLES verwendet werden aber wir sollen zeigen, dass wirs kapiert haben und das hab ich auch! Die meisten machen Textadventures oder TicTacToe und sowas, aber ich würde gerne was neues machen...

    Ich hab mir überlegt eine art Soundboard zu erstellen. Es wird ein Song nach wahl abgespielt und dazu könnte man für jeden Key auf der Tastatur ein Element von einem Schlagzeug oder sowas immitieren (Base Drum, Toms, Hi-Hat etc.), also dass man im Takt etwas Schlagzeugen kann.

    Da ergeben sich folgende Fragen/Probleme:

    Ich habe mich schon ein bisschen informiert und im Internet eine Funktion für Windows gefunden die PlaySound() heißt. Mit dieser soll man .wav dateien einfach abspieln können. Ich hab mir ganz neu Visual Studio c++ 2010 express eingerichtet und komm damit irgendwie nicht ganz klar. Ich hab wie man das für PlaySound() eben braucht unter Projekt/Eigenschaften/Linker/Input/Zusätzliche Abhängigkeiten via bearbeiten "winmm.lib" hinzugefügt und eine "test.wav" im Projektordner platziert. Mein Code sieht folgendermaßen aus:

    #include <iostream>
    using namespace std;
    
    #include <windows.h>
    #include <mmsystem.h>
    
    int main() {
    
    	PlaySound(TEXT("test.wav"), NULL, SND_SYNC);
    
    	system ("pause");
    	return 0;
    
    }
    

    Normal müsste das laufen, aber alles was passiert ist, dass sich die Konsole öffnet, ein dumpfes Piepsen ertönt und da steht "Drücken sie eine beliebige Taste..." wenn ich das dann mache schließt sich die Konsole. WAS IST DA LOS ? Normal dürfte da doch garnix ausgegeben werden... wo kommt der Text mit der Taste her und warum funktioniert der Sound nicht ? Es gibt keine Errormeldungen oderso.

    Meine 2. Frage wäre:

    Kann man später, wenn der Code funktioniert auch mehrere .wav's gleichzeitig ausführen ? ohne dass die eine beendet wird sondern dass sich der soud einfach überschneidet, weil das wäre ja Sinn der Sache. Kann man auch die Lautstärke irgendwie steuern?

    Dritte Frage:

    Was schätzt ihr, ist das Konzept machbar für einen Anfänger? Oder meint ihr das wird später zu Komplex? Ich fand das mit der PlaySound() klang so einfach, fast ein bisschen zu einfach... kann mir irgendwie schlecht vorstellen, dass das später so klappt. Gibts eine bessere Methode ?

    vierte Frage:

    gibt es eine eifachere Möglichkeit als Visual Studio? Ich komm damit irgendwie noch nicht so klar. Wir haben an der Schule immer nen Cygwin Compiler in Eclipse benutzt das ist aber so weit ich weiß noch komplizierter einzurichten als VS. Vllt. mit Codeblocks arbeiten oderso ?

    Schonmal danke fürs beantworten meiner nervigen Fragen ! Sorry wenn ich den Fachjargon noch nicht ganz drauf habe 😉 bin ja neu hier, also bitte die Antworten etwas anpassen 😃

    LG Megaloadon !



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Ich kann dir nicht viel mit deinem Winapi-Problem helfen, aber viele deiner anderen Fragen beantworten:

    Normal müsste das laufen, aber alles was passiert ist, dass sich die Konsole öffnet, ein dumpfes Piepsen ertönt und da steht "Drücken sie eine beliebige Taste..." wenn ich das dann mache schließt sich die Konsole. WAS IST DA LOS ? Normal dürfte da doch garnix ausgegeben werden... wo kommt der Text mit der Taste her

    Was erwartest du, was system("pause") auf einem Windowssystem tut? Einfach abgeschrieben, ohne es zu verstehen?

    Es gibt keine Errormeldungen oderso.

    Was würdest du auch erwarten? Die Anleitung sagt, dass PlaySound Fehler über seinen Rückgabwert meldet.

    Kann man später, wenn der Code funktioniert auch mehrere .wav's gleichzeitig ausführen ?

    Nicht mit PlaySound. Dazu musst du die richtigen Multimedia-APIs nutzen.

    Kann man auch die Lautstärke irgendwie steuern?

    Nicht mit PlaySound. Dazu musst du die richtigen Multimedia-APIs nutzen.

    Was schätzt ihr, ist das Konzept machbar für einen Anfänger? Oder meint ihr das wird später zu Komplex? Ich fand das mit der PlaySound() klang so einfach, fast ein bisschen zu einfach...

    Eher ein bisschen zu einfach. hier mal dein Code, wie er später ungefähr aussehen wird, egal ob mit playSound oder sonstwie:

    int main()
    {
      for(;;)
      {
        char input = aus_dem_netz_abgeschriebene_funktion_zur_tastaturabfrage();
        switch(input)
        {
          case 'a':
            aus_dem_netz_abgeschriebene_funktion_zur_klangwiedergabe("a.wav");
            break;
          case 'b':
            aus_dem_netz_abgeschriebene_funktion_zur_klangwiedergabe("b.wav");
            break;
          case 'c':
            aus_dem_netz_abgeschriebene_funktion_zur_klangwiedergabe("c.wav");
            break;
          case 'q':
            return 0;
        }
      }
    }
    

    Kommt auf deinen Lehrer an, ob man ihn ein bisschen Bling-Bling beeindrucken kann oder ob er erkennt, dass die Programmlogik ungefähr 0 ist.

    gibt es eine eifachere Möglichkeit als Visual Studio? Ich komm damit irgendwie noch nicht so klar.

    Was hast du für Probleme? Wenn dir IDEs zu schwer zu benutzen oder einzurichten sind, bleibt natürlich immer die Möglichkeit, einfach keine IDE zu benutzen. Wobei das unter Windows vermutlich deutlich unangenehmer als unter anderen Systemen ist. Daher wohl eher nicht empfehlenswert, wenn es Windows sein muss.

    Allgemein: Du plenkst.



  • warum funktioniert der Sound nicht ?

    Schau dir folgenden Link an:

    https://msdn.microsoft.com/en-us/library/windows/desktop/dd743680%28v=vs.85%29.aspx

    Interessant ist das hier:

    PlaySound searches the following directories for sound files: the current directory; the Windows directory; the Windows system directory; directories listed in the PATH environment variable; and the list of directories mapped in a network. If the function cannot find the specified sound and the SND_NODEFAULT flag is not specified, PlaySound uses the default system event sound instead. If the function can find neither the system default entry nor the default sound, it makes no sound and returns FALSE.

    Dass heißt, das System sucht in verschiedenen Verzeichnissen, findet "test.wav" nicht und gibt dann das 'dumpfe Piepsen' aus.

    Kann man später, wenn der Code funktioniert auch mehrere .wav's gleichzeitig ausführen ?

    Ja.

    Was schätzt ihr, ist das Konzept machbar für einen Anfänger?

    Es ist dann denkbar, wenn du MSDN benutzt und auch verstehst was da steht. Es ist meist etwas umständlich.

    gibt es eine eifachere Möglichkeit als Visual Studio?

    Es kommt darauf an, womit du Schwierigkeiten hast.



  • Anmerkungen:
    1. WinApi ist out, Visual Studio bietet besseres
    2. Die Realisierung des Projektes ist wenig geeignet, da nahezu ohne die
    geforderten Basics möglich


Anmelden zum Antworten