Tôi muốn có một cái gì đó trông giống như thế này. Hai màu sắc khác nhau không phải là nessesary.Làm cách nào để trực quan hóa dữ liệu âm thanh?
audacity on mac http://audacity.sourceforge.net/about/images/audacity-macosx.png
Tôi đã có dữ liệu âm thanh (một mẫu/millisecond) từ một wav stereo ở hai int mảng, một cho mỗi kênh trái và phải. Tôi đã thực hiện một vài nỗ lực nhưng họ không nhìn bất cứ nơi nào gần như rõ ràng như thế này, nỗ lực của tôi có được spikey hoặc một khối nhỏ gọn.
Bất kỳ đề xuất nào tốt? Tôi đang làm việc trong C# nhưng psuedocode là ok.
Giả sử chúng ta có
- một hàm DrawLine (màu sắc, x1, y1, x2, y2)
- hai int mảng với dữ liệu đúng [] và trái [] của chiều dài L
- giá trị dữ liệu giữa 32767 và -32768
Nếu bạn thực hiện bất kỳ giả định nào khác, hãy viết chúng trong câu trả lời của bạn.
for(i = 0; i < L - 1; i++) {
// What magic goes here?
}
Đây là cách nó được bật khi tôi áp dụng the solution Han provided. (chỉ một kênh)
alt text http://www.imagechicken.com/uploads/1245877759099921200.jpg
Audacity là nguồn mở để bạn có thể xem mã. Tôi muốn giả định một cái gì đó như sau ... func getHeight (v) {return abs (v) * 32767/viewArea.height/2); samplesPerPixelColumn = samples.len/viewArea.width; cho i = 1 để xemArea.width {avgV = Trung bình (mẫu [i-i + samplesPerPixelColumn]); colHeight = getHeight (avgV); if avgV> = 0 DrawLine (đen, i, viewArea.height/2, i, (viewArea.height/2) + colHeight) khác DrawLine (đen, i, viewArea.height/2, i, (viewArea.height/2)) - colHeight); Có thể bạn sẽ cần phải làm một số xử lý làm tròn/phạm vi trong đó nhưng đó phải là ý chính. – steamer25
Tại sao bạn không đặt câu trả lời đó vào câu trả lời. – Nifle
Tôi muốn cung cấp cho bạn thứ gì đó có thể hữu ích ngay lập tức nhưng không được giảm giá nếu một phần của nó bị tắt. Suy nghĩ khác: Thay vì các đường thẳng đứng, vẽ đường chéo giữa điểm đồ thị trước đó và tiếp theo ...Ngoài ra, nếu bạn phóng to đủ, bạn sẽ có nhiều pixel cho mỗi mẫu. – steamer25