Assembly / MASM32 / Win32 API

Sound Recorder؛ ضبط صدای ساده با اسمبلی و APIهای ویندوز

Sound Recorder یک برنامه‌ی کوچک ویندوزی برای ضبط صدا است که با MASM32 نوشته شده و خروجی را به صورت فایل WAV ذخیره می‌کند. برنامه هنگام ضبط، یک نمایش ساده از شکل موج صدا نشان می‌دهد تا مسیر دریافت و نمایش داده‌های صوتی قابل دیدن باشد.

ارزش اصلی این پروژه در ظاهر ساده‌ی آن نیست؛ نکته‌ی مهم این است که پنجره، دکمه‌ها، منو، ضبط صدا، مدیریت bufferها، ذخیره فایل و رسم موج، همگی مستقیماً با Win32 API و اسمبلی انجام شده‌اند. بسته نهایی شامل سورس اسمبلی، فایل اجرایی آماده، resource/iconها و اسکریپت build نسخه Release است.

بسته دانلودی شامل سورس MASM32، فایل اجرایی آماده تست، فایل RC، آیکون‌ها و MakeRelease.bat است.

زبانAssembly x86
AssemblerMASM32
رابط و صداWin32 / WinMM / GDI
وضعیتآماده دانلود

این برنامه چه کاری انجام می‌دهد؟

برنامه یک مسیر خروجی برای فایل WAV می‌گیرد، ضبط را شروع می‌کند، وضعیت ضبط را نمایش می‌دهد و امکان توقف یا مکث را فراهم می‌کند. داده‌ی صوتی از ورودی سیستم دریافت می‌شود و هم‌زمان بخشی از آن به صورت waveform ساده در پنجره رسم می‌شود.

این پروژه یک نمونه‌ی آموزشی از ساخت برنامه ویندوزی بدون framework سنگین است: ساخت کنترل‌ها، دریافت پیام‌های ویندوز، کار با ورودی صوتی، نوشتن فایل WAV و رسم ساده با GDI، همه در سطح پایین انجام شده‌اند.

نکات فنی پروژه

  • ساخت GUI با Win32 API و کنترل‌های استاندارد ویندوز.
  • تعریف منو، آیکون و resourceها از طریق فایل RC.
  • ضبط صدا با کتابخانه winmm و توابع خانواده waveIn.
  • استفاده از bufferهای صوتی برای دریافت پیوسته داده‌های PCM.
  • ساخت فایل WAV و تکمیل header بعد از پایان ضبط.
  • نمایش شکل موج با GDI و رسم مستقیم روی پنجره.
  • پکیج نهایی شامل MakeRelease.bat برای build ساده‌تر است.

برای چه کسانی مفید است؟

این پروژه برای علاقه‌مندان به برنامه‌نویسی سطح پایین در ویندوز مناسب است؛ مخصوصاً کسانی که می‌خواهند بعد از مثال‌های ساده‌ی اسمبلی، یک نمونه‌ی کاربردی‌تر ببینند. کد برنامه برای تمرین ساخت GUI بدون framework، کار با پیام‌های ویندوز، resourceها، APIهای صوتی، فایل‌نویسی و رسم ساده مفید است.

Download

دانلود

بسته نهایی پروژه آماده است و شامل سورس اسمبلی، فایل اجرایی، فایل RC، آیکون‌ها، فایل‌های لازم و اسکریپت build نسخه Release است.