امروز داشتم همینجوری توی اینترنت میگشتم و بی هدف آهنگ گوش میکردم که یه دفعه ای یه آهنگی به گوشم خورد که به راستی در من انقلابی ایجاد کرد . پس از گوش کردن این آهنگ و بهره گیری از گفته های آهنگ ، یک رابطه ریاضی بسیار بسیار کاربردی و جذاب کشفیدانیدم .
تذکر : همینجوری
گوش کنید تیکه آهنگ رو :
دقت کنید شاعر میگه : حاصل جمع منو تو منهای کل این شهر ضربدر خاطرات خوب تقسیم بر روز های سال مساوی است با عشق عشق عشق ق ق ق .....
خیلی خب اگه بخوایم به صورت ریاضی بنویسیمش به صورت زیر میشه :
حالا بیاید جایگذاری اعداد رو انجام بدیم . تعداد کل روز های سال که معلومه میشه 365 تا . من + تو هم که میشه 2 (ما دو نفریم دیگه) . کل این شهر رو هم من بر اساس شهر خودمون حساب کردم . طبق ویکی پدیا شهر ما 6000 جمعیت داره حدودا . خیلی خب . پس با جایگذاری اعداد و کمی محاسبه به رابطه زیر میرسیم :
دقت کنید اون 5998- حاصل تفاضل مجموع من و تو و کل این شهره . (6000 - 2)
نهایتا با ساده کردن فرمول بالا میرسیم به یه رابطه مفهومی بسیار مهم :
رابطه بالا به رابطه حسین معروفه که طبق اون میتونیم ازطریق تعداد خاطرات خوب آینده ، میزان عشق رو بدست بیاریم . واحد اندازه گیری عشق در این رابطه حُسایون است :)) .
نکته : رابطه بالا فقط عشق را روی کره زمین محاسبه میکند. فرمول عشق در سیارات مختلف متفاوت است حالا میگم چرا .
نکته عجیب اینه که میزان عشق شما به سیاره ای که توش زندگی میکنید بستگی داره . مثلا در کره زمین ، یک سال 365 روز هستش . مثلا اگه خیلی عاشقید و کشته مرده ی طرف هستید و دیگه نمیدونید واقعا باید چیکار کنید ، پاشید برید مریخ . مریخ 687 روز طول میکشه تا یه دور به دور خورشید بچرخه . چون تعداد روز های سال در مخرج کسره و اینجا این تعداد بزرگتره (تقریبا دو برابر زمین) پس در مریخ ، از عشق شما دو برابر کمتر میشه و از فکر یار میاید بیرون تر یکم .
نکته عجیب تر اینه که حتی میزان عشق شما به جمعیت شهرتتون هم بستگی داره . هرچی میزان جمعیت شهرتون بیشتر باشه شما عاشق ترید . (منطقیه آدمای بیشتری پیشتونن ) مثلا اگه برید تهران خیلی عاشق میشید . آره چون عدد جمعیت در صورت کسر هستش و هرچی بیشتر باشه عشق شما بیشتر میشه .
نکته عجیب تر تر رابطه بالا اون منفی قبل عدد 16/43 هستش که باعث میشه همیشه عشق منفی باشه . یعنی طبق این فرمول عشق شما همیشه منفی میشه و همیشه از طرف متنفرید . به عبارتی هرچی خاطرات خوب بیشتری داشته باشید تنفر بیشتری دارید . در یه صورتی شما عشق مثبت به طرف دارید و اونم اینه که مقدار خاطرات خوب منفی بشه یعنی تازه یه چیزی از خاطرات خوب بهش بده کار باشید ( نمیفهمم چی دارم میگم ) .
طبق محاسبات من ماکزیموم مقدار عشق از رابطه بالا وقتیه که خاطرات خوب اصلا نداشته باشید تا عشق صفر بشه . وگرنه عشق منفی میشه و شما حالتون از طرف بهم میخوره به عبارتی . هرچی خاطرات خوب بیشتر ، حال بهم زن تر .
حالا بگذریم از رابطه ای که کشفانندینادم میشه فرمول زیر رو نیز استخراج کرد :
اینم یه فرمول برای دوستان عزیز که بتونید روز های سال رو بدست بیارید . نکته ای که هست اینه که عشق در رابطه بالا نباید صفر باشه چون کسر تعریف نشده میشه . یعنی مثلا اگه من مقدار عشقم صفر باشه غلط میکنم بیام روز های سال رو حساب کنم آره .
بنابراین عشق شما باید غیر صفر باشه . از اونجایی که عشق در این صورت حتما منفی میشه پس با اون عدد منفی در صورت ساده میشه و نهایتا به یک جواب مثبت میرسیم که تعداد روز های ساله . بله .
امیدوارم از این فرمول سمی لذت برده باشید . چند حُِسایون عاشق این پست هستید ؟
خیلی خب . رباتی که بتونه این بازی رو انجام بده رو با پایتون نوشتم و البته یه سری از مفاهیم مورد نیاز برای نوشتن ربات رو از اسکرپیت آقای کاپیتان فهمیدم .
کار این ربات اینجوری هستش که میاد صفحه رو اسکن میکنه و میبینه هر نقطه اون نقطه های قرمز بوجود اومد رو موقعیتش رو پیدا میکنه و با موس روش کلیک میکنه .
سورس ربات :
import pyautogui as g
from time import sleep
import keyboard
from winsound importBeepimport threading
picture ="sample.png"def findandclick():try:
location = g.locateOnScreen(picture , region = region)
pos = g.center(location)
g.click(pos[0], pos[1])Beep(1000,100)print("Click At ({} , {})".format(pos[0], pos[1]))exceptExceptionas error:print("ERROR : ", error)for i in range(5,0,-1):print(i)
sleep(1)print("start")region =(0,171,1365,499)whileTrue:if keyboard.is_pressed("q"):break
findandclick()
هر بار که یه نقطه رو پیدا میکنه و روش کلیک میکنه یه بوق میزنه . ویدیو تست کردنش :
ولی خب مشکل اینجاس که چون با پایتون نوشته شده سرعتش پایینه . فعلا دنبال اینم با سی پلاس پلاس پیاده سازیش کنم . البته داخل سی پلاس پلاس هم یه سری مشکلاتی بوجود اومده . من برای گرفتن رنگ هر پیکسل از تابع GetPixel استفاده میکنم ولی سرعتش بازم خیلی خیلی پایینه . اگه تابعی یا روشی برای خوندن سریع رنگ پیکسل ها تو سی پلاس پلاس سراغ دارید ممنون میشم بگید .
و نهایتا اینم رکورد زدن خودم (بدون ربات) به آهنگشم توجه نکنید همینجور داشتم گوش میکردم فیلم گرفتم :|| :
احتمالا اسم خیلی از زبانای برنامه نویسی رو شنیدید آره ؟ پایتون ، سی ، سی پلاس پلاس ، روبی ، پرل ، لیسپ ، جاوا ، گو ، لوا و .... . اوووه تا صبح بگم بازم هستن .
ولی امروز میخوام یه زبان برنامه نویسی بهتون معرفی کنم قطعا قطعا خیلیاتون اسمشو نشنیدید تاحالا :) هه :)
بله یه زبان برنامه نویسی به نام سونیک پای (sonic pi) که مخصوص ساخت آهنگه ؟ یعنی چی ؟ یعنی با کد نویسی آهنگ بسازیم .
فکرشو بکن آهنگ های اوپن سورس :)))) . آهنگ هایی که سورسشون باز هست و میتونیم ببینیم .
خب بگم که یادگیری این زبان برنامه نویسی اصلا اصلا اصلا کار سختی نیست . من خودم یه سال پیش بود رو رزبری پای باهاش آشنا شدم تقریبا تو 1 روز بیشتر مفاهیم اصلیشو یاد گرفتم . زیاد مباحث سنگینی نداره مثل زبانای برنامه نویسی دیگه .
همینطور خود برنامه sonic pi هم یک آموزش کامل به زبان اصلی (ولی روان و قابل فهم) داره که من از همون یادش گرفتم .
برای برنامه نویسی به زبان سونیک پای باید اول برنامشو دانلود کنیم . میتونید از این لینک ، برنامشو برا سیستم عاملتون بگیرید . سونیک پای برای ویندوز ، مک و لینوکس رزبری پای موجود هستش و میتونید دانلودش کنید
توضیح بسه . بزارید بریم یکم باهاش آهنگ بزنیم .
خب برنامه رو که باز میکنیم با چنین صفحه ای رو به رو میشیم که داخلش کد مینویسیم و اونارو اجرا میکنیم (پخش میکنیم آهنگی که نوشتیم رو) :
حالا بزارید چند نمونه آهنگ که با سونیک پای نوشته شدن رو گوش کنیم . این آهنگ ها اوپن سورس هستند بنابراین سورسشون رو هم میبینیم . هر آهنگ رو اول سورس کدشو میزارم بعد خود اهنگشو که گوش کنید.
1 - آهنگ اول (از تو گیت هاب پیدا کردم سورسشو ):
# Chrono Trigger Soundtrack - Corridors of Time# plug this into http://sonic-pi.net/# still needs synth pads# global config
use_bpm 112def play_legato_note(note_value, duration)
release_duration = duration
if duration <1
release_duration =1end
play note_value, release: release_duration, amp:0.65
sleep duration
end# arpeggio partsdef arp_d_2
play_pattern_timed [:d4,:fs4,:b4,:cs5,:fs5,:fs4,:b4,:cs5],[0.5], amp:0.5
play_pattern_timed [:e5,:fs4,:b4,:cs5,:fs5,:fs4,:b4,:cs5],[0.5], amp:0.5enddef arp_fs_2
play_pattern_timed [:cs4,:e4,:b4,:cs5,:fs5,:fs4,:b4,:cs5],[0.5], amp:0.5
play_pattern_timed [:e5,:fs4,:b4,:cs5,:fs5,:fs4,:b4,:cs5],[0.5], amp:0.5end# bass partsdef bass_d
play :d2, release:1.5
sleep 1.5
play :d2, release:1.5
sleep 1.5
play :a2
sleep 0.5
play :d3
sleep 0.5enddef bass_fs_2
play :fs2, release:1.5
sleep 1.5
play :fs2, release:1.5
sleep 1.5
play :cs3
sleep 0.5
play :fs3
sleep 0.5
play :fs2, release:1.5
sleep 1.5
play :fs2, release:1.5
sleep 1.5
play :e2
sleep 1enddef bass_cs_2
play :cs2, release:1.5
sleep 1.5
play :cs2, release:1.5
sleep 1.5
play :gs2
sleep 0.5
play :cs3
sleep 0.5
play :cs2, release:1.5
sleep 1.5
play :cs2, release:1.5
sleep 1.5
play :gs2
sleep 1enddef bass_e
play :e2, release:1.5
sleep 1.5
play :e2, release:1.5
sleep 1.5
play :b2
sleep 0.5
play :e3
sleep 0.5end# Workspace
live_loop :arp do# intro
arp_d_2
arp_d_2
# bass and drums enter
arp_d_2
arp_fs_2
# all instruments
loop do
arp_d_2
arp_fs_2
endendlive_loop :bass do
sleep 16
bass_d
bass_d
bass_fs_2
# start melody
bass_d
bass_d
bass_cs_2
bass_d
bass_d
bass_fs_2
bass_d
bass_d
bass_cs_2
bass_d
bass_e
bass_fs_2
endlive_loop :kick_drum do
sleep 16
loop do
sample :drum_tom_lo_soft, rate:0.5
sleep 0.75
sample :drum_tom_lo_soft
sleep 0.75
sample :drum_tom_lo_soft
sleep 1
sample :drum_tom_lo_soft
sleep 1.5endendlive_loop :snare_drum do
sleep 16
loop do
sleep 1
sample :drum_tom_hi_soft
sleep 1endendlive_loop :melody do
use_synth :prophet
sleep 32# bar 1, 2
play_legato_note :gs4,0.75
play_legato_note :gs4,0.75
play_legato_note :fs4,0.5
play_legato_note :fs4,3.5
play_legato_note :fs4,0.25
play_legato_note :gs4,0.25
play_legato_note :a4,0.75
play_legato_note :b4,0.75
play_legato_note :a4,0.25
play_legato_note :gs4,0.25# bar 3, 4
play_legato_note :fs4,0.75
play_legato_note :fs4,0.75
play_legato_note :e4,0.5
play_legato_note :e4,5.5# pre-measure 1
play_legato_note :cs4,0.5# bar 5,6
play_legato_note :gs4,0.75
play_legato_note :gs4,0.75
play_legato_note :fs4,0.5
play_legato_note :fs4,3
sleep 0.5
play_legato_note :fs4,0.5
play_legato_note :gs4,0.75
play_legato_note :a4,0.75
play_legato_note :b4,0.5
play_legato_note :b4,0.75
play_legato_note :cs5,0.75
play_legato_note :cs5,3.5
sleep 0.5
play_legato_note :cs5,0.5
play_legato_note :e5,0.75
play_legato_note :cs5,0.75
play_legato_note :a4,5.25
sleep 0.75
play_legato_note :a4,0.5
play_legato_note :fs4,1
play_legato_note :cs5,1#
play_legato_note :b4,0.75
play_legato_note :cs5,0.75
play_legato_note :gs4,1.5
play_legato_note :fs4,0.5
play_legato_note :e4,3
sleep 1
play_legato_note :e4,0.5#
play_legato_note :fs4,0.5
play_legato_note :a3,0.5
play_legato_note :d4,0.5
play_legato_note :e4,0.5
play_legato_note :fs4,0.75
play_legato_note :gs4,0.75
play_legato_note :a4,0.5#
play_legato_note :gs4,0.5
play_legato_note :b3,0.5
play_legato_note :e4,0.5
play_legato_note :fs4,0.5
play_legato_note :gs4,0.75
play_legato_note :a4,0.75
play_legato_note :gs4,0.5#
play_legato_note :gs4,3
play_legato_note :gs4,0.5
play_legato_note :fs4,0.5#
play_legato_note :fs4,4end
2 - آهنگ بازی Super Mario :
comment do# transcribed from the MML notation here: http://www.mmlshare.com/tracks/view/403## Sonic Pi currently has a size limit of about 9k which is a known issue (#102).# I've kept the comments up here to get around that as comment blocks don't get# sent to the interpreter. Some of the layout here is an exercise in reducing bytes.# I'm using Ruby's stabby lambda syntax ( -> { ... } ) in case you want to google it :)## THIS HAS ONLY BEEN TESTED ON A MAC - on an RaspberryPi you might want to change it to# use_bpm 60## Regarding the choice of an FM synth for drums:# You could use a noise synth here, but I think the NES sound# chip would have used something like this FM as the character# of the noise would change with different notes which I'm making# use of in drum_pattern_bend
use_debug false# help RPi performance
use_bpm 100
use_synth :pulse
use_synth_defaults release:0.2, mod_rate:5, amp:0.6
define :structure do|i,a,b,c,d|1.times{ i.call }
loop do2.times{ a.call }2.times{ b.call }1.times{ c.call }2.times{ a.call }2.times{ d.call }1.times{ c.call }1.times{ d.call }endendin_thread do
intro =->{ play_pattern_timed([:e5,:e5,nil,:e5,nil,:c5,:e5,nil,:g5,nil,nil,nil,nil,nil,nil,nil],[0.25])}
theme_a =->{
play_pattern_timed([:c5,nil,nil,:g4,nil,nil,:e4,nil,nil,:a4,nil,:b4,nil,:Bb4,:a4,nil],[0.25])
play_pattern_timed([:g4,:e5,:g5],[1/3.0])# minim triplets
play_pattern_timed([:a5,nil,:f5,:g5,nil,:e5,nil,:c5,:d5,:b4,nil,nil],[0.25])}
theme_b =->{
play_pattern_timed([nil,nil,:g5,:fs5,:f5,:ds5,nil,:e5,nil,:gs4,:a4,:c5,nil,:a4,:c5,:d5,nil,nil,:g5,:fs5,:f5,:ds5,nil,:e5,nil,:c6,nil,:c6,:c6,nil,nil,nil,nil,nil,:g5,:fs5,:f5,:ds5,nil,:e5,nil,:gs4,:a4,:c5,nil,:a4,:c5,:d5,nil,nil,:ds5,nil,nil,:d5,nil,nil,:c5,nil,nil,nil,nil,nil,nil,nil],[0.25])}
theme_c =->{
play_pattern_timed([:c5,:c5,nil,:c5,nil,:c5,:d5,nil,:e5,:c5,nil,:a4,:g4,nil,nil,nil,:c5,:c5,nil,:c5,nil,:c5,:d5,:e5,nil,nil,nil,nil,nil,nil,nil,nil,:c5,:c5,nil,:c5,nil,:c5,:d5,nil,:e5,:c5,nil,:a4,:g4,nil,nil,nil,:e5,:e5,nil,:e5,nil,:c5,:e5,nil,:g5,nil,nil,nil,nil,nil,nil,nil],[0.25])}
theme_d =->{
play_pattern_timed([:e5,:c5,nil,:g4,nil,nil,:gs4,nil,:a4,:f5,nil,:f5,:a4,nil,nil,nil],[0.25])
play_pattern_timed([:b4,:a5,:a5,:a5,:g5,:f5],[1/3.0])
play_pattern_timed([:e5,:c5,nil,:a4,:g4,nil,nil,nil],[0.25])
play_pattern_timed([:e5,:c5,nil,:g4,nil,nil,:gs4,nil,:a4,:f5,nil,:f5,:a4,nil,nil,nil,:b4,:f5,nil,:f5],[0.25])
play_pattern_timed([:f5,:e5,:d5],[1/3.0])
play_pattern_timed([:g5,:e5,nil,:e5,:c5,nil,nil,nil],[0.25])}
structure(intro, theme_a, theme_b, theme_c, theme_d)endin_thread do
intro =->{ play_pattern_timed([:fs4,:fs4,nil,:fs4,nil,:fs4,:fs4,nil,:b4,nil,nil,nil,:g4,nil,nil,nil],[0.25])}
theme_a =->{
play_pattern_timed([:e4,nil,nil,:c4,nil,nil,:g3,nil,nil,:c4,nil,:d4,nil,:Db4,:c4,nil],[0.25])
play_pattern_timed([:c4,:g4,:b4],[1/3.0])
play_pattern_timed([:c5,nil,:a4,:b4,nil,:a4,nil,:e4,:f4,:d4,nil,nil],[0.25])}
theme_b =->{
play_pattern_timed([nil,nil,:e5,:ds5,:d5,:b4,nil,:c5,nil,:e4,:f4,:g4,nil,:c4,:e4,:f4,nil,nil,:e5,:ds5,:d5,:b4,nil,:c5,nil,:f5,nil,:f5,:f5,nil,nil,nil,nil,nil,:e5,:ds5,:d5,:b4,nil,:c5,nil,:e4,:f4,:g4,nil,:c4,:e4,:f4,nil,nil,:gs4,nil,nil,:f4,nil,nil,:e4,nil,nil,nil,nil,nil,nil,nil],[0.25])}
theme_c =->{
play_pattern_timed([:gs4,:gs4,nil,:gs4,nil,:gs4,:as4,nil,:g4,:e4,nil,:e4,:c4,nil,nil,nil,:gs4,:gs4,nil,:gs4,nil,:gs4,:as4,:g4,nil,nil,nil,nil,nil,nil,nil,nil,:gs4,:gs4,nil,:gs4,nil,:gs4,:as4,nil,:g4,:e4,nil,:e4,:c4,nil,nil,nil,:fs4,:fs4,nil,:fs4,nil,:fs4,:fs4,nil,:b4,nil,nil,nil,:g4,nil,nil,nil],[0.25])}
theme_d =->{
play_pattern_timed([:c5,:a4,nil,:e4,nil,nil,:e4,nil,:f4,:c5,nil,:c5,:f4,nil,nil,nil],[0.25])
play_pattern_timed([:g4,:f5,:f5,:f5,:e5,:d5],[1/3.0])
play_pattern_timed([:c5,:a4,nil,:f4,:e4,nil,nil,nil],[0.25])
play_pattern_timed([:c5,:a4,nil,:e4,nil,nil,:e4,nil,:f4,:c5,nil,:c5,:f4,nil,nil,nil,:g4,:d5,nil,:d5],[0.25])
play_pattern_timed([:d5,:c5,:b4],[1/3.0])
play_pattern_timed([:c5,nil,nil,nil,nil,nil,nil,nil],[0.25])}
structure(intro, theme_a, theme_b, theme_c, theme_d)endin_thread do
use_synth :tri
use_synth_defaults attack:0, sustain:0.1, decay:0.1, release:0.1, amp:0.4
intro =->{ play_pattern_timed([:D4,:D4,nil,:D4,nil,:D4,:D4,nil,:G3,nil,nil,nil,:G4,nil,nil,nil],[0.25])}
theme_a =->{
play_pattern_timed([:G4,nil,nil,:E4,nil,nil,:C4,nil,nil,:F4,nil,:G4,nil,:Gb4,:F4,nil],[0.25])
play_pattern_timed([:E4,:C4,:E4],[1/3.0])
play_pattern_timed([:F4,nil,:D4,:E4,nil,:C4,nil,:A3,:B3,:G3,nil,nil],[0.25])}
theme_b =->{
play_pattern_timed([:C3,nil,nil,:G3,nil,nil,:C3,nil,:F3,nil,nil,:C3,:C3,nil,:F3,nil,:C3,nil,nil,:E3,nil,nil,:G3,:C3,nil,:G2,nil,:G2,:G2,nil,:G4,nil,:C3,nil,nil,:G3,nil,nil,:C3,nil,:F3,nil,nil,:C3,:C3,nil,:F3,nil,:C3,nil,:Ab3,nil,nil,:Bb3,nil,nil,:C3,nil,nil,:G2,:G2,nil,:C3,nil],[0.25])}
theme_c =->{3.times{
play_pattern_timed([:gs4,nil,nil,:ds4,nil,nil,:gs4,nil,:g4,nil,nil,:c4,nil,nil,:g4,nil],[0.25])}
play_pattern_timed([:D4,:D4,nil,:D4,nil,:D4,:D4,nil,:G3,nil,nil,nil,:G4,nil,nil,nil],[0.25])}
theme_d =->{
play_pattern_timed([:C3,nil,nil,:fs3,:g3,nil,:C3,nil,:F3,nil,:F3,nil,:C3,:C3,:F3,nil,:D3,nil,nil,:F3,:G3,nil,:B3,nil,:G3,nil,:G3,nil,:C3,:C3,:G3,nil,:C3,nil,nil,:fs3,:g3,nil,:C3,nil,:F3,nil,:F3,nil,:C3,:C3,:F3,nil,:G3,nil,nil,:G3],[0.25])
play_pattern_timed([:G3,:A3,:B3],[1/3.0])
play_pattern_timed([:C4,nil,:G3,nil,:C4,nil,nil,nil],[0.25])}
structure(intro, theme_a, theme_b, theme_c, theme_d)endin_thread do
use_synth :fm
use_synth_defaults divisor:1.6666, attack:0.0, depth:1500, sustain:0.05, release:0.0
ll =->{ play :a, sustain:0.1; sleep 0.75}
l =->{ play :a, sustain:0.1; sleep 0.5}
s =->{ play :a; sleep 0.25}
define :drum_pattern_a do[l,s,l,s,l,ll,l,s,s,s].map(&:call)end
define :drum_pattern_b do
play :b
sleep 0.5
play :a6
sleep 0.3
play :a7
sleep 0.2
play :a, sustain:0.1
sleep 0.5
play :a6
sleep 0.3
play :a7
sleep 0.2end
define :drum_pattern_c do[ll,s,l,l].map(&:call)end
with_fx :level, amp:0.5do1.times{ drum_pattern_a }
loop do24.times{ drum_pattern_b }4.times{ drum_pattern_a }8.times{ drum_pattern_b }16.times{ drum_pattern_c }4.times{ drum_pattern_a }8.times{ drum_pattern_b }endendend
3 - یه آهنگ دیگه (اینم از گیت هاب گرفتم ):
# Daft punk with code - Something about us# Coded by @luiscript with Sonic Pi# If you enjoy PLEASE# like | follow | suscribe | star# facebook.com/luiscript# twitter.com/luiscript# youtube.com/user/luiscript# github.com/luiscript# Also consider support Sam Aaron on Patreon# patreon.com/samaaron
use_bpm 100
use_debug falsedefine :pianoMelody do
use_synth :piano
use_synth_defaults amp:2, release:4
play [:f2,:a2,:d3]
sleep 4
play [:g2,:a2,:c3]
sleep 4
play [:a2,:c3,:e3]
sleep 4
play [:g2,:b2,:d3]
sleep 4
play [:f2,:a2,:d3]
sleep 4
play [:g2,:a2,:cs3]
sleep 4
play [:a2,:d3,:g3]
sleep 4
play [:a2,:d3,:f3]
sleep 4enddefine :synth1 do
use_synth :saw
use_synth_defaults release:0.25
sleep 0.5
play :d2
sleep 0.75
play :f2
sleep 0.75
play :d2
sleep 1
play :f2
sleep 0.5
play :a1
sleep 0.25
play :c2
sleep 0.75
play :d2
sleep 0.75
play :f2
sleep 0.75
play :d2
sleep 1
play :f2, release:0.75
sleep 0.75
play :g2
sleep 0.25enddefine :synth2 do
use_synth :pluck
use_synth_defaults amp:0.8
play :d3, release:1
sleep 1
play :e3, release:1
sleep 0.75
play :f3, release:1.125
sleep 2.25
play [:c3,:e3], release:1
sleep 1
play [:d3,:f3], release:1
sleep 0.75
play [:e3,:g3], release:1.125
sleep 2.25
play [:d3,:f3], release:1
sleep 1
play [:e3,:g3], release:1.125
sleep 0.75
play [:f3,:a3], release:1.125
sleep 2.25
play [:f3,:a3], release:0.25
sleep 0.25
play [:e3,:g3], release:0.5
sleep 0.5
play [:e3,:g3], release:0.5
sleep 0.5
play [:d3,:f3], release:0.5
sleep 0.5
play [:d3,:f3], release:1.5
sleep 2.25enddefine :bassDrum do
sample :bd_fat, amp:2
sleep 1enddefine :hiHat do
sleep 0.5
sample :drum_cymbal_pedal
sleep 0.5enddefine :snare do
sleep 1
sample :sn_zome, amp:0.5
sleep 1endlive_loop :somethingAboutUs do3.timesdo
with_fx :lpf, cutoff:80do
pianoMelody
endend
with_fx :reverb do2.timesdo
synth2
endend
sample :daftVoice, amp:0.8
sleep 64
with_fx :lpf, cutoff:80do
pianoMelody
end
sample :daftSynth, amp:0.7
sleep 96
stop
endwith_fx :bitcrusher do
live_loop :synth, delay:32do24.timesdo
synth1
end
stop
endendlive_loop :bassSample, delay:32do18.timesdo
sample :saub
sleep 16end
stop
endlive_loop :drum, delay:32do128.timesdo
bassDrum
end
sleep 16142.timesdo
bassDrum
end
stop
endlive_loop :hh, delay:48do112.timesdo
hiHat
end
sleep 16142.timesdo
hiHat
end
stop
endlive_loop :sn, delay:48do56.timesdo
snare
end
sleep 1671.timesdo
snare
end
stop
end
4 - و اینم آهنگ معروف still dre همینجوری خودم زدم :
live_loop :chord do
use_synth :piano
sample :bd_haus
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :C5
play :E5
play :A5
sleep 0.3
play :C5
play :E5
play :A5
sleep 0.3
sample :bd_haus
play :B4
play :E5
play :A5
sleep 0.3
play :B4
play :E5
play :A5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :B4
play :E5
play :A5
sleep 0.3
play :B4
play :E5
play :G5
sleep 0.3
sample :bd_haus
play :B4
play :E5
play :G5
sleep 0.3
play :B4
play :E5
play :G5
sleep 0.3
sample :bd_haus
sample :drum_snare_hard
play :B4
play :E5
play :G5
sleep 0.3
play :B4
play :E5
play :G5
sleep 0.3end
خب تمام این سورس ها رو میتونید خودتون برنامشو نصب کنید و اجرا کنید و تست کنید ، تغییرشون بدید و آهنگ های جدید بسازید . در کل اگه وقت بزاری براش آهنگ های خوبی میشه باهاش درآورد . از این به بعد هر دفعه ای یه سری ملودی با این میسازم میزارم .
ولی خب این میتونه یه امکان فوق العاده برای یک برنامه نویس باشه . فرض کنید بعضی از صدا ها و آهنگ های نرم افزارتون رو خودتون بسازید !
میدونید اعداد مرسن چی هستند ؟ یه رابطه ای داریم : Mn=2n-1 . هر عدد اولی که از طریق این رابطه بدست بیاد رو بهش میگن عدد مرسن . کلا این رابطه پتانسیل اینو داره که عدد اول تولید کنه . مثلا اگه به جای n عدد 2 رو بزاریم ، جواب میشه : 3 که یک عدد اوله
یا مثلا به جای n عدد 3 رو بزاریم جواب میشه 7 که یک عدد اوله .
البته این رابطه به ازای همه ی اعداد برای n عدد اول تولید نمیکنه . مثلا به جای n عدد 4 بزاریم عدد 15 تولید میشه که اول نیست .
نکته ای که رابطه مرسن داره اینه که هرچی عدد n افزایش پیدا میکنه ، شانس این که عدد اول بدست بیاد کمتر میشه .
خب میدونیم که بینهایت عدد اول وجود داره ولی خب میخوام بزرگترین عدد اولی که با استفاده از رابطه مرسن شناخته شده رو بهتون معرفی کنم . گفته شده این عدد حدودا 30 روز طول کشیده تا شناخته بشه (توسط محاسبات شبانه روزی یک کامپیوتر ) و از طریق همین رابطه ی مرسن هم بدست اومده .
چون طول عدد خیلی بزرگه نمیتونم اینجا کپی پیست کنم . بنابراین لینک دانلود فایلش از سایت رسمی مرسن رو براتون میزارم که داخل یه فایل متنی نوشته شده (البته زیپ شده) :
راستی :) میگن همین سایت مرسن جایزه 100 هزار دلاری گذاشته برای نفر بعدی که یه عدد اول بعد از این عدد که شناخته شده رو کشف کنه (با استفاده از رابطه مرسن)