Sound/Ton im Borland C++ erzeugen???



  • Hallo Leute!!

    Möchte ein Programm erstellen, mit dem man Klavier spielen kann bzw. Töne erzeugen kann. Jetzt muss ich nur wissen wie man in C einen Ton erzeugen kann?
    gibt es da keinen sound befehl oder irgendsowas?? Hab auch schon in der Hilfe nachgesehen .. habe ich auch nichts gefunden!! Naja ich hoffe ihr könnt mir helfen!!

    mfg,
    martin



  • Ich befürchte da musst du schon eine externe Library verwenden.
    Wie wär's mit fmod? http://www.fmod.org/

    Ich kann dir diesbezüglich leider keine Hilfe leisten, weil ich fmod nur vom Namen her kenne, und daher nie damit programmiert habe.



  • danke!! kenn mich leider nocht nicht so gut aus!! Was ist fmode?

    mfg,
    martin



  • mpgo13 schrieb:

    Was ist fmode?

    link klicken und about lesen. 😉



  • hallo!

    vielen dank, aber gehts nicht auch ohne fmode?? Weil ich habe gesehen dass jemand dieses Programm das ich machen will scho gemacht hat!! Mit dem Borland C++!!! Und genau dass will ich auch machen!!!
    mfg,
    martin



  • #include <stdio.h>
    #include <windows.h>
    #include <math.h>
    #include <iostream.h>
    #define M_PI 3.411592654
    void main(void)
    {
    	// Die Wavedatei
    	char ID[4];				
    	int ChunkSize;			
    	char Format[4];			
    	char Subchunk1ID[4];
    	int Subchunk1Size;
    	WORD AudioFormat;	
    	WORD NumChannels;		
          int SampleRate;			
    	int ByteRate;			
    	WORD BlockAlign;        
    	WORD BitsPerSample;     
    	char Subchunk2ID[4];    
    	int Subchunk2Size;			
          short Data[36000];
    
    	/// Variablen mit Daten fuellen
    	ID[0] = 'R';
    	ID[1] = 'I';
    	ID[2] = 'F';
    	ID[3] = 'F';
    	ChunkSize = 36 /*groeße des wave headers*/ + 36000*2/*sampledaten*/;
    	Format[0] = 'W';
    	Format[1] = 'A';
    	Format[2] = 'V';
    	Format[3] = 'E';
    	Subchunk1ID[0] = 'f';
    	Subchunk1ID[1] = 'm';
    	Subchunk1ID[2] = 't';
    	Subchunk1ID[3] = ' ';
    	Subchunk1Size = 16;
    	AudioFormat = 1;	// PCM
    	NumChannels = 1;	// MONO
    	SampleRate = 44100;
    	ByteRate = 44100*2; 
    	BlockAlign = 2;
    	BitsPerSample = 16;
    	Subchunk2ID[0] = 'd';
    	Subchunk2ID[1] = 'a';
    	Subchunk2ID[2] = 't';
    	Subchunk2ID[3] = 'a';
    	Subchunk2Size = 36000*2;
    
    	for(int x = 0; x<36000; x++)
    	{
    		Data[x] = sin((x/180.0f*M_PI)*4) *10000;			
    	}
    
    	// WaveDatei speichern
    	FILE *file = NULL;
    
     	file = fopen("sine.wav", "wb");
    
    	fwrite(&ID, 4*sizeof(char), 1, file);
    	fwrite(&ChunkSize, sizeof(int), 1, file);
    	fwrite(&Format, 4*sizeof(char), 1, file);
    	fwrite(&Subchunk1ID, 4*sizeof(char), 1, file);
    	fwrite(&Subchunk1Size, sizeof(int), 1, file);
    	fwrite(&AudioFormat, sizeof(AudioFormat), 1, file);
    	fwrite(&NumChannels, sizeof(NumChannels), 1, file);
    	fwrite(&SampleRate, sizeof(int), 1, file);
    	fwrite(&ByteRate, sizeof(int), 1, file);
    	fwrite(&BlockAlign, sizeof(WORD), 1, file);
    	fwrite(&BitsPerSample, sizeof(WORD), 1, file);
    	fwrite(&Subchunk2ID, 4*sizeof(char), 1, file);
    	fwrite(&Subchunk2Size, sizeof(int), 1, file);
    	fwrite(&Data, 2*36000, 1, file);
    	fclose(file);
    }
    

    wenn du wissen willst was sich dahinter verbirgt:
    http://www.games-net.de/files/wettbewerb_2004_audio_programmierung.zip



  • hi,

    #define M_PI 3.411592654

    41 = 14

    nur, um alle Klarheiten zu beseitigen.

    mfG Eisflamme



  • cout << '\a';
    

    😉



  • hallo!!

    das weiss ich bereits schon das man mit der Escape funktion \a einen Beep ton herstelle!! Aber ich will ja schließlich Klavierspielen und nicht nur mit einen Ton herumklempern!!!
    mfg,
    martin



  • #include <windows.h>

    Beep(frequenz,länge);



  • hallo!

    vielen dank!! aber ich arbeite mit dem Borland C++!! Möchte nur mit dem compiler das Programm schreiben!!!

    mfg,
    martin



  • es ist völlig egal, mit welchem compiler du das programm erstellst, fakt ist, dass töne nicht zum standard gehören. Deshalb wirst du irgendetwas wie fmod oder auch windows.h benutzen müssen.
    geloescht

    PS: ein ausrufezeichen genügt 😉


Anmelden zum Antworten