2016-05-25 7 views
-1

私はiOS用の音楽プレーヤーを構築しています。 私はビジュアライザーを持っています。それはSiri on Apple Watchの波形に非常によく似ています。Apple WatchのSiri波形を構築するために使用する技術

私は有望に見えるGithubのオープンソースプロジェクトを発見しました。それは描画のためにCore Graphicsを使用しており、非常に理解しやすいです。しかし、iPhone 6ではCPUの約50%を使用し、振幅が高い場合は60 fpsを達成できません。 パフォーマンスが向上したUIKitまたはSpriteKitを使用してこのエフェクトを実現する方法はありますか(ブレンド効果を通知することは非常に重要です)。また、このプロジェクトの著者は、FTについて(todosで)何かを述べています。私はFFTを理解するのにほぼ一日を費やしましたが、この場合、効果を達成するためにどのように役立つか(またはより効果的になるために)どのように役立つかまだ分かりません。 アイデア

答えて

0

SiriWaveViewを使用できます。 githubからダウンロードしてください。

その後、あなたは、あなたが

- (void)updateMeters 
{ 
if (audioPlayer.playing) { 


    CGFloat normalizedValue; 
    [audioPlayer updateMeters]; 
    normalizedValue = [self _normalizedPowerLevelFromDecibels:[audioPlayer averagePowerForChannel:0]]; 
    [siriWaveView updateWithLevel:normalizedValue]; 
    // NSLog(@"Update meter called"); 

} 


} 

- (CGFloat)_normalizedPowerLevelFromDecibels:(CGFloat)decibels 
{ 
if (decibels < -60.0f || decibels == 0.0f) { 
    return 0.0f; 
} 

return powf((powf(10.0f, 0.05f * decibels) - powf(10.0f, 0.05f * -60.0f)) * (1.0f/(1.0f - powf(10.0f, 0.05f * -60.0f))), 1.0f/2.0f); 
} 

たときにプレイオーディオや音楽

[siriWaveView setWaveColor:myColor]; //desired color 
    [siriWaveView setPrimaryWaveLineWidth:3.0f]; 
    [siriWaveView setSecondaryWaveLineWidth:1.0]; 

は、このメソッドを実装し、同様にプロパティを設定することができ、同様

siriWaveView = [[SCSiriWaveformView alloc]initWithFrame:CGRectMake(20, (self.view.frame.size.height/2) - 160 + 120, self.view.frame.size.width - 40, 80)]; //you can set your desired frame 
    siriWaveView.backgroundColor = appGrayColor; 

をそのインスタンスを作ることができます電話番号:

displaylink = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateMeters)]; 
    [displaylink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; 

このリンクからデモプロジェクトを参照すると、より理解しやすくなります。

希望します。

+0

こんにちは!迅速な答えをありがとう。私はすでにGithubでSiriのような波形の大部分をテストしました。上記の投稿からの[YZWaveformView](https://github.com/AustinChou/YZWaveformView)は、SiriWaveViewに基づいています。それでも波形を埋める必要があり、それらをブレンドして所望の効果を達成する必要があります。 –

関連する問題