Войти
ПрограммированиеФорумЗвук

Программирование звука музыкальных инструментов (17 стр)

Страницы: 114 15 16 17 18 19 Следующая »
#240
20:07, 10 авг. 2017

sti-hi
> взял массив 5000 и заполнил его 1000 раз значениями по алгоритму звуков рояля,
> тому самому, который мы обсуждали.
> Времени на это потребовалось 22 секунды. То есть частота генерации семплов, без
> записи их в звуковой файл составила около 230 тысяч в секунду, что в 5.15 раз
> быстрее скорости раздачи 44100 семп/сек.
Повторил на VB6 - 3.21 сек., процессор Core2 2.13 МГц.
А Turbo Basic, на сколько помню, даже когда был актуален, во времена DOS, сильно уступал тому же QuickBasic, а в наше время код реального режима вообще работает в песочнице, которая наверняка ещё тормозит.


#241
20:08, 10 авг. 2017

sti-hi
> Времени потребовалось 67 секунд. То есть семпл записывается в 3 раза медленнее,
> чем создаётся.
> Это моно запись, кстати. Не знаю. как со стерео.
А пишется в файл на VB6 вообще практически мгновенно.

#242
20:19, 10 авг. 2017

FordPerfect
> Вот пример быстрого синуса (итеративного):
Тут, к сожалению, итеративный не подойдёт под один из четырёх использованных в алгоритме синусов..

#243
20:37, 10 авг. 2017

Михаил, поделись кодом своего теста на Визуал Бейсике, желательно с выводом в файл, а то я не знаю, как это делать.
Я работал в Визуал Бейсике 6, делал в нём электронные книги - http://yadi.sk/d/v4CjPaTe3LkZXD
Сейчас забросил это дело.
Но если скорость окажется действительно лучше, то вернусь к нему.
Дм.

#244
(Правка: 23:24) 23:05, 10 авг. 2017

sti-hi
> поделись кодом своего теста на Визуал Бейсике, желательно с выводом в файл
Вот: TestPianoSpeed
Опциональный вывод в стерео файл, только я сделал не 1000 раз по 5000, а 100 раз по 50000, чтобы ноты были длиннее.
На i5-2400 (3200 МГц) без записи в файл 1.84 сек., с записью 1.94 сек.

#245
0:17, 11 авг. 2017

Спасибо. Визуал Бейсик работает действительно быстрее - массив 5000 1000 раз он заполнил за 18 сек, работая в своей среде, и за 12 сек в откомпилированном виде. То есть выигрыш в 2 раза по скорости в сравнении с Турбо Бейсиком с его 22 секундами.
Немного неудобно будет вносить изменения в программу и отлаживать её, но озвучивание пойдёт быстрее.
Попробую.
Дм.

#246
0:20, 11 авг. 2017

sti-hi
> Немного неудобно будет вносить изменения в программу и отлаживать её
В чём же неудобства? Уж что-что, отладчик в VB6 лучше однозначно.

#247
1:27, 11 авг. 2017

В Бейсике отладка простая - в подозрительном месте ставлю Принт и Стоп, и смотрю на значения переменных, которые Принт на экран выводит.
Что-то у меня wav файл в результате не появляется. Наверное нет той библиотеки, которая нужна. Вот почему я не люблю все эти продвинутые языки - всегда к ним чего-нибудь недостаёт. Бейсик тупо прост - с ним просто и работать. А когда возможностей много, никогда не знаешь, какую кнопочку нажать. В Бейсике тоже есть программа будто-бы отладки, но её ещё и изучать надо. ))
А Принт и Стоп меня никогда не подводили.

#248
(Правка: 8:48) 8:47, 11 авг. 2017

sti-hi
> Что-то у меня wav файл в результате не появляется. Наверное нет той библиотеки, которая нужна.
Та нет никаких зависимостей от библиотек, пока ты сам их не подключишь. Возможно ты запускаешь проект прямо из архива или с другой текущей папкой (посмотри рабочую папку у ярлыка VB6, если открываешь проект через меню среды, лучше открывать проекты через проводник, даблкликом по .vbp файлу, тогда текущей будет всегда папка проекта). Когда запускаешь мой скомпилированный EXE, WAV-файл появляется? Попробуй заменить имя файла на полное, типа:

fName = "C:\Sound\Test.wav"
Естественно папка должна быть существующая.
Stop в VB6 тоже есть и так же работает, а можно вообще на полях слева от текста поставить мышкой точку останова.
Для отладки вместо Print имеется Debug.Print, работает так же, только выводит текст в Immediate Window, если его не видно, покажи его через меню View в среде VB6. Во время останова можно прямо в этом окне печатать запросы, например, набери:
? Freq
Нажми Enter и увидишь значение переменной Freq. А можно во время останова просто навести мышь на любую переменную в тексте программы, и увидишь её текущее значение.
Я не агитирую именно за VB6, он тоже устарел, но, по крайней мере его код нативный в Win32, с Win64 он тоже совместим и не становится медленнее, а перейти после TB проще всего именно на него.
Предлагаю дальше тут не офтопить обсуждением языков, на вопросы о VB6 могу отвечать в ЛС.
#249
16:54, 11 авг. 2017
var f=64*pow(2,10*(A-0.5));

var dB=function(x) {return pow(10,x/2);};

var a=1; // Attack
a=min(pow(100*t,2),1);
a*=min(20*t,1);

a*=exp(-0.5*t); //Release

var y=0;
var phase=2*pi*(25/8)*f*t;

var c=0;

c=dB(0)*sin(phase);
c+=dB((45.3-50.1)*(exp(0.5*t)-0.625+0.5)/2)*sin((852/410)*phase);
c+=dB((45.3-63)*(exp(1*t)-0.5))*sin((1408/410)*phase);
c+=dB((45.3-73.5)*(exp(2*t)-0.25))*sin((2067/410)*phase);

y=c;

var b=50*D;
y*=0.5*(0.5+(1-exp(-b*t))*sin(2*pi*f*t));

y*=a;


return y;
Как вам?
А то у меня уже заезжено.
#250
16:55, 11 авг. 2017

Целился в http://theremin.music.uiowa.edu/sound%20files/MIS/Piano_Other/pia… no.mf.C2.aiff ( http://theremin.music.uiowa.edu/MISpiano.html ).

#251
(Правка: 19:13) 19:10, 11 авг. 2017

FordPerfect
> Как вам?
> А то у меня уже заезжено.
Блин... что это? На мой слух - что-то среднее между голосом и колоколом. Но, как-то, не очень.
FordPerfect
> Целился в
Тут рояль, атака в первую очередь слышна.

#252
20:11, 14 авг. 2017

Моя 32к EXE демка на ЦЦ2017 почти готова, жаль, нельзя показывать до феста. Я в кои-то веки сделал конкурсную работу раньше времени, теперь осталось самое сложное - терпеть.
Больше никто участвовать так и не собрался?

#253
18:33, 26 авг. 2017

Вот моя демка на ЦЦ: https://yadi.sk/d/3iuA9uIh3MLzsa
И MP3 вариант: https://yadi.sk/d/SxwDQaaB3MLzsV
Показ только что прошёл, могу выкладывать.

#254
20:22, 29 авг. 2017

Первое место... правда из двух всего :)

Страницы: 114 15 16 17 18 19 Следующая »
ПрограммированиеФорумЗвук