Improvisation for Python
# coding: utf-8
import random
from math import floor
from threading import Thread
from time import sleep, time
import numpy as np
from pyaudio import paFloat32, PyAudio
durationsec = 1.5
intervalsec = 0.25
volume = 1
samplerate = 48000
samplenum = round(samplerate*durationsec)
frequency = np.tile([288, 289], samplenum) #D4が左では288hz、右では289hz
wave = np.arange(samplenum).repeat(2)*np.pi*2/samplerate*frequency
amplitude = np.logspace(1, 0, samplenum).repeat(2)*volume/frequency
parts = [2, 1/2]
tunings = [3/2, (3/2)/(81/80)**(1/4)] #ピタゴラス音律と1/4コンマ中全音律
meantuning = np.sqrt(np.prod(tunings))
distance = meantuning/min(tunings)
key = 0
tonerange = 0
kwargs = {
'format': paFloat32, 'channels': 2, 'rate': samplerate, 'output': True}
def play(pitch):
sinewave = np.sin(wave*pitch)*amplitude/pitch
PyAudio().open(**kwargs).write(sinewave.astype(np.float32).tobytes())
while True:
fifth = meantuning*distance**np.cos(time()*np.pi/1800) #時刻によって調律が変化する
note = fifth**round(key+random.uniform(-3, 3))
tone = note/2**floor(np.log2(note)-np.sin(tonerange*np.pi/6))
Thread(target=play, args=(tone*random.choice(parts),)).start()
key += random.uniform(-1, 1) #+1がシャープ1個、-1がフラット1個
tonerange += random.uniform(-1, 1)
sleep(intervalsec)
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «Improvisation for Python», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.