Sonic Pi

انتظار ما از هر الگوریتم کامپیوتری این است که یک ورودی به آن داده شود و خروجی منحصر به فرد خودش، و متناسب با کاری که برایی آن برنامه ریزی شده است انحام دهد. حال میخواهیم علاوه بر خروجی خواسته شده، هر الگوریتم صدای منحصر به فرد خودش را داشته باشد . از آن جایی که موسیقی و الگوریتم، هر دو الگوی خاصی دارند، می توان از این موضوع استفاده کرد و بینشان رابطه ای به وجود آورد. من به کمک برنامه ی سونیک پای که به زبان روبی است، صدای منحصر به فرد شبیه به موسیقی را برای الگوریتم insertion sort پیاده سازی کردم. اول از همه باید بدانیم که این الگوریتم چه کاری انجام میدهد و چگونه کار می کند. سپس با توجه به عملکرد و بخش های مختلف، آن را به موسیقی مربوط کنیم .
1-این الگوریتم یک الگوریتم ساده برای مرتب کردن داده های آرایه یا لیست با پیچیدگی زمانی o(n^2) الگوریتم به این شکل است که برای هر صفر تا طول آرایه منهای یک ؛ به ترتیب زیر آرایه می سازد و هر عنصر از زیر آرایه را از اخر به اول چک می کند و در هر بار چک کردن ، اگر از عنصر قبلی کوچک تر باشد، آن را جا به جا می کند که به اندازه ی طول زیر آرایه است. شکل زیر موضوع را بیشتر تفهیم می کند.

2 - در قسمت دوم،‌ کد را پیاده سازی کردم تا عملکرد و نحوه ی نوشتن آن را متوجه بشم کد اولیه در سونیک پای به شکل زیر است :‌

3- از آن جایی که موسیقی یک هارمونی پر از تکرار است ،‌پس می توان این هارمونی را در کد نیز استفاده کرد. اول از همه یک آرایه از نت ها را که تشکیل یک هارمونی میدادند به عنوان آرایه ی نا مرتب شده در نظر گرفتم. نواختن اولیه آرایه ،‌ و شنیدن صدای ارایه ی مرتب شده. و همچنین شروع وارد شدن به تابع،

4- دومین قدم برای شنیدن موسیقی،‌حلقه ها هستند که موسیقی پشت زمینه ی الگوریتم را می سازند . حلقه ی اول برای زمانی است که هر زیر آرایه را می سازد. و حلقه ی دوم هر عنصر را از اول به آخر بررسی می کند و هر زیر آرایه را مرتب می کند. می توان برای هر دو حلقه ، صدای خاصی با نوسان منحصر به فرد قرار داد که هر بار وارد این لوپ میشود، صدای مخصوص آن نواخته شود. من برای لوپ اول تاخیر 1 ثانیه و لوپ دوم 0.5 ثانیه در نظر گرفتم.

5 - حال برنامه ی ما، صدای ارایه مرتب نشده ،‌ زیر صدا برای هر لوپ،‌و صدای پایانی را مشخص می کند. اما در این میان ملودی نواخته نمیشود. و از طرفی میخواهیم بدانیم که چه زمانی ارایه جابه جا میشود و صدای هر زیر آرایه به چه صورت است. در نتیجه،‌به ازای هر بار جابه جایی، یک صدای خاص نواخته شده و نوت عنصر جابه جا شده نواخته میشود. همچنین هر زیر آرایه نیز شامل نت هایی است که مرتب شده اند. پس صدای این آرایه نیز برای ما مهم است . و اگر دقیق گوش کنیم،‌هر لحظه در ملودی به جای مختلف بودن صدا ها ،‌به ترتیب از بم به زیر مرتب میشوند ،‌و هر جابه جایی،‌صدای خودش را دارد و بعد از آن نت عنصر جابه جا شده نواخته میشود.

imagee

به طور کلی ، اول صدای الگوریتم مرتب نشده نواخته می شود،‌ به ازای هر بار رقتن در حلقه،‌ صدای پس زمینه را تولید و ملودی وسط آهنگ صدای سورت شدن آرایه است و در انتها نیز ارایه مرتب شده نواخته میشود. به طور کلی ،‌این روش تجربه ی جدید و بسیار حالبی برای من بود و کمک خلاقانه ای برای درک جدید برنامه نویسی و نحوه ی انجام الگوریتم ایجاد می کند .

خیلی ممنون از این که زمان گذاشتید و این متن رو مطالعه کردید.

لینک صدا:‌ https://soundcloud.com/banafsheh-gholinejad/insertion-sort-music?ref=clipboard&p=i&c=1


2021

Sonic Pi

3 minute read

انتظار ما از هر الگوریتم کامپیوتری این است که یک ورودی به آن داده شود و خروجی منحصر به فرد خودش، و متناسب با کاری که برایی آن برنامه ریزی شده است انحام دهد....

Back to top ↑

2019

DIY blog

less than 1 minute read

In this post,I want to show that how can a HDD(hard disk driver) become into different things that may be useful so please watch this video: https://youtu....

Back to top ↑