Hai Geektimes! Pernahkah Anda bertanya-tanya bagaimana "sinyal listrik" terdengar di sepanjang jalur papan sirkuit tercetak antara sirkuit mikro, transistor, dioda, resistor, dan kapasitor? Salah satu varian dari sinyal seperti itu dalam elektronik modern adalah bus digital, dan salah satu antarmuka populer untuk bertukar data melalui bus adalah UART. Ini sering digunakan dalam mikrokontroler untuk berkomunikasi dengan komputer atau semacam periferal. Untuk mendapatkan suara di bus, sama sekali tidak perlu menghubungkan speaker dengan amplifier ke bus nyata dengan 
UART ohm, karena dapat disimulasikan dalam program. Apakah Anda tertarik dengan bunyi apa yang akhirnya Anda dapatkan, atau apakah Anda memerlukan program untuk bereksperimen sendiri? Lalu saya minta kucing.
Kami mendengarkan file di bus dengan UART
Suara apa yang akan dihasilkan jika Anda mentransfer file melalui 
UART ? Berikut adalah beberapa contoh yang diperoleh dengan parameter 
UART berikut:
- Tingkat baud 115200
- Bit 8 bit
- Parity Bit: Tidak Ada
- Stop Bit Length: 1
Sound of the game Stalker Shadow of Chernobyl (file XR_3DA.exe, di akhir trek, mulai pukul 2:36, ada melodi).
Suara teks dan kode artikel tentang synthesizer ucapan (artikel itu sendiri ada di 
sini ).
Seperti apa foto Lena?

Hasilnya hanya 
noise .
Suara buku "Entropi dan perkiraan deret waktu dalam teori sistem dinamik" dalam format pdf.Suara firmware mikrokontroler seri Atmega untuk pemutar wav.Untuk apa itu digunakan?
Secara teoritis, mungkin ada informasi seperti itu dalam bentuk teks, atau gambar, atau video, atau dalam bentuk program yang tidak hanya memiliki makna fungsional atau signifikansi estetika, tetapi juga bunyi "indah" dari bus digital, kemudian berubah menjadi semacam puisi "digital" . 
Anda juga dapat mendiversifikasi sampel untuk dubstep. Secara umum, menurut pendapat saya, mendengarkan suara bus digital sama menariknya dengan mendengarkan suara gelombang radio dalam gelombang pendek, secara umum, untuk seorang amatir.
Cara kerjanya atau sedikit tentang UART
Apa itu 
UART dapat dibaca di 
Wikipedia . 
UART sangat mudah disimulasikan dalam suatu program. Bahkan, Anda hanya perlu dapat membuat penurunan sinyal dari 0 ke 1 dan sebaliknya (dalam kasus file 
WAV dengan kapasitas bit 16 bit, ini adalah nilai dari - 
A ke + 
A , di mana 
A adalah amplitudo sinyal) dan merekamnya dalam file audio. Antarmuka 
UART berfungsi seperti ini: setelah bit mulai, yang logis "nol", Anda perlu mengatur level tergantung pada data yang disediakan, dari yang rendah ke yang tinggi. Berikutnya datang sedikit paritas yang tidak bisa Anda gunakan. Di akhir pesan ada stop bit (“unit” logis), yang panjangnya bisa berbeda. Contoh kode dapat ditemukan dalam kode sumber, yang ada di akhir artikel. Informasi lebih lanjut tentang UART dapat ditemukan di jaringan, banyak materi. UART dapat digunakan untuk keperluan lain, misalnya sebagai PWM, tetapi dalam kasus kami, ini berarti bahwa secara teoritis Anda bahkan dapat mentransfer sinyal suara penuh langsung ke speaker, seperti yang dilakukan pada pemain wav pada mikrokontroler. Namun, saya lebih suka menggunakannya sebagai generator berliku-liku. Frekuensi nada dan fase sinyal dapat disediakan dalam bentuk bit data, misalnya, 
00001111 akan membuat berliku-liku yang periodenya akan sama dengan 10 periode waktu transmisi satu bit (karena dalam kasus ini ada juga bit mulai sama dengan 0 dan bit berhenti sama dengan 1). Karena bit mulai dan berhenti, tidak semua periode berliku dapat ditransmisikan, misalnya, dalam hal ini 
01100110 , karena pada dasarnya kita akan mendengarkan urutan seperti itu di bus 
0011001101 . Jika Anda menggunakan kecepatan transfer data yang tinggi, misalnya 115200 baud, masuk akal untuk membuat frekuensi suara yang dapat didengar dengan meregangkan periode meadras dengan beberapa byte.
...
Dengan menggunakan 
tautan ini, Anda dapat mengunduh program untuk mengonversi file menjadi suara bus 
UART . Ada juga versi menggunakan OpenAL untuk memutar suara selama operasi program, di sini adalah 
tautannya .
Kode sumber program disediakan di bawah ini:
File header SoundsDigitalBus.h#ifndef SOUNDS_DIGITAL_BUS_H_INCLUDED #define SOUNDS_DIGITAL_BUS_H_INCLUDED #define SDB_WAV_FILE_NAME "sdb_output.wav" #define SDB_UART_BIT 8 #define SDB_UART_PARITY 0 #define SDB_UART_STOP_BIT 1 #define SDB_UART_BAUDRATE 9600 #define SDB_UART_BAUDRATE_MAX 921600  
 Kode Sumber File SoundsDigitalBus.cpp #include "SoundsDigitalBus.h" #if SDB_WITH_OPENAL == 1  
 File main.h #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #define LINUX 0x00 #define WINDOWS 0x01 #define RU 0x00 #define EN 0x01  
 File main.cpp #include "main.h" sdb soundsDigitalBus; int main() { static FILE *fp = NULL;  
 PS Saya melihat kesalahan bahwa dalam kode sumber bit mulai logis 1, bukan 0, dan bit berhenti adalah 0, bukan 1. Siapa yang butuh kecocokan dasar dari sinyal suara kenyataan dapat memperbaiki kesalahan itu sendiri.