2011-10-01 21 views

cevap

4

Müzik notaları sesin belirli frekanslarda başka birşey değildir. Giriş sinyalindeki tüm frekansları analiz etmenin ve sonra bireysel notları izole etmenin bir yolunu bulmanın bir yoluna ihtiyacınız olacak.

Ses sinyalindeki frekansları bulmak Fast Fourier Transform (FFT)'u kullanarak yapılır. FFT'yi bir ses sinyalinden hesaplamak için online olarak birçok kaynak kodu bulunmaktadır. Özellikle, oScope, iPhone için açık kaynaklı bir çözüm sunar.

Düzenleme:Pitch detection yapmaya çalışıyorsun ne için teknik adı gibi görünüyor. Burada SO similar question'un cevapları kullanımda olabilir.

+3

Pitch, frekansla aynı değil. Bir notun eksik bir temeli olabilir. – hotpaw2

+0

@ hotpaw2: İlginç. Müzik hakkında ne kadar bilgim olduğunu gösterir;;) '. Farkında başka birinin açık olmaması durumunda, aşağıdaki makale oldukça güzel bir şekilde ortaya koymaktadır: http://emusician.com/tutorials/emusic_pitch_vs_frequency/ –

+0

İçgörü için teşekkür ederiz! –

1

Beğen @ e.James, bir notanın adımını bulmak için “Pitch Detection” adında bir arama yapmak istediğinizi söyledi. CCRMA, Stanford Üniversitesi'nde aradığınız şey için bir ton kaynak var. Pitch Detection için sadece google ve parlak bir algoritma koleksiyonu göreceksiniz. Ses Örnekleri bloklarının FFT'sini bulmak için, Accelerate Framework'ün yerleşik FFT işlevini kullanabilirsiniz (bkz. this ve this) veya MoMu toolkit'u kullanın. MoMu'nun kullanılması, ses akışının sizin için örneklere ayrılmasını ve kendi işlevleri ile FFT'nin kolay bir şekilde uygulanmasını sağlar.

2

yerleşik Müzik Saha tahmini için iOS API'leri bir şey yok. Kendi DSP işlevinizi kodlamanız gerekecektir. Accelerate çerçevesindeki FFT'ler, PCM örneklenmiş dalga formundan spektral frekans bilgisi verir, ancak frekans psiko-algısal adımdan farklıdır.

Sıklığı ve zifti tahmin etmenin birtakım iyi ve kötü yolları vardır. Benim DSP resources web page benim çeşitli tahmin yöntemleri uzun bir kısmi listesi var.

Apple'ın aurioTouch örnek uygulamasına iOS cihaz ses girişi alma ve bunun frekans spektrumunu gösterme örneği için bakabilirsiniz.

+0

Hey, audioTouch uygulaması için bir web bağlantınız var mı? – Ravi

+0

Geliştirme Kaynakları bölümüne bakın: developer.apple.com'daki Örnek Kod – hotpaw2

+0

Aslında [aurioTouch] (https://developer.apple.com/library/ios/samplecode/aurioTouch/Introduction/Intro.html) – Chris