SEARCH
banner the journal
CATEGORIES
RECENT POSTS
CALENDAR
Eylül 2021
P S Ç P C C P
 12345
6789101112
13141516171819
20212223242526
27282930  
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