#cpp #алгоритм #аудио #sfml #fft
У меня вопрос по БПФ звукового сигнала. Я хочу нарисовать график на основе звукового сигнала. Но я не силен в этой теме. Хочу совета у опытных товарищей с чего начать. У меня несколько вопросов: 1) Что такое samples (семплы)? Например при использовании мультимедийной библиотеки SFML для получения семплов используется следующая конструкция: sf::Buffer Buffer; Buffer.loadFromFile("sound.wav"); const sf::Int16 *input = Buffer.getSamples(); Так вот я так понимаю семплы это бинарное представление звукового файла? Я правильно понимаю, что вышепредставленный код, это тоже самое что и: typedef short int16; int16 *load() { FILE *fp; if((fp=fopen("sound.wav", "rb"))==NULL) { printf("Ошибка при открытии файла.\n"); } fseek(fp, 0, SEEK_END); long N = ftell(fp); fseek(fp, 0, SEEK_SET); int16 *A = new int16[N]; for(i=0; iОтветы
Ответ 1
Если речь идет о несжатом звуковом файле, то семпл - это отсчет, полученный при оцифровке сигнала, т.е. просто мгновенное значение амплитуды аналогового сигнала. По этим отсчетам можно построить вашу "синусойду", т.е. представление сигнала во временной области. БПФ же, это быстрое преобразование Фурье, выполнив его мы получаем отображение сигнала в частотной области (разложение сигнала по частотам). Как реализована конкретная библиотека я не знаю, но для алгоритма БПФ необходима кратность 2. Хотя можно и нолики в конце дописать, ну да ладно, это уже ЦОС. Рекомендую вам для начала ознакомится с теоретической стороной вопроса, чтобы четко понимать, что вы делаете. Успехов)
Комментариев нет:
Отправить комментарий