Générateur fm expérimental

Description

Je suis parti d'un code source intéressant qui permet après améliorations :
- génération FM
- affichage de la forme d'onde

Il est possible d'ouvrir un fichier existant (attention à ne pas l'écraser).
Les fonction relatives au son (construction, affichage...) ont été encapsulées dans une classe.
Il est possible de jouer le son depuis le fichier ou depuis la mémoire, pour référence.

Pour le code d'origine allez voir http://www.cppfrance.com/codes/GENERATEUR-FICHIER-WAV-REFERENCE-CD-TEST_34327.aspx

Source / Exemple :


class SoundBuffer
{
	FILE *fichier;
	char pathname[256];

	char *buffer;
	size_t bufferSize;
	HDC hdc;
	int zoom;
	RECT rect;

public:
	SoundBuffer(HDC iHdc) { 
		buffer = 0;
		bufferSize = 0;
		hdc = iHdc;
		zoom = 1;
		fichier = 0;
		pathname[0]=0;
	}
	~SoundBuffer() {
		if(buffer)
			free(buffer);
	}

	bool GetPathName(char iPathname[256], HWND hWnd);
	char* SetPathName(char iPathname[256])	{	return strcpy(pathname, iPathname);	}
	bool LoadFile();
	void BuildFile(int freqEchantillonage, int duree, int iCanaux, int iResolution, int frequenceGauche, int frequenceDroite, int iFrequence, int gainGauche, int gainDroit, int iGain, double iModulation);

	void SetRect(RECT &iRect)	{	rect = iRect;	}
	void DrawSample();
	void PlayMemSound()	{	::PlaySound (buffer,   NULL, SND_MEMORY   | SND_ASYNC);	}
	void PlayFileSound(){	::PlaySound (pathname, NULL, SND_FILENAME | SND_ASYNC);	}

	bool IncZoom();
	bool DecZoom();
};

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_tontonCD)