View Single Post
Old 06-14-2018, 03:20 PM   #5
eugen2777
Human being with feelings
 
eugen2777's Avatar
 
Join Date: Aug 2012
Posts: 271
Default

mpl
Some info in this tread - #23 - 24.

Min-max peak-samples contain information information about the minimum and maximum for this peak time range. It can be used for drawing waveform and some other.

Extra peaks as far as I understand, have some information about the prevailing frequency (based on the fft ???).
This is not a tone detector!) - but you can use it for certain situations.

Example
https://stash.reaper.fm/33751/GetTakePeaks111.png

================================================== =
Короче, на русском могу объяснить гораздо проще и понятнее... и подробнее.
Сразу говорю - все примеры, названия для простоты! peak sample - назову просто пик.
К примеру, мы имеем 10 секунд сигнала с семплрейтом = 44100.
Разобьем на 1000 частей. На каждую часть прийдется (44100 * 10) / 1000 = 441 значение.
Для каждой из 1000 частей из 441 значения найдем максимум и минимум.
Это и есть те самые "maximums, minimums".

Использую их можно отобразить форму волны(недопилено - https://forum.cockos.com/showthread.php?t=175701&page=2)
Свой пример опять вставил не из забавы, дело в другом - он на Lua, и туда в легкую час аудио грузится, зумится, перематывается во все стороны практически незаметно. Ф-я работает очень быстро и в Lua, если цеплять блоками. Функция ведь на блоки, в основном и рассчитана. Цеплять один пик, следом другой и тд это.... не то, очень мягко говоря.
Еще момент по параметрам - в примере с отрисовкой, допустим, всегда нужно кол-во блоков, соответ. ширине экрана, что на час аудио, что на 5 сек.
То есть там подстраивать нужно peakrate. Это наиболее выгодно, плюс удобно потом все считать.
Но функцию также можно использовать и для всяких других задач, вопрос фантазии.
--------------
По поводу extra :
побитовое "&" - extra & 0x7fff - это дает младшие 15 бит - частоту.
битовый сдиг ">>" - extra >> 15 - дает следующие 14 бит - tonality.
14-битное целое число может принимать значения - 0 ... 16383, всего 16384.
(extra >> 15) / 16384 - дает нормализованное значение - 0 ... 1.

Частота - по моим тестам - это преобладающая на соответствующем конкретному пику участке времени частота, надо еще проверить.
tonality - насколько понял из поста Джастина - нечто типа "веса". Это похоже на макс. бин и fft - только предположение.
И по тестом что-то подобное... То есть, частота таким методом легко находится когда сигнал простой и не оч. низкий.
Но, по памяти - там есть опр. разрешение по времени вроде. И по нотам на низких - там разрешение в 1 герц - это дохрена - понятно и так.


peakrate - частота, отбора пиков - чем выше, тем меньше семплов приходится на один пик. когда peakrate = srate на 1 пик приходится один семпл.
starttime - врем. позиция, с которой берется блок пиков.
numchannels - это ясно
numsamplesperchannel - кол-во пиков, размер того тот самого блока
want_extra_type - расписано в док.
reaper.array buf - массив для пиков. Его длину нужно посчитать исходя из пред. параметров.

В массиве по итогу будет несколько "частей" - пример для двух каналов.
maximums,
1Lmax
1Rmax
2Lmax
2Rmax
...
NLmax
NRmax
=======
minimums,
1Lmin
1Rmin
2Lmin
2Rmin
...
NLmin
NRmin
=======
extra(если указано в параметрах)
1ext
2ext
__________________
ReaScripts

Last edited by eugen2777; 06-14-2018 at 07:57 PM.
eugen2777 is offline   Reply With Quote