Tantangan
Diberikan tablature gitar Anda harus menampilkan lagu yang diwakili oleh tab. Ini mungkin ke pengeras suara komputer Anda atau ke file audio (.wav, .mp3, .midi, .aiff, dll.). Juga akan ada input kedua untuk penentuan waktu.
Tab dapat diinput melalui file atau langsung ke STDIN. Tab akan dalam bentuk ASCII .
Spec
Semua tab adalah untuk 6 enam senar gitar dengan penyetelan E standar: E2 (82,41 Hz), A2 (110,00 Hz), D3 (146,83 Hz), G3 (196,00 Hz), B3 (246,94 Hz), E4 (329,63 Hz).
Satu-satunya teknik (selain pemetikan normal) yang harus Anda penuhi adalah:
- Membungkuk (ini akan selalu menjadi tikungan setengah nada)
- Memalu
- Menarik
- Geser ke atas / bawah
Karena Anda tidak dapat mensintesis suara string yang diredam, perlakukan x
sebagai -
.
Ketika menekuk, mengeluarkan transisi penuh dari tidak mengikat ke tali ke ditekuk ke tidak lagi.
Input kedua adalah waktu yang dilambangkan oleh masing-masing simbol pada tab dalam detik. Sebagai contoh:
Untuk input:
e|---
B|---
G|---
D|---
A|---
E|---
Dengan pengaturan waktu 0.5
, karena ada 3
kolom simbol (tetapi tidak ada catatan), file audio yang dihasilkan adalah ( 3*0.5=1.5
) 1.5
detik hening.
Tab contoh
1 - Berat (Edisi Jack White, Jimmy Page + The Edge)
e|----3-----3---3----2---------3--------------------|
B|----3-----3---3----3--1-1----3--------------------|
G|----0-----0---0----2--0-0----0--------------------|
D|----0-----0---2-------2-2----0--------------------|
A|----2-----0---2-------3-3----2--------------------|
E|----3-----2---x----2--x-x----3--------------------|
2 - Smells Like Teen Spirit
e|--------------|---------------|-------------|-------------|
B|--------------|---------------|-------------|-------------|
G|-----8h10-----|-8-8b----6--5--|-6--5--------|-------------|
D|-10--------6--|---------------|-------8-6-8-|-8b----6--5--|
A|--------------|---------------|-------------|-------------|
E|--------------|---------------|-------------|-------------|
3 - Star Spangled Banner
e|---0-------2-5---9-7-5-----------9-7-5-4-2-4-5------|
B|-----2---2-------------2-4-5---5---------------5-2--|
G|-------2-------------------------------------------2|
D|----------------------------------------------------|
A|----------------------------------------------------|
E|----------------------------------------------------|
sumber
Jawaban:
MATLAB
Ini semacam belum selesai. Saya menggunakan metode cepat dan kotor untuk membuat audio semudah mungkin. Metode yang saya gunakan membuatnya sulit untuk menerapkan tekukan / palu (saya juga belum pernah mendengar kata-kata itu dalam konteks ini sebelumnya).
Setelah mengatakan semua itu, skrip ini akan membaca dalam file teks yang disebut "inputs.txt" yang berisi tab ascii seperti yang diperlukan dan memainkan lagunya.
Berikut ini tautan ke suara input tes pertama.
Berikut ini tautan ke suara input tes ketiga. (Star Spangled Banner atau Ice Cream Truck?)
Input tes kedua terdengar sangat buruk bagi saya, tapi itu mungkin karena menggunakan banyak
b
s danh
s yang diabaikan skrip.Seperti yang Anda dengar, kualitas outputnya tidak sama dengan aslinya. Agak terdengar seperti ada metronom yang bermain di latar belakang. Saya pikir lagu-lagu ini memiliki karakter.
sumber
Python 3
Saya harus mencoba yang ini.
Ini mengkonversi tab ke file midi sebagai dimainkan oleh piano. Saya tidak tahu bagaimana cara membuat senar membungkuk pada piano, jadi tidak bisa melakukan itu, tetapi palu dan pull-off mudah.
Saya membuat file tes seperti ini: di
$ python3 tab.py The-weight.txt 0.14
mana0.14
panjang satu not dalam hitungan detik.Kode ini juga ada di github, https://github.com/Mattias1/ascii-tab , di mana saya juga mengunggah hasil dari contoh yang diberikan oleh OP. Saya juga mencobanya di beberapa tab saya sendiri. Cukup aneh mendengar piano memainkannya, tapi itu tidak buruk.
Contoh:
Saya menambahkan beberapa tautan langsung, tetapi tidak yakin berapa lama mereka tinggal, jadi saya akan menyimpan tautan unduhan yang lama juga.
Dan tab dari lagu Matty (favorit saya) di bawah:
sumber
2/3
dari 'ketukan' itu sebenarnya putus-putus.Java Script
Catatan: Menggunakan Kit Audio Pengembangan Web; Ini adalah jalan keluar dari Liga IE; Diuji di Google Chrome
Anda dapat menempatkan tab di textarea. Yaitu Anda bisa meletakkan lagu Matty dari posting Matty di textarea (dengan huruf di atas catatan) dan itu masih akan diurai dengan benar.
Klik untuk Menjalankan Program
JavaScript:
Bisakah kamu mengidentifikasi lagu ini?
sumber
| / b h p
. Mengapa tidak hanya melakukan parsing string kecil untuk menggantinya-
? Itu akan terdengar cukup baik dan berfungsi. (Dan mungkin terpecah pada baris baru menggunakan satu kotak input.). Itu akan membuat skrip ini menyenangkan untuk dimainkan.Jawa
Program ini mengonversi tablature ke format WAV 16-bit.
Pertama, saya menulis sejumlah besar kode parsing tablature. Saya tidak yakin apakah parsing saya sepenuhnya benar, tetapi saya pikir tidak apa-apa. Selain itu, bisa menggunakan lebih banyak validasi untuk data.
Setelah itu, saya membuat kode untuk menghasilkan audio. Setiap string dihasilkan secara terpisah. Program ini melacak frekuensi, amplitudo, dan fase saat ini. Ini kemudian menghasilkan 10 nada untuk frekuensi dengan amplitudo relatif yang dibuat, dan menambahkannya. Akhirnya, string digabungkan dan hasilnya dinormalisasi. Hasilnya disimpan sebagai audio WAV, yang saya pilih untuk format ultra-sederhana (tidak ada perpustakaan yang digunakan).
Ini "mendukung" memalu (
h
) dan menarik (p
) dengan mengabaikan mereka karena saya benar-benar tidak punya waktu untuk membuat mereka terdengar terlalu berbeda. Hasilnya terdengar agak seperti gitar, (menghabiskan beberapa jam spektrum menganalisis gitar saya di Audacity).Selain itu, mendukung tekukan (
b
), pelepasan (r
) dan geser (/
dan\
, dapat ditukar).x
diimplementasikan sebagai mematikan string.Anda dapat mencoba mengubah konstanta di awal kode. Terutama menurunkan
silenceRate
sering mengarah pada kualitas yang lebih baik.Contoh hasil
Kode
Saya ingin memperingatkan setiap pemula Java: jangan tidak mencoba untuk belajar sesuatu dari kode ini, itu sangat tertulis. Juga, itu ditulis dengan cepat dan dalam 2 sesi dan itu tidak dimaksudkan untuk digunakan lagi sehingga tidak memiliki komentar. (Bisa tambahkan nanti: P)
sumber