이 글은 <원주율 음악 만들기: 소스코드, 결론>, <황금비 음악 만들기: 소스코드, 결론> 의 연재글입니다.
피보나치수열 음악은 이렇게 만듭니다.
파이썬 소스코드 (파이썬 3 입니다.)
import random
n_last = 100 # 피보나치수열 갯수
file2 = open("pibonachi_write.txt", "w")
#초기값 설정
data2 = "MML@t120"
file2.write(data2)
def fibo(n):
_curr, _next = 0, 1
for _ in range(n):
_curr, _next = _next, _curr + _next
return _curr
for i in range(1, n_last) :
fibo_num = fibo(i)
# print(fibo_num)
# data1 = round(fibo_num*10**(1-i))%10
data1 = fibo_num % 10
# print(data1)
while( fibo_num >= 10 ) :
data1 = fibo_num // 10
fibo_num = data1
data1 = fibo_num % 10
# print(data1)
if data1 == 0 :
data2 = "o3g#"
elif data1 == 1 :
data2 = "o3a"
elif data1 == 2:
data2 = "o3b"
elif data1 == 3 :
data2 = "o4c"
elif data1 == 4 :
data2 = "o4d"
elif data1 == 5:
data2 = "o4e"
elif data1 == 6:
data2 = "o4f"
elif data1 == 7 :
data2 = "o4g#"
elif data1 == 8 :
data2 = "o4a"
elif data1 == 9 :
data2 = "o4b"
file2.write(data2)
j = random.randint(1,24)
if 1 < j < 12 :
data3 = ""
elif 12 < j < 19 :
data3 = "8"
elif j == 20 :
data3 = "2"
elif 20 < j < 23 :
data3 = "."
elif j == 24:
data3 = "8."
else :
data3 = ""
file2.write(data3)
file2.close()
이번에는 10진수로 된 피보나치수열 수치가 들어 있는 부분이 없습니다.
대신 fibo 함수로 피보나치수열 수치를 만듭니다. 함수 내부에서 만들어지는 값이므로 숫자값이고,
그래서 if문에는 문자열 자료형이 아닌 숫자 자료형을 가지고 비교를 하게 됩니다.
문제는 fibo 함수는 반복할수록 계속 값이 커지게 되는데, 그래서 i = 8~10 정도가 되면 fibo에서 return하는 값이 10 이상인 값이 됩니다.
음악으로 맵핑할 값은 0부터 9까지 이므로, 10이 넘는 값이 들어오면 1자리수씩 짤라줘야 합니다.
그래서 이를 위한 while 문을 하나 더 만들고, 10으로 나눠서 몫과 나머지를 활용하여
if문을 돌려서 MML 음악을 맵핑, 구현해야 합니다.
이 부분의 프로그래밍 구현이 기존 원주율 음악 소스코드와 가장 큰 차이점이라 할 수 있습니다.
그 이외의 부분은 원주율 음악과 대동소이하니 별도로 설명하지 않겠습니다.
참고: 컴퓨터 프로그래밍을 통해 자동으로 생성된 음악이므로, 해당 음악에서 별도의 저작권은 없습니다.
'Youtube(Y)' 카테고리의 다른 글
무한소수 음악: 소스코드 해설, 제작과정 빨리감기 풀영상 (12) | 2022.08.07 |
---|---|
피보나치수열 음악 만들기: 소스코드, 결론 (18) | 2022.08.06 |
황금비 음악 만들기: 소스코드, 결론 (15) | 2022.08.02 |
원주율 음악 만들기: 소스코드, 결론 (18) | 2022.07.30 |
조아하자넷 오프린트미 A5 전단 제작 과정 (2) | 2022.05.08 |
유튜브 동영상 만들기 #3 - 우분투 동영상 편집 (4) | 2022.05.01 |
포스팅 잘 보고 갑니다ㅎㅎ
감사합니다!
파이썬 같이 프로그래밍 언어도 배워보고 싶은데 엄두가 안나네요...ㅎㅎ 잘 보고 갑니다!
좋은 평가 감사합니다.
포스팅 잘 보고 갑니다. 피보나치 수열을 이용한 음악을 파이썬으로 작성하시다니 인상적입니다!
좋은 평가 감사합니다.
포스팅 잘보고갑니다 조아하자님 ㅎㅎㅎ ^_^ 행복한 주말 되셔용 ~~!!
댓글 감사합니다!
포스팅 잘보고 가요~
피보나치의 수열 오랜만에 생각나네요 ㅎㅎㅎ
즐거운 주말되세요~
네 댓글 감사합니다!
오늘도 유용한 포스팅 잘읽어보고 갑니다👍👍 좋은하루 보내세요!!
댓글 감사합니다 🥰
파이썬으로 노래도 할 수 있었나요?? ㅎㅎㅎ
파이썬의 한계는 어디까지일지 궁금합니다.
글 잘보고 갑니다 :)
기술적인 부분을 조금 더 자세히 설명드리면 파이썬으로 보컬을 녹음해서 넣는 건 아직 어렵습니다. 구글 등에서 제공하는 인공지능 API를 활용한다 쳐도 AI 음성이 음악의 음계까지 정확히 인식해서 노래를 부를 정도의 능력은 아직 안됩니다. 다만, 위의 동영상과 같은 방식의 연주곡이라면 파이썬으로 제작이 가능합니다.
정말 잘보고 갑니다 좋아요 누르고 가요 ㅎㅎ
댓글 감사합니다.
대단하십니다. 저는 좀 어렵내요.
칭찬 감사합니다 🥰