SEARCH
banner the journal
CATEGORIES
CALENDAR
Mart 2021
P S Ç P C C P
1234567
891011121314
15161718192021
22232425262728
293031  
Text Widget

Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum.

About Us
In condimentum facilis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci acerty euismod semper, magna diamert porttitor mauris, quis sollicitudin sapien justo in libero. Mei iriure dignissim ad, prompta.
Blog Kodlama

Ses (3) : La’yı Üreten Grammy de Alır

By
on
2 Ekim 2018

Bir önceki Ses (2) : Abracadabra yazısında sadece matematiksel fonksiyonları kullanarak herhangi bir enstrüman veya ses üreteci olmadan La sesini (4. oktavdaki A4 sesi) üretmiştik. Bir notayı üreten, bir çok notayı, o halde bir şarkıyı üretebilir. Şarkıyı üreten de Grammy ödülünü kapar.

Yiğitcan Akçelik’in ses ve müzik bilgisi ile yan yana gelince aşağıdaki tek sesli müzik üreteci yazılımı ortaya çıktı.

 


import numpy as np
import matplotlib.pyplot as plt
import wave
import struct

sample        = int(48000/8)
sampling_rate = 48000.0
pi            = 22/7
amplitude     = 16000
channel       = 1
data_size     = 2
song_name     = input('Şarkının adını giriniz: ')
song          = input("Şarkının notalarını giriniz: ")
i             = 0
x             = len(song)

sound_file = wave.open(f'{song_name}.wav', 'w')
sound_file.setparams(( channel,
data_size,
int(sampling_rate),
sample,
'NONE',
'not compressed' ))

frekans = {'C':65.41,'C#':69.30,'D':73.42,'D#':77.78,'E':82.41,'F':87.31,'F#':92.50,'G':98.00,'G#':103.83,'A':110.00,'A#':116.54,'B':123.47}

while (i<x):
j=1
if song[i+1]=='#':
note = song[i:i+2]
j=2
else:
note = song[i]

octave = 2**(int(song[i+j])-1)
beat   = int(song[i+j+1])

print(note)
wave = [ np.sin( 2 * pi * octave*frekans[note] * x/sampling_rate) for x in range(12000*beat) ]

for s in wave:
sound_file.writeframes(struct.pack('h', int(s * amplitude)))
i = i+j+2

sound_file.close()

TAGS
RELATED POSTS

LEAVE A COMMENT