2009-05-04 20 views
21

Tôi quan tâm đến việc học cách sử dụng OpenGL và tôi có ý tưởng viết trình hiển thị nhạc. Bất cứ ai có thể cho tôi một số gợi ý về những yếu tố tôi sẽ cần và làm thế nào tôi nên đi về học tập để làm điều này?Làm cách nào để bắt đầu viết trình hiển thị nhạc trong C++?

+9

có thể là "#include"? xin lỗi, không thể giúp bản thân mình :) –

Trả lời

13

Nếu bạn sử dụng C++/CLI, đây là an example sử dụng màn hình bốn (hiển thị sai);

Anh ấy tham khảo this site có thông tin đáng kể về những gì bạn yêu cầu, đây là một câu trả lời từ trang cụ thể;

Làm cách nào để chia âm thanh thành tần số? Tai của chúng tôi làm điều đó bằng cách phương tiện cơ học, các nhà toán học làm điều đó sử dụng biến đổi Fourier và máy tính thực hiện việc này bằng FFT.

  1. Vật lý âm thanh 1.2. Oscillator Harmonic
  2. Lấy mẫu Sounds
  3. Fourier Analysis
  4. số Complex
  5. Digital Fourier Transform
  6. FFT

Ahhh, tôi thấy this một vài phút sau đó, đó là một bản C++ phân tích . Mã số bao gồm, mà sẽ giúp bạn có được và chạy.

1

Bạn đang cố gắng để viết âm thanh của riêng bạn /máy nghe nhạc? Có lẽ bạn nên thử viết một plugin cho trình phát hiện có để bạn có thể tập trung vào đồ họa thay vì minutia của các codec, dsp và các thiết bị đầu ra âm thanh.

Tôi biết WinAMP và Foobar có API cho plugin trực quan hóa. Tôi chắc chắn Windows Media Player và iTunes cũng có chúng. Chỉ cần chọn một trình phát đa phương tiện và bắt đầu đọc. Một số người trong số họ thậm chí có thể có các plugin OpenGL hiện có mà bạn có thể bắt đầu để có thể tập trung vào OpenGL thuần túy.

+0

Tôi không cố gắng viết một trình phát hoặc bất cứ thứ gì, chỉ cần một cái gì đó sẽ có trong một MP3 và hình dung nó, nhưng tôi không biết gì về cách kết nối tất cả các phần đó. Tôi đang trên Linux, vì vậy tôi muốn dính vào một cái gì đó đơn giản. Đã không thực sự nghĩ về việc tích hợp nó vào bất cứ thứ gì khác. – victor

+2

xem xét sử dụng thư viện như mpg123, libmad hoặc ffmpeg để giải mã rồi mp3 thành các mẫu âm thanh. Từ đó bạn sẽ muốn sử dụng DFT (FFT) để chuyển đổi thông tin âm thanh sang tần số (xem FFTW). Tại thời điểm này, bạn sẽ có dữ liệu tần số thô tương tự như những gì bạn thấy trên hầu hết các visuliazers (đường di chuyển winamp/xmms w/peak). Sau đó bạn cần phải tìm ra những gì để hình ảnh dựa trên tần số và thay đổi tần số. – basszero

0

Nếu bạn chỉ sau một số 3D cơ bản hoặc tăng tốc 2D thì tôi khuyên bạn nên mua bản sao của Dave Astle "Beginning OpenGL Game Programming" bao gồm các khái niệm cơ bản về OpenGL trong C++.

0

Đối với phần phân tích âm nhạc, bạn nên nghiên cứu cơ sở của chuỗi Fourier, sau đó chọn thực hiện miễn phí một thuật toán DFFT (kỹ thuật số biến đổi nhanh).

0

Bạn có thể tìm thấy việc triển khai các thuật toán FFT và các thông tin hữu ích khác trong Numerical Recipes in C sách. Cuốn sách là AFAIK miễn phí. Ngoài ra còn có Numerical Recipes in C++ cuốn sách.

4

Tiếp cận của tôi để tạo BeatHarness (http://www.beatharness.com):

  • ghi âm trong thời gian thực
  • có một sợi chạy một FFT trên âm thanh để có được cường độ tần số
  • tính toán nghe âm lượng cho kênh trái và phải
  • lọc tần số trong các dải (bass, midton, treble)

bây giờ bạn có một số biến tốt đẹp để sử dụng trong màn hình đồ họa của bạn. Ví dụ: hiển thị hình ảnh có kích thước được nhân với âm trầm - điều này sẽ cung cấp cho bạn hình ảnh sẽ phóng to nhịp. Từ đó trên đó là trí tưởng tượng của riêng bạn! :)

0

Bạn có thể muốn xem xét sử dụng các hàm FFT/DCT của libvisual trên FFTW; chúng đơn giản hơn rất nhiều để làm việc và cung cấp dữ liệu tương tự dễ dàng để làm việc với mục đích tạo hình ảnh. Một số trình phát phương tiện truyền thông và plugin trực quan sử dụng libvisual ở một mức độ nào đó cho hình ảnh của họ. Ví dụ: Totem (trình phát), GOOM (plugin cho Totem và những người chơi khác), PsyMP3 2.x (trình phát)

Các vấn đề liên quan