الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كتابة ملفات wav بدون مكتبات مساعدة

مغلق
بدأه Abdullah.Alshammeri في 26 يونيو 2006 · 3 رد · 527 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

من مدة وانا ابحث عن نقطة البداية

كما انه بامكاننا ان نحمل الصور بدون استخدام مكتبات جاهزة

فانه اكيد بامكاننا قراءة وكتابة الملفات الصوتية بدون مكتبات مساعدة ..

هذا المكثال وجدته في احد مواقع شرق اسيا ... :(

كأني ابحث عن ابرة .....

المهم ..

البرنامج يعمل تحت بيئة win 32 وبامكاننا استخدام مكتبات السي القياسية وتحت بيئة الكونسول ..

كما ترون لم يستخدم كاتب الكود الا تركيب واحد من تركيبات win api وهو مجرد اختصار للوقت ..

يعني ممكن نحن من ننشئ التركيب .....

الان حقيقة انا عاجز عن التفكير ..

أتمنى مناقشة هذا المثال ..

#include <windows.h>
#define SRATE 	11025

int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
			PSTR lpCmdLine , int nCmdShow) {
	BYTE *bWave;
	DWORD dwCount , dwWave = 0 , dwWriteSize;
	const DWORD dwFileSize = SRATE + 36 ,
		dwFmtSize = 16 , dwWaveSize = SRATE;
	WAVEFORMATEX wfe;
	HANDLE hFile;

	hFile = CreateFile("t.wav" , GENERIC_WRITE , 0 , NULL ,
		CREATE_ALWAYS , FILE_ATTRIBUTE_NORMAL , NULL);
	if (hFile == INVALID_HANDLE_VALUE) {
		MessageBox(NULL , TEXT("oooops") , NULL , MB_OK);
		return 1;
	}

	WriteFile(hFile , TEXT("RIFF") , 4 , &dwWriteSize , NULL);
	WriteFile(hFile , &dwFileSize , 4 , &dwWriteSize , NULL);
	WriteFile(hFile , TEXT("WAVE") , 4 , &dwWriteSize , NULL);

	bWave = (unsigned char *)malloc(SRATE);
	for (dwCount = 0; dwCount < SRATE; dwCount++) {
		if (dwWave > 256) dwWave = 0;
		*(bWave + dwCount) = dwWave;
		dwWave += 10;
	}

	wfe.wFormatTag = WAVE_FORMAT_PCM;
	wfe.nChannels = 1;
	wfe.nSamplesPerSec = SRATE;
	wfe.nAvgBytesPerSec = SRATE;
	wfe.wBitsPerSample = 8;
	wfe.nBlockAlign = wfe.nChannels * wfe.wBitsPerSample / 8;

	WriteFile(hFile , TEXT("fmt ") , 4 , &dwWriteSize , NULL);
	WriteFile(hFile , &dwFmtSize , 4 , &dwWriteSize , NULL);
	WriteFile(hFile , &wfe , 16 , &dwWriteSize , NULL);
	WriteFile(hFile , TEXT("data") , 4 , &dwWriteSize , NULL);
	WriteFile(hFile , &dwWaveSize , 4 , &dwWriteSize , NULL);
	WriteFile(hFile , bWave , SRATE , &dwWriteSize , NULL);

	free(bWave);
	CloseHandle(hFile);
	return 0;
}

بعد التنفيذ ..

سيتم انشاء ملف wav في مجلد برنامجك ...

شغله وستستمع الى طنين مذهل !!!! نحن من أنشأناه ...

بدون مكتبات جاهزة ...

هذه حلاوة البرمجة ...

wav.zip

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

سلام عليكم

و ما المشكلة فى كتابة الملف لكن المهم هو عمل شئ مفيد به

مثل برنامج لتعديل و أضافة مؤثرات على الصوت و من ثم حفظ الملف

أنا أسف و لكن لابد و أن يكون المثال أكثر أفادة :) ربنا معانا و يقدرنا نعمل حاجة كويسه :)

شكرا على المثال :)

Nothing to mention except that I am Muslim

Using your brain is not bad as you think

My Blog

logo.jpg

هذا الموضوع مغلق.

مواضيع مشابهة