بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ضبط صوت مانند برنامه های ارگ و سنتور اندروید

مدیریت گفتگو
miladint 12 سال پیش
آخرین تغییر: 12 سال پیش

با سلام به همه دوستان عزیز

مطمئنا برنامه ارگ و سنتور و همانند آن ها را دیده اید. در حال نوشتن برنامه ای هستم که نیازمند به ضبط صوت مانند برنامه های ذکر شده هستم یعنی نمیخوام صدای اطراف ضبط بشه و فقط میخوام صداهایی که از برنامه تولید میشه ضبط بشه ممنون میشم راهنمایی کنین 

نظرات

sadeghbarout 12 سال پیش
من هم به نوعی نیاز به همچین موضوعی دارم. مشترک :)
miladint 12 سال پیش
صادق فکر کنم برنامم رو بزارم اینجا اولین نفر تو باشی خفم کنی :)
CreativeBoy 12 سال پیش
به نظر من به این شکل بشه صدا رو ذخیره کرد که کاربر با ضربه زدن به هر تار توالی یی از نوت ها رو ایجاد میکنه و شما هم میتونید این توالی نوت ها رو ذخیره کنید و منابع صوتی مربوط به هر قسمت از اون توالی رو اجرا کنید. برای ذخیره کردن این توالی هم میتونید اونو با فرمت raw ذخیره کنید و بعدا با یک الگوریتم فشرده سازی مثل mp3 یا midi (اگه اشتباه نکنم این فرمت نوت ها رو هم میتونه نگهداری بکنه.) اونو تبدیل به یک فایل قابل اجرا کنید. (فقط در همین حد تئوری میدونم:| مشترکـــــــــ )
sadeghbarout 12 سال پیش
میلاد نکنه هردومون داریم یه برنامه مینویسیم؟ D:
miladint 12 سال پیش
نمیدونم صادق میخوای خصوصی بگیم چیکار میکنیم پیغام خصوصی کن داری چیکار میکنی تا جوابشا بگم :) خدا بخیر کنه

پاسخ‌ها 4

مجتبی یگانه 12 سال پیش

خوب این که کار سختی نیست ! ، اگه من بگم A B C D  شما چطوری می خونید ؟ حالا بگم D C B A چی ؟!

شما برای نت ها تون یک زبان بنویسید ، مثلا A فایل A.mp3 رو پخش کنه و... 

حالا یه آداپتور بنویسید که فایل متنی تون رو صوت کنه

A B C
A.mp3 B.mp3 C.mp3

یا اگه میخواین حرفه ای تر کار کنید ، باید یک time Line تعریف کنید ، که بتونید همزمان چند فایل رو پخش کنید.

1 A B
2
3 C
4 D E
5 F A
6
7
8 Z A F

اون اعداد نمودار زمان هستند و حروف فایل هایی که باید در اون واحد زمان شروع به پخش بشن ، ممکنه وقتی دارن اجرا میشن ، هنوز فایل قبلی تموم نشده باشه و چند صدا هم زمان پخش بشه ، پس نباید از یک مدیا پلیر استفاده کنید ! 

نظرات

sadeghbarout 12 سال پیش
بحث سر اینه که چطور فقط صدای داخل گوشی ضبط بشه و صدای بیرون نباشه؟ همچین آپشنی هست؟
miladint 12 سال پیش
مجتبی میخوام همه ی نوت ها در انتها یه فایل صوتی بشن و پخس میشه کامل بدون وقفه ، مانند برنامه سنتور یا ارگ
مجتبی یگانه 12 سال پیش

نمونه کد جاوا چسباندن یا merg دو فایل mp3 :)

import java.io.*;
public class TwoFiles
{
    public static void main(String args[]) throws IOException
    {
        FileInputStream fistream1 = new FileInputStream("C:\\Temp\\1.mp3");  // first source file
        FileInputStream fistream2 = new FileInputStream("C:\\Temp\\2.mp3");//second source file
        SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
        FileOutputStream fostream = new FileOutputStream("C:\\Temp\\final.mp3");//destinationfile

        int temp;

        while( ( temp = sistream.read() ) != -1)
        {
            // System.out.print( (char) temp ); // to print at DOS prompt
            fostream.write(temp);   // to write to file
        }
        fostream.close();
        sistream.close();
        fistream1.close();
        fistream2.close();
    }
}

منبع ( لینک )

این قسمت اش سادست ! ، اما اگه بخواین چند صدا همزمان پخش کنید ؛ پیاده کردن mp3 ایش ساده نیست ، منم بلد نیستم اما استاد یه توضیحاتی دادند من شدم :| اون یکی دوستمون شده بود :((

نظرات

miladint 12 سال پیش
پس من چی میشم؟ این :((((((((((((((((((((((((((((((((((((((((((((( به هرحال ممنون این چیز لازمیم هست :(
sadeghbarout 12 سال پیش
برای انداختن 2 صدا روی هم (ترکیب 2 صدا) ، من اینترنتو شخم زدم (حدود 6 ساعت یه بند) ولی هیچ به هیچ! جوابایی بود ولی هیچکدوم جواب نمیداد! خوشحال میشم اگه شما راهی پیدا کردید یه خبری بدید.
sadeghbarout 12 سال پیش
البته یه راه تئوریش (که جناب حسین زاده پیشنهاد کردن) این بود که یه فایل استوریو درست کنیم و یه صدا رو بندازیم تو کانال راست و یکی رو بندازیم تو کانال چپ. ولی متاسفانه نتونستم یه فایل استوریو تو اندروید درست کنم. شما راهی ندارید؟
hamidd 12 سال پیش
به نظر من دنبال لایبراری آماده بگردین شاید پیدا کنین. اگه یه صدا رو بندازیم تو کانال راست و یکی رو بندازیم تو کانال چپ وقتی می خوایم با هدفون گوش کنیم یه صدا رو با گوش راستمون میشنویم یه صدا رو با گوش چپ D: وقتی 2 تا اسپیکر به سیستم وصل باشه هم همین طوری میشه :) یه صدا از اسپیکر راست و یه صدا لز اسپیکر چپ پخش میشه.
miladint 12 سال پیش
عجب این موضوع پیچیده شده :)
sadeghbarout 12 سال پیش
نه حمید . بعدش صدای استریو رو به مونو تبدیل میکنیم که این مشکل پیش نیاد. کتابخونه آماده هم مثلا میگفتن از FFMpeg استفاده کنید ولی من نتونستم پیاده اش کنم! خیلی گسترده و پیچیده بود به نظرم!!
miladint 12 سال پیش
صادق من مجبورم پیاده کنم هر روشی هست مطمئن باش انجامش میدم و مطرح می کنم اگه دوستان دیگه هم پیشنهاداتی بدن بهمون بیشتر کمک میشه :)
sadeghbarout 12 سال پیش
میلاد به نظرم تو به انداختن 2 صدا روی هم نیاز نداری که ولی اگه میدونی نیاز داری این یافته های من تا به اینجا (پست بعدی)
hamidd 12 سال پیش
آره FFMpeg به نظرم کارتو راه میندازه.
sadeghbarout 12 سال پیش
حمید باهاش کار کردی تا حالا؟
miladint 12 سال پیش
صادق ارگ رو بررسی کردم کاری نداره مثل ارگ اما سنتور به کل فرق میکنه و خاص هست
hamidd 12 سال پیش
نه کار نکردم ولی شنیدم FFMpeg خیلی قدرتمنده و برای ضبط کردن و تبدیل کردن و استریم کردن و encode کردن فایل های صوتی و تصویریه.
sadeghbarout 12 سال پیش
میلاد والا وقت نکردم برنامه ها رو reverse کنم اما تو که reverse شون کردی ببین سر نخی از یه کتابخونه ای توشون پیدا میکنی یا نه؟ کدهاشون obfuscate شدن نه؟
sadeghbarout 12 سال پیش
حمید آره از بس بزرگ و قدرتمنده آدم توش گم میشه! معلوم نیست از کجاش باید چطور استفاده کنیم!
miladint 12 سال پیش
نمیدونم صادق میخوام روی این نمونه کار کنم که هر نت صداشو بگیره و فرض کن کاربر 20 بار به طور مثال برروی هر نتی می زنه بعد این 20 بار به ترتیب با هم مرج کنیم روی این کار می کنم و موفق شدم کاملا با توضیح و کد قرار می دم :)
sadeghbarout 12 سال پیش

میلاد جان. حالا که مصر هستی چند تا لینک میدم شاید کمکت کنه:

ذخیره صدای wav به صورت مونو و استریو ولی برای C#   :  لینک

اینم تقریبا برعکسش : لینک

مگقتن دستور SequenceInputStream هم برای این کاره (ولی برای من دو فایلو در ادامه هم مینداخت اونم خیلی بد و طی یه proccess طولانی

اینم پروژه های ffmpeg توی github برایjava : لینک

این هم 2 سوال که خودم توی stack در این رابطه مطرح کردم :

How to create a stereo audio file from two mono audio file with code in android

How to combine two audio files on top of each other in android

 

منتظر هستم ببینم تو چه میکنی ;)

نظرات

miladint 12 سال پیش
ممنون صادق جان روش کار می کنم ببینم میتونم کاری کنم فعلا برنامه رو آپ کردم میخوای توی آپدیت بعدیش این امکان رو وارد کنم به زودی تایید بشه توی یکی از مارکت ها توی انجمن معرفی می کنم :)
sadeghbarout 12 سال پیش
ایشالا که برنامه ات بگیره و این هم درست شه. راستی من دقت کردم برنامه های DJ هم تقریبا همین کارو میکنن ولی هنوز وقت نکردم بگردم سورسی پیدا کنم و بررسی شون کنم. شاید اونم بتونه کمک کنه.
miladint 12 سال پیش
منم میخواستم برم تو کار برنامه های دی جی اما بیخیال شدم اما به عنوان اینکه بررسی کنیم خوبه اما کار کردن روش فقط به درد اینکه توی مارکت های خارجی بزاریم می خوره :دی
MiRHaDi 12 سال پیش

در آموزش ضبط و پخش صدا ، ما صدا را به Sample های مختلف تقسیم میکنیم ؛ حالا میتونیم 2 تا Sample مختلف که از میکروفون یا فایل گرفته شده را با هم ترکیب کنیم و در استریم مربوطه پخش یا ضبط کنیم.

چسباندنش به هم که خیلی ساده است ، برای افتادن صدا روی هم فکر کنم از میانگین باید استفاده کنیم

نظرات

hamidd 12 سال پیش
به همین سادگی، به همین خوشمزگی! :)
sadeghbarout 12 سال پیش
من قبلا میانگین رو تست کردم . جواب نداد! به هرحال ممنون از جوابت :)
miladint 12 سال پیش
ممنون از جوابتون
MiRHaDi 12 سال پیش
یکچا نوشته بود اگر 16 بیت باشه صدا و 8 بیت هر کدام باشه با میانگین جواب میده
hamidd 12 سال پیش
استاد آموزش ضبط صدا هم دادن؟! باورتون میشه هنوز سر فصل ها نمی دونم چی هستن!
miladint 12 سال پیش
آره اون آموزش رو بلدم و خیلی هم به درد میخوره اما در مورد برنامه ای که میگم چوش صدای اطراف هم ضبط میشه یکم مناسب نیست و از روش دیگه استفاده می خوام بکنم واسه همین مطرح کردم
MiRHaDi 12 سال پیش
از میکروفون استریم بگیری یا از فایل که مشکلی نیست ، بقیش هم همونه
sadeghbarout 12 سال پیش
ممنون میرهادی. الان خونه نیستم . ایشالا فردا پس فردا که رفتم خونه اونو هم تست میکنم خداکنه جواب بده

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .