Как сгенерировать синусоиду с песней в iphone? - PullRequest
1 голос
/ 17 декабря 2009

Я создаю музыкальное приложение на iphone, созданное с помощью AVAudioPlayer, и оно успешно воспроизводит музыку.

Но теперь мое требование - генерировать волну (синусоидальная / квадратная / цифровая / аналоговая) на экране, когда музыка начинает играть, и останавливать волну после окончания музыкального файла.

Как я могу это сделать?

Ответы [ 3 ]

3 голосов
/ 17 декабря 2009

Возможно, вы можете использовать core-plot проект для рисования ваших кривых.

0 голосов
/ 20 октября 2011

Просто генерировать синусоидальную волну проще. Итак, я реализовал синусоидальную волну в методе рисования UIView следующим образом:

float x=75;
float yc=50;
float w=0; 
 while (w<=rect.frame.size.width) {
CGPathMoveToPoint(path, nil, w,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+x/4, -yc,w+ x/2, y/2);
CGPathMoveToPoint(path, nil, w+x/2,y/2);
CGPathAddQuadCurveToPoint(path, nil, w+3*x/4, y+yc, w+x, y/2);
CGContextAddPath(context, path);
CGContextDrawPath(context, kCGPathStroke);
w+=x;
}

Здесь x - ширина каждой синусоидальной волны, а y - высота кадра. Это нарисует число синусоидальных волн, чтобы уместиться во всем UIViewFrame. Он будет производить четкую синусоидальную волну, а yc - ручку управления. Попробуйте, вам может понравиться.

Если ширина т.е. х аналогична ширине кадра, тогда будет получена одиночная синусоида.

Номер полной синусоидальной волны = (ширина кадра) / ('x' ширина каждой синусоидальной волны) Теперь попробуйте отрегулировать амплитуду и частоту волны относительно мощности звука.

0 голосов
/ 17 декабря 2009

Это очень хороший пост в блоге, который показывает, как рисовать кривые: Рисование кривых
Он также содержит советы о том, как бороться с сокращением данных для больших буферов.

EDIT:
Статья написана для Mac OS X, но поскольку она использует Quartz для отображения формы сигнала, она должна нормально работать на iPhone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...