2010-07-10 22 views
8

Tôi đang viết một giao diện người dùng nhanh chóng để hiển thị tablature của đàn ghi ta. Giao diện người dùng trong Flash nhưng tôi muốn lưu trữ tab ở định dạng có thể đọc được. Có ai biết điều gì đó đã tồn tại không? Bất kỳ đề xuất về cách đi về nó? Một ý tưởng tôi nhận được khi đọc một số bài đăng trên stackoverflow là sử dụng định dạng tab ASCII nghiêm ngặt như vậy:Định dạng dữ liệu tablature Guitar

e||-1------3--------------0--|----2-------0--- 
B||--1-----3------------1----|----3-------0--- 
G||---2----0----------0------|----2-------1--- 
D||----3---0--------2--------|----0-------2--- 
A||----3---2------3----------|------------2--- 
E||----1---3----3------------|------------0--- 

Nó có lợi thế. Tôi có thể thu được rất nhiều thông tin từ cấu trúc (bao nhiêu chuỗi, bộ chỉnh của chúng, vị trí tương đối của các ghi chú) nhưng nó có một chút tiết. Tôi đoán '-'s sẽ nén đi khá tốt khi được gửi qua dây.

Nếu có ai biết về định dạng dữ liệu hiện có để mô tả tab người chơi, tôi cũng sẽ xem xét.

chỉnh sửa:

Tôi nên lưu ý rằng định dạng này là 90% đối với tôi và có thể không bao giờ được nhìn thấy bởi bất cứ ai khác ngoài bản thân mình. Tôi muốn một cách dễ dàng để viết các tập tin tab sẽ được hiển thị cuối cùng như đồ họa trong một front-end Flash và tôi không muốn phải viết một biên tập viên phía trước.

+0

Tôi muốn đi với định dạng văn bản thuần túy mà bạn ví dụ trong câu hỏi của bạn. Nó đã trở lại rất phổ biến trong ngày, hoạt động trên bất kỳ máy tính nào mà không cần bất kỳ phần mềm bổ sung nào và in dễ dàng. –

Trả lời

4

Kiểm tra định dạng ASCII tab.Cũng mô tả tuyệt vời của định dạng là ở đây:

http://www.howtoreadguitartabs.net/

guitar tab format description (by howtoreadguitartabs.net)

+0

Điều này gần với những gì tôi đang nghĩ. Cảm ơn. Không chắc chắn tôi sẽ hỗ trợ bất kỳ và tất cả các tab vì tôi sẽ tự mình viết các tab bằng tay nhưng tôi có thể thử và nhận các hiệu ứng và hiệu ứng phổ biến nhất. –

1

Đây không phải là con người có thể đọc được:

định dạng

Phổ biến nhất là Guitar Pro (độc quyền) và PowerTab (freeware). DGuitarTuxGuitar là người xem nguồn mở cho định dạng Guitar Pro. Tôi chắc chắn rằng họ có tài liệu cho định dạng ở đâu đó (ít nhất là trong mã).

Lợi thế để sử dụng định dạng chung sẽ là sự dễ dàng trong việc tạo các tab với các chương trình đó.

Các Guitar Pro định dạng 4 được mô tả ở đây http://dguitar.sourceforge.net/GP4format.html

+0

Cảm ơn, tôi đã gặp cả hai trong số đó trước đây nhưng tôi không thích ý tưởng bị mắc kẹt vào một định dạng nhị phân độc quyền. Guitar Pro xuất khẩu sang ASCII vì vậy có lẽ tôi có thể kiểm tra cách mà trông và nhập khẩu một cái gì đó tương tự. Tôi không cố gắng làm bất cứ điều gì thậm chí hơi phức tạp như một trong hai chương trình. –

2

xuất khẩu ASCII sẽ là một tính năng tuyệt vời, nhưng sử dụng ASCII như là định dạng dữ liệu nội bộ không phải là một ý tưởng tốt. Ví dụ, thời gian lưu ý sẽ rất khó thể hiện (bạn có lưu trữ 32 hoặc thậm chí 16th ?, chưa kể đến ba lần ...), do đó việc phân tích các tệp đó sẽ vô cùng khó khăn. Hơn nữa, người dùng sẽ bị cám dỗ khi tải các tệp ASCII được tạo bên ngoài ứng dụng của bạn, điều này có khả năng sẽ không thành công.

Tóm lại, tôi khuyên bạn nên thử sử dụng lại định dạng hiện có hoặc phát minh ra định dạng của riêng bạn nếu điều đó không khả thi. Bạn có thể thử sử dụng XML cho điều đó.

EDIT: Bên cạnh DGuitar, tôi biết TuxGuitar và KGuitar, hỗ trợ các tệp Guitar Pro. Bạn có thể xem xét các nguồn của họ hoặc hỏi tác giả của họ về các định dạng tệp. Tôi nghĩ rằng cũng có bộ chuyển đổi PowerTab-to-ASCII mã nguồn mở.

1

Xem Supported file formats in TuxGuitar.

TuxGuitar là phần mềm đa nền tảng nguồn mở để đọc, viết và chơi các tab đàn ghi ta.

Nó hỗ trợ nêu Guitar ProPowerTab định dạng, và nó cũng có định dạng riêng của mình TuxGuitar (.tg).

1

Nếu bạn cần cấu trúc dữ liệu phụ trợ để duy trì ở dạng có thể đọc được con người tôi có lẽ sẽ dính vào nó trong một CDATA bên trong XML. Điều đó có thể được chèn vào cơ sở dữ liệu quan hệ với thông tin bài hát/nghệ sĩ/tiêu đề và có thể tìm kiếm được. Một tùy chọn khác là lưu nó dưới dạng tệp văn bản được nén và chèn liên kết đến các tệp đó trong cơ sở dữ liệu với thông tin nghệ sĩ chính vẫn có thể tìm kiếm được bằng sql.

0

Tôi đã viết một tiện ích nhanh chóng để hiển thị tab. Chỉ dùng với mục đích cá nhân. Bạn có thể vui vẻ lấy định dạng nội bộ tôi đã sử dụng.

Tôi sử dụng định dạng dựa trên chuỗi rất đơn giản. Có ba cấu trúc quan trọng.

Cột, cột dọc trong tab đầu ra - tất cả ghi chú được phát cùng một lúc. Thanh, một bộ sưu tập các Cột Motif, một bộ sưu tập các Thanh

Một cột trông giống như ': # |: # | *: # 'trong đó mỗi * là số chuỗi và mỗi # là số băn khoăn. Nếu bạn đang chơi một hợp âm bạn tách từng chuỗi: băn khoăn với một '|'

Thanh có dạng '[,, -, *]' trong đó mỗi * là một Cột. A - cho biết một cột trống không có ghi chú nào được phát.

Giao diện Motif chỉ là nhiều Thanh chạy ngược trở lại. Ví dụ:

"[1:5,-,3:7,-,3:5,-,3:7,-,-,3:5,3:7,-,1:8,-,1:5]" 

    e||---------------|---------------|| 
    B||---------------|---------------|| 
    G||---------------|---------------|| 
    D||--7-5-7--57----|--7-5-7--57----|| 
    A||---------------|---------------|| 
    E||5-----------8-5|5-----------8-5|| 


"[-,-,1:3|2:2|3:0|4:0|5:3|6:3,-,-][-,-,3:0|4:2|5:3|6:2,-,-]" 

    e||--3--|--2--|| 
    B||--3--|--3--|| 
    G||--0--|--2--|| 
    D||--0--|--0--|| 
    A||--2--|-----|| 
    E||--3--|-----||