Saya memiliki masalah RSI dan telah mencoba 30 keyboard komputer yang berbeda yang semuanya membuat saya kesakitan. Bermain piano tidak membuatku sakit. Saya telah bermain piano selama sekitar 20 tahun tanpa masalah rasa sakit. Saya ingin tahu apakah ada cara untuk menangkap MIDI dari keyboard MIDI dan stroke keyboard output. Saya sama sekali tidak tahu tentang MIDI, tetapi saya ingin panduan tentang bagaimana mengubah sinyal ini menjadi penekanan tombol.
727
Jawaban:
Perpustakaan yang bagus di .NET dengan dukungan midi penuh (BASS), buka http://www.un4seen.com .
Dan untuk bagian lain, menerjemahkan catatan keyboard midi ke tombol dan banyak lagi, saya akan pergi untuk AutoItX, ActiveX / COM dan antarmuka DLL ke autoIt. Info dan unduh, kunjungi http://www.autoitscript.com/site/autoit/
Tidak perlu menulis driver keyboard.
sumber
Saya sudah bertahun-tahun tidak melakukan pemrograman MIDI, tetapi ide dasar Anda sangat bagus (tidak ada kata-kata).
MIDI adalah aliran "peristiwa" (atau "pesan"), dua yang paling mendasar adalah "note on" dan "note off" yang membawa serta nomor note (0 = C lima oktaf di bawah C tengah, melalui 127 = G lima oktaf di atas G di atas C tengah, dalam semi-nada). Peristiwa ini membawa nomor "kecepatan" pada keyboard yang peka terhadap kecepatan ("peka sentuhan"), dengan kekuatan (Anda dapat menebaknya) antara 0 dan 127.
Antara kecepatan, chording, dan pedal, saya pikir Anda bisa membuat antarmuka "mengetik" yang bagus untuk keyboard piano. Chording khususnya bisa menjadi teknik yang sangat kuat - seperti yang saya sebutkan di komentar, itu sebabnya stenograf peringkat-dan-file dapat menggunakan mesin stenotipe untuk bersaing dengan orang-orang yang berbicara selama berjam-jam berturut-turut, ketika bahkan juru ketik papan atas tidak akan t dapat untuk waktu yang lama melalui keyboard gaya-mesin tik normal. Seperti halnya stenografi mesin, Anda membutuhkan "kamus" tentang arti akor dan urutan akor. (Dapatkah Anda memberi tahu saya dulu bekerja di sisi perangkat lunak stenografi mesin?)
Untuk melakukan ini, bagian mendasarnya adalah:
Agar kompatibel dengan perangkat lunak secara luas, Anda harus menulis ini sebagai driver perangkat keyboard. Ini adalah plug-in ke sistem operasi yang berfungsi sebagai sumber untuk acara keyboard, berbicara dengan perangkat keras yang mendasarinya (dalam kasus Anda, keyboard piano). Untuk Windows dan Linux, Anda mungkin ingin menggunakan C untuk itu.
Namun, karena Anda hanya menghasilkan penekanan tombol (tidak mencoba mencegatnya, yang saya coba lakukan bertahun-tahun yang lalu), Anda mungkin dapat menggunakan fitur apa pun yang dimiliki sistem operasi untuk mengirim penekanan tombol buatan. Windows memiliki antarmuka untuk melakukan itu (mungkin beberapa, yang saya pikirkan adalah
SendInput
tetapi saya tahu ada beberapa antarmuka "jurnal" yang melakukan hal serupa), dan saya yakin sistem operasi lain juga melakukannya. Itu mungkin cukup untuk tujuan Anda - di sinilah saya mulai, karena rute driver perangkat akan menjadi canggung dan Anda mungkin harus menggunakan bahasa yang berbeda untuk itu daripada Jawa. (Saya penggemar berat Java, tetapi antarmuka yang digunakan sistem operasi untuk berbicara dengan driver perangkat cenderung lebih mudah dikonsumsi melalui C dan sejenisnya.)Perbarui : Lebih lanjut tentang "kamus" akor untuk penekanan tombol:
Pada dasarnya, kamus adalah trie (terima kasih, @Adam) yang kami cari dengan pencocokan awalan terlama. Detail:
Dalam stenografi mesin, stenografer menulis dengan menekan beberapa tombol pada mesin stenotype secara bersamaan, lalu melepaskan semuanya. Mereka menyebut ini "stroke" dari keyboard; itu seperti memainkan akor pada piano. Stroke sering (tetapi tidak selalu) sesuai dengan suku kata bahasa yang diucapkan. Seperti suku kata, terkadang satu pukulan (akor) memiliki makna sendiri, di lain waktu hanya memiliki makna yang dikombinasikan dengan stroke berikut. (Pikirkan "baik" vs "baik" diikuti oleh "selamat tinggal"). Meskipun mereka akan sangat dipengaruhi oleh sekolah tempat mereka belajar, stenografer masing-masing akan memiliki "kamus" mereka sendiri dari apa stroke yang mereka gunakan untuk berarti apa, kamus mereka akan terus mengasah selama masa kerja mereka. Kamus akan memiliki entri di mana bagian stenografis ("steno", singkatnya) panjangnya satu pukulan, atau panjang beberapa kali pukulan. Seringkali, akan ada beberapa entri dengan stroke awal yang sama yang dibedakan oleh panjangnya dan oleh stroke berikutnya. Misalnya (dan saya tidak akan menggunakan steno nyata di sini, hanya placeholder), mungkin ada entri ini:
(Surat-surat itu tidak dimaksudkan sebagai catatan musik, hanya penanda abstrak.)
Perhatikan bahwa
A
mulai banyak entri, dan juga perhatikan bahwa cara Anda menerjemahkanC
stroke tergantung pada apakah Anda sebelumnya melihatA
, aB
, atau Anda baru mulai.Perhatikan juga bahwa (walaupun tidak ditunjukkan dalam sampel sangat kecil di atas), mungkin ada beberapa cara untuk "memainkan" kata atau frasa yang sama, daripada hanya satu. Stenografer melakukan itu untuk membuatnya lebih mudah mengalir dari kata sebelumnya ke yang berikutnya tergantung pada posisi tangan. Ada analogi yang jelas dengan musik di sana, dan Anda bisa menggunakannya untuk membuat alur pengetikan Anda lebih mirip dengan bermain musik, untuk mencegah hal ini memengaruhi secara negatif pada bermain piano Anda dan untuk memaksimalkan kemungkinan ini benar-benar membantu RSI.
Saat menerjemahkan steno ke teks standar, sekali lagi kami menggunakan pencarian "pencocokan awalan terpanjang": Algoritma penerjemahan dimulai dengan stroke pertama yang pernah ditulis, dan mencari entri yang dimulai dengan stroke itu. Jika hanya ada satu entri, dan panjangnya satu stroke, maka kita dapat dengan andal mengatakan "itulah entri untuk digunakan", mengeluarkan teks yang sesuai, dan kemudian mulai dengan stroke berikutnya. Tetapi lebih mungkin, bahwa stroke mulai beberapa entri dengan panjang yang berbeda-beda. Jadi kita melihat stroke berikutnya dan melihat apakah ada entri yang dimulai dengan dua pukulan secara berurutan; dan seterusnya sampai kita mendapatkan korek api.
Jadi dengan kamus di atas, misalkan kita melihat urutan ini:
Begini cara kami menerjemahkannya:
A
adalah awal dari tiga entri dengan panjang yang berbeda-beda; lihat stroke berikutnya:C
A/C
hanya cocok dengan satu entri; Output "AC" dan mulai segar dengan stroke berikutnya:B
B
mulai dua entri; lihat stroke berikutnya:B
B/B
tidak memulai apa pun; ambil pertandingan terlama sebelumnya (B
) dan hasilkan itu ("lebah")B
= "bee", kami masih memilikiB
stroke di buffer kami. Itu mulai dua entri, jadi lihat stroke berikutnya:C
B/C
cocok dengan satu entri; Output "karena" dan mulai segar dengan stroke berikutnya:A
A
mulai tiga entri; lihat stroke berikutnya:B
A/B
mulai dua entri; lihat stroke berikutnya:C
A/B/C
hanya cocok dengan satu entri; output "alfabet" dan mulai segar dengan goresan berikutnya:A
A
mulai tiga entri; lihat stroke berikutnya:B
A/B
mulai dua entri; lihat stroke berikutnya:D
A/B/D
tidak cocok dengan apa pun, jadi ambil kecocokan terlama sebelumnya (A/B
) dan gunakan untuk menghasilkan "alfabet". Itu membuat kitaD
masih dalam buffer.D
memulai dua entri, jadi kami biasanya akan melihat stroke berikutnya - tetapi kami telah memproses semua stroke, jadi pertimbangkanlah secara terpisah. Dalam isolasi, itu diterjemahkan sebagai "anjing" sehingga menghasilkan itu.Aspek-aspek di atas yang perlu diperhatikan:
A/B
harus diterjemahkan sebagai "alfabet", bukan "alfa" dan "lebah".E
akan menjadi "untranslate".)sumber
Pertimbangkan untuk melakukan sesuatu pada perangkat keras yang mengemulasi keyboard usb (atau ps / 2?). Anda tidak lagi tergantung pada OS tertentu, atau API OS tertentu. Solusi perangkat keras akan bertahan dalam ujian waktu. Jangan terjebak menggunakan API lama di Windows 7 saat semua orang lain menjalankan Windows 11! Arduino cukup mudah dipelajari.
Ada banyak info dan bantuan di luar sana untuk Arduino. Ini adalah platform peretasan perangkat keras yang dibangun untuk pemula. Itu hanya akan semakin besar sekarang bahwa Google mendorong Arduino.
EDIT: perangkat lunak dan perangkat keras Keyboard USB Virtual
sumber
Bagi saya sepertinya Anda kurang mencari saran tentang cara membangun ini sendiri dan lebih banyak bertanya sumber daya apa yang sudah ada di luar sana untuk mencapai apa yang Anda inginkan. Bergantung pada OS Anda, ada banyak cara untuk mencapai ini tanpa harus menulis program Anda sendiri dari awal:
Stroke MIDI
Gratis. Untuk Mac OS X 10.3 dan lebih tinggi . Yang satu ini secara khusus hadir dengan "kemampuan untuk menggunakan papan ketik MIDI sebagai pengganti papan ketik komputer yang penuh sesak nafas."
Penerjemah MIDI Bome
Gratis / Kartu Pos (agak aneh). Untuk Windows 2000 dan atas, dan Mac OS X . Awalnya tampaknya lebih diarahkan pada penggunaan tipe AutoHotkey , tetapi pada pencarian lebih lanjut saya pikir itu bisa melakukan apa yang Anda inginkan dengan baik.
Max dan alias.keyboard
Gratis. Untuk Mac OS X . Tidak persis solusi "siap di luar kotak", tetapi jika Anda merasa nyaman dengan konfigurasi perangkat dasar, itu seharusnya tidak terlalu buruk.
sumber
Anda dapat mengakses perangkat keras dengan sampel kode sumber dalam .NET di MIDI DotNet .
Sampel kerja lengkap sebagai kode sumber untuk membuat aliran data catatan MIDI ada di VB 5/6-Tipp 0521: MIDI-Töne erzeugen (Visual Basic 6.0, di suatu tempat juga versi .NET)
Cara untuk mensimulasikan ketukan keyboard ada di VB 5/6-Tipp 0155: Tastaturereignisse simulieren (Visual Basic 6.0, di suatu tempat ada versi .NET juga)
Dan mengenali penekanan tombol dijelaskan dalam Tipp-Upload: VB.NET 0266: Globaler KeyHook .
Kemudian, cukup gunakan matriks kerja yang bagus untuk pemain piano
Pada piano dan ketika Anda seorang pemain yang baik, Anda dapat memiliki 10 jari pada keyboard dan jika matriks dapat digunakan, Anda bisa jauh lebih cepat daripada pengguna keyboard komputer mana pun menurut saya. :-)
Dalam hal itu, jika saya mengerti pertanyaan Anda dengan benar, itu seharusnya tidak menjadi masalah besar.
sumber
Saya mempelajari kinerja piano di perguruan tinggi dan kemudian masuk ke desain interaksi, pemrograman, dan menggunakan Vim , jadi saya sebenarnya telah menghabiskan banyak waktu membuat prototipe hal-hal seperti ini.
Anda bisa mendapatkan ini bekerja cukup cepat di Linux dengan menggunakan bahasa pemrograman grafis untuk seniman multimedia, " Pure Data ," bersama dengan x11key external oleh Alex Andre .
Di Mac, Anda dapat menggunakan MidiStroke . Saya percaya metode pada Windows melibatkan MidiOx dan AutoHotKey alat. Di lain waktu saya memiliki versi menggunakan plugin Java untuk Max / MSP . Saya percaya Patrice Colet membuat windows eksternal untuk Pure Data yang berfungsi dengan baik, tetapi saya sepertinya tidak dapat menemukannya lagi. Juga, ada eksternal untuk MaxMSP yang dapat melakukan ini pada Windows. Akhirnya, Osculator yang tidak bebas tetapi mengagumkan dapat melakukan apa yang Anda inginkan - lihat halaman fitur.
Ketika saya membuatnya berfungsi, saya tidak pernah terjebak dengan itu, karena saya tidak bisa berhenti tooling dengan tata letak. Itu keren hanya memiliki monitor saya di keyboard listrik saya, meskipun! Semoga berhasil.
sumber
Tentang MIDI
Anda menyatakan bahwa Anda "sama sekali tidak tahu tentang MIDI". Teknologi MIDI cukup mudah setelah Anda pegang, tetapi bisa membingungkan pada awalnya. Salah satu sumber daya yang telah sangat membantu saya dalam memahami dasar-dasar untuk MIDI (yang tentunya diperlukan jika Anda ingin memprogram interaksi MIDI), adalah buku berjudul MIDI for the Technophobe . Ini buku yang mudah dibaca dan sangat membantu.
Data Murni & Maks
Dalam pengalaman saya mengembangkan multimedia interaktif, ada dua program yang sangat mirip yang saya temui yang memfasilitasi menghubungkan dan memetakan sinyal / input dari perangkat apa pun.
Ini adalah Max untuk lingkungan Mac dan Pure Data untuk lingkungan PC. Keduanya memiliki banyak dokumentasi online dan tutorial YouTube. Video Max / MSP Tutorial 1 - menggunakan keyboard komputer Anda sebagai midikeyboard (gaya ableton) menunjukkan program yang dibangun di Max yang memetakan keyboard komputer ke input keyboard MIDI (yang pada dasarnya kebalikan dari apa yang Anda coba lakukan). Anda bisa mendapatkan hasil yang diinginkan dengan menggunakan pola yang sama, tetapi membalikkan sinyal / pemetaan.
Autohotkey
AutoHotKey adalah utilitas open source gratis untuk Windows yang memungkinkan Anda untuk memetakan kembali kunci dan tombol pada perangkat Anda untuk makro. Ini secara asli mendukung keyboard QWERTY, joystick dan makro mouse.
Namun, saya dapat menemukan implementasi yang mendukung pemetaan spesifik yang Anda cari. Dua utas ini menjelaskan prosesnya:
Dukungan MIDI IN di AutoHotkey , diskusi tentang use case. Penulis sedang mencari program yang dapat mendeteksi input MIDI IN dan menerjemahkannya ke penekanan tombol .
Pustaka masukan MIDI , solusi untuk masalah penulis dan kode / tambalan yang diposting ke AutoHotKey yang sebenarnya mengimplementasikan hasil yang Anda inginkan.
Pada dasarnya, sepertinya AutoHotKey, bersama dengan tambalan khusus pengguna ini, akan memberikan apa yang Anda perlukan untuk membuat pemetaan dari keyboard MIDI ke sinyal input keyboard QWERTY. Yang harus Anda lakukan adalah menginstal, mengkonfigurasi, dan mendefinisikan pemetaan Anda.
Ada yang lain?
Beberapa jawaban lain telah memberi Anda informasi yang jauh lebih luas tentang pemrograman MIDI dan MIDI, secara umum, tetapi sebagaimana dinyatakan oleh pos Anda, hal itu tampaknya tidak sesuai dengan yang Anda cari. Saya ingin membantu Anda lebih banyak jika mungkin, tetapi akan lebih mudah jika Anda bisa lebih spesifik tentang jenis informasi yang Anda cari. Misalnya, apakah Anda lebih tertarik dengan cara mengubah sinyal input keyboard MIDI ke sinyal keyboard QWERTY , atau apakah minat utama Anda menemukan solusi di luar kotak untuk masalah spesifik Anda? Apa yang Anda cari yang belum ditangani?
sumber
Anda dapat meretas keyboard USB Anda sendiri dengan cepat menggunakan pengontrol mikro Teenys.
Bahkan, mereka memiliki kode contoh untuk cara membuat keyboard USB .
Anda dapat mendekati dua cara ini:
Dapatkan piano tua dan pasang kawat langsung ke yang muda
Tambahkan logika tambahan untuk menghubungkan ke port MIDI dan decoding yang diperlukan.
sumber
Sebenarnya, saya mengerjakan ini beberapa waktu yang lalu, mencoba untuk menangkap input drum Rock Band ke komputer saya (membuat emulator drum kecil buatan Java) Lagi pula, saya mengajukan pertanyaan di sini tentang itu, masalah waktu tunda (ada kode polling di sana , bersama dengan apa yang saya coba lakukan.). Dan jika saya dapat menemukan program saya, saya dapat memberi Anda kode, itu menggunakan API pihak ketiga ( JInput ).
Semoga beruntung.
sumber
Coba penerjemah MIDI Bome .
Ia bekerja lintas platform, dapat mengonversi input MIDI apa pun menjadi keystoke dengan mudah, cepat untuk setup dan konfigurasi, plus gratis untuk penggunaan pribadi.
Ada tutorial, Tip Cepat: Terjemahan MIDI - MIDI keystrokes , tentang cara mudah mengaturnya:
Pada dasarnya, ada kemungkinan tak terbatas dari apa yang dapat Anda lakukan, termasuk kunci chording dan modifier. Saya menggunakannya untuk rig audio langsung saya untuk mengontrol DAW saya menggunakan piano saya dan tidak pernah memiliki masalah.
sumber
Di Java, Anda dapat menggunakan JMF (Java Media framework) untuk mengonversi sinyal MIDI. Dasar desain keyboard mudah digunakan, yaitu antarmuka pengguna; dan tempat charcter / simbol yang sering digunakan berguna.
Kode sampel dan API di Java Sound Resources: Contoh: Digital Signal Processing (DSP) membantu memahami cara memproses sinyal.
Beberapa referensi lagi:
sumber
Ada program yang disebut GlovePIE . Anda dapat memprogramnya dalam bahasa skrip sederhana, dan saya percaya ini mendukung MIDI. Saya tidak yakin apakah ini cocok dengan kategori "Java", tetapi tetap saja, ini adalah program yang hebat. Saya telah menggunakannya untuk mengontrol robot menggunakan pengontrol PS3 . Ini sangat kuat.
sumber
Banyak keyboard memiliki konektor port serial ( RS-232 ) untuk mengirim sinyal MIDI ke komputer. Saya menggunakan program yang disebut Girder untuk mengubah komunikasi port serial menjadi stroke keyboard.
Girder memiliki fitur "pemetaan" yang memungkinkan Anda memetakan setiap tombol, satu per satu, ke tombol yang sesuai.
Ini mungkin solusi sederhana yang Anda cari!
sumber
Belajar stenografi!
Jelas dari semua diskusi di pihak Anda. Anda tidak ingin menemukan kembali roda apa pun, dari sudut pandang teknis. Tetapi begitu Anda memiliki koneksi (apa pertanyaan ini diajukan) dan bangun dan bekerja, Anda masih memiliki sebagian besar pekerjaan di depan Anda: Anda harus melatih otak Anda. Anda juga harus menemukan cara yang paling cerdas dan paling efisien untuk melakukan itu - masalah desain yang sama sekali tidak sesuai dengan teknologi komputer. Anda atau salah satu dari kami akan gagal.
Untungnya, masalahnya telah dipecahkan dan diasah selama berabad-abad ...
Pelajari stenografi!
Ya, ini akan membuat Anda mengembalikan beberapa jack. Tetapi berapa nilainya ratusan jam dari waktu Anda sendiri, dengan pada akhirnya, hasil yang kurang menguntungkan? Selain itu, artikel Wikipedia stenografi mengatakan, 'lebih mirip keyboard piano'.
Kecuali, tentu saja, Anda ingin efek tontonan berjalan. Saya harus mengakui, saya tidak pernah memikirkan kemungkinan ini, itu akan sangat menghibur melihat seseorang mengeluarkan teks dari keyboard piano!
Anda bisa mulai dengan keyboard USB dengan touchpad (atau stik penunjuk akan lebih ergonomis?), Gunakan Plover untuk menerjemahkannya (saya yakin itu dapat dikonfigurasikan untuk membiarkan tombol non-huruf mempertahankan fungsinya karena sangat penting untuk pemrograman), atau, ikuti utas Re: Keyboard Plover untuk menggulung keyboard stenografi USB Anda sendiri, atau, membeli stenotipe .
Semoga berhasil!
sumber
pthread
?Lihatlah game arcade MAME . Mereka telah membangun perangkat perangkat keras untuk memungkinkan input dari sejumlah item yang berbeda. The IPAC , misalnya, mualaf sinyal dari perangkat input ke dalam USB bahwa komputer dapat kemudian digunakan untuk kunci meniru. Anda dapat menggunakan kombinasi perangkat input yang diatur dengan cara apa pun yang tampak nyaman tanpa logika pemrograman yang gila - karena perangkat lunak untuk menginterpretasikan input sudah dilakukan dan diuji dengan baik.
Saya telah melihat input kokpit simulator penerbangan, kios khusus, dan sistem pemungutan suara yang dibangun dalam metode ini ..... dan harganya tepat!
sumber
Untuk mengatasinya Anda perlu beberapa hal:
Cara untuk mengambil data MIDI dari keyboard Anda. Bergantung pada antarmuka: antarmuka MIDI (klasik) atau antarmuka USB MIDI (modern) antarmuka yang paling mungkin adalah ke komputer karena menyediakan sebagian besar opsi. Mikrokontroler host USB tidak sesederhana hanya menggunakan komputer.
Skema untuk mengubah data MIDI menjadi penekanan tombol. Seperti yang ditunjukkan oleh seorang pengguna, akor adalah cara untuk pergi karena jumlah kunci tidak akan tergantung pada jumlah kunci piano.
Cara untuk menyuntikkan kunci ke sistem operasi. Ini akan membutuhkan driver tingkat rendah untuk menjadi akurat. Saya telah bermain-main dengan aplikasi yang menyuntikkan data keyboard dan mouse ke dalam aplikasi di Windows 7, dan itu bisa tidak jelas dan tergantung pada apakah suatu aplikasi saat ini dalam fokus. Ini adalah bagian tersulit dari antarmuka. Apa yang mungkin berhasil adalah membuat mikrokontroler keyboard USB HID yang juga memiliki antarmuka serial.
Antarmuka serial akan membuat port serial virtual. Perangkat lunak yang membaca data MIDI dan menghasilkan penekanan tombol dapat mengirim pesan serial ke port serial virtual. Mikrokontroler akan mengirim keystroke sehingga akan terlihat seperti input keyboard standar. Ini akan memungkinkan antarmuka port MIDI dan keyboard USB MIDI.
Hmmm, dengan jenis antarmuka ini Anda juga bisa mensimulasikan mouse dan menggunakan beberapa pengaturan tombol piano untuk sumbu dan tombol mouse. Tekanan dapat digunakan untuk menentukan kecepatan penunjuk mouse. Jadi, Anda bisa menghilangkan mouse juga. Manfaat lain dari pendekatan ini adalah semua jenis perangkat input yang Anda sambungkan dapat berbicara dengan port serial virtual untuk menghasilkan acara keyboard dan mouse. Jadi jika Anda ingin menambahkan perangkat keras lain seperti pedal drum atau joystick, itu akan menjadi masalah menyesuaikan program yang berbicara dengan antarmuka serial.
Pandangan lain di atas adalah seperti beberapa diposting di atas untuk menggunakan Arduino, tetapi juga menyertakan USB Host Shield dari Sparkfun untuk menangani keyboard musik berbasis USB. Ini memungkinkan Arduino diprogram sebagai kombo keyboard atau mouse keyboard dalam chip boot loader dan memungkinkan perangkat untuk bertindak sebagai host USB untuk keyboard musik berbasis USB. Maka Anda ditanggung untuk kedua jenis. Meskipun, saya masih berpikir metode port serial virtual lebih fleksibel dan akan lebih mudah diprogram dalam jangka panjang. Perangkat Arduino akan lebih sulit diubah daripada program atau layanan desktop.
Ada kemungkinan lain: Keyboard satu tangan yang sudah dikunci sudah ada. Saya telah melihat video tentang mereka, tetapi Anda harus menentukan apakah itu menyakiti Anda atau tidak.
sumber
Seharusnya cukup mudah menggunakan sesuatu seperti antarmuka .NET DirectSound untuk menghubungkan ke perangkat MIDI. Anda perlu mengidentifikasi perangkat MIDI target Anda dan kemudian mendapatkan kode untuk mendengarkan pada pesan yang masuk (ada artikel tentang melakukan ini melalui Google).
Karena Anda menggunakan MIDI sebagai keyboard, pada dasarnya hanya ada dua pesan MIDI yang perlu Anda deteksi, yaitu note on dan note off. Pesan MIDI adalah tiga byte data yang menentukan perintah, catatan, dan kecepatan. Catatan adalah hanya nomor catatan (kadang-kadang tumpukan MIDI 'buruk' mengirim catatan dengan kecepatan nol yang juga harus Anda harapkan).
Setelah Anda memiliki pesan yang menerjemahkannya, output keyboard harus cukup sederhana dari .NET.
Ada banyak saran dalam jawaban lain tentang teknis; Saya hanya ingin memberi Anda gambaran tentang pesan MIDI yang sebenarnya. Semoga berhasil!
sumber
Anda akan mendapatkan hasil yang lebih baik dan lebih bahagia (terlepas dari sistem operasi dan / atau program DAW apa yang ingin Anda gunakan) dengan memainkan keyboard MIDI eksternal sebagai pengontrol melalui kartu suara Anda. Lalu rutekan itu ke perangkat lunak GB Anda (atau apa pun) dan nada menghasilkan banyak suara yang telah mereka berikan kepada Anda secara real-time.
Jika kartu suara Anda tidak mendukung MIDI I / O (ins / out / thrus), itu tidak masalah. Anda dapat mempertimbangkan untuk meneliti dan berinvestasi dalam konverter top table MIDI eksternal. Banyak yang dilengkapi untuk lebih lanjut mengkonversi out MIDI ke USB 2.0 (dengan melewatkan kartu suara yang ada sama sekali).
Sebagai contoh: cukup sulit untuk mendapatkan hasil note note "mirip manusia" melalui opsi kunci perubahan Z dan X menggunakan keyboard komputer dan alat pensil. Sebaliknya, ketika jari Anda sendiri bisa memainkannya dengan keyboard MIDI dari rentang register oktaf fisiknya sendiri — segera!
Saya menyadari kendala anggaran mungkin terlibat. Tetapi, beberapa dari keyboard oktaf tipe 5 "Casio" yang tampaknya murah ini dijual di Radio Shack dengan harga di bawah $ 100,00 Dolar AS (* atau kurang) adalah semua yang Anda perlukan (ditambah, beberapa patch suara on-board mereka dan modul sequencer berbunyi dan menangani luar biasa baik untuk hal-hal lain juga).
Opsi keyboard RadioShack MIDI .
Adapun konverter MIDI eksternal untuk kartu suara yang ada, saya telah menjalankan beberapa pencarian Google untuk Anda sebagai berikut dengan platform Mac khusus dalam pikiran:
Banyak informasi konversi MIDI eksternal ini mungkin sulit bagi Anda pada awalnya, jadi saya telah merinci lebih banyak hal sebagai "ramah pengguna" untuk pertimbangan & anggaran Anda:
Tidak ada yang salah dengan memfasilitasi keyboard virtual seperti VST saat menggunakan DAW . Mereka memiliki tempat mereka.
Tapi, Anda terdengar seperti keyboardis yang ulung. Jadi, mengapa tidak mempertimbangkan opsi konversi MIDI / keyboard eksternal yang baru saja saya sebutkan untuk diri Anda sendiri?
Semoga berhasil dan saya harap ini memberi Anda beberapa ide yang dapat dan akan bekerja untuk Anda!
sumber
Jika Anda tidak ingin melakukan pemrograman sendiri tetapi hanya ingin masalah terpecahkan, Anda cukup membeli keyboard USB-MIDI tempat Anda dapat menetapkan ulang tombol apa saja untuk mengirim sinyal output keyboard QWERTY alih-alih MIDI-output, untuk contoh M-Audio Axiom Pro
Metode ini akan bekerja dengan OS apa pun dan komputer apa pun yang mendukung keyboard USB standar karena MIDI-keyboard akan mengidentifikasi dirinya sebagai keyboard QWERTY standar.
sumber
Anda dapat menggunakan skrip AutoIt sederhana untuk membaca acara MIDI, lihat Input MIDI .
Anda juga membutuhkan MIDI UDF dan mensimulasikan penekanan tombol .
Membaca acara MIDI harus mudah, tetapi pengontrol MIDI yang berbeda (instrumen) memiliki fitur yang berbeda. Cobalah untuk mencari tahu apa yang bisa dilakukan piano MIDI Anda terlebih dahulu, kemudian lihat bagaimana Anda bisa memetakan fitur-fitur itu dengan baik pada QWERTY- tombol papan tombol yang disimulasikan .
Jika mau, Anda dapat memiliki sesuatu di layar atau di baki untuk membantu Anda melihat apa yang Anda lakukan (maksudnya, untuk Shift, Ctrldan Altsimulasi).
sumber
Anda bisa melihat keyboard chorded . Mereka memiliki keuntungan bahwa Anda tidak perlu menulis driver untuk mereka sebelum Anda dapat menggunakannya, dan beberapa mirip dengan tata letak keyboard piano.
sumber
Jika Anda tahu coding di Java, Anda bisa menggunakan cara ini:
Pertama, implementasikan
javax.sound.midi.Receiver
dengan asend(..)
metode yang memetakan peristiwa 'Catatan pada' untuk penekanan tombol seperti yang Anda inginkan.Anda perlu mendapatkan konten MidiMessage dengan
getMessage
metode dan intepret dengan cara Anda. Arti byte pesan dapat ditemukan di MIDI Messages .Setelah menerima 'note on' atau 'note off' untuk kunci keyboard tertentu, Anda dapat memetakannya ke kunci yang Anda suka dengan menetapkannya sebagai konstanta kelas KeyEvent, sesuatu seperti C # 4 -> KeyEvent.VK_A dan seterusnya . Kode kunci ini kemudian dapat digunakan oleh
java.awt.Robot
metode keyPress dan keyRelease untuk benar-benar mengirim penekanan tombol ke OS dan dengan demikian ke aplikasi lain.sumber
Saya setuju dengan jawaban Brian O'Dell - jika ini proyek saya, saya akan melakukannya di perangkat keras. Ini memiliki keuntungan sebagai platform dan perangkat keras independen - kotak Anda menggantikan kebutuhan untuk antarmuka MIDI-USB dan PC API.
mbed adalah platform prototyping cepat yang sangat mudah dipelajari, dan memiliki beberapa keunggulan dibandingkan Arduino IMHO (kompiler online, flash 512 KB, 96 MHz, bahasa C ++). Ini memiliki antarmuka keyboard USB dan antarmuka USB Midi telah ditulis sebelumnya untuk Anda.
Komunitas ini sangat ramah dan bersedia membantu, dan ada banyak proyek yang menggunakan emulasi menyembunyikan MIDI dan USB - cari Youtube untuk "mbed MIDI" atau sejenisnya.
sumber
Jika Anda menggunakan Linux, silakan ambil di Footware .
Itu harus persis apa yang Anda cari - jika Anda menyesuaikan pitch MIDI ke tombol yang Anda sukai ...
Saya tidak pernah berpikir ini bisa bermanfaat bagi siapa pun kecuali saya; o)
sumber
Coba gunakan sistem berbasis mikrokontroler, seperti Arduino .
sumber
Ini tidak akan terlalu sulit.
Saya berasumsi Anda menggunakan Windows , tidak yakin tentang itu. Saya telah menulis sequencer MIDI , http://pianocheetah.com , dalam bahasa C ++ lama , dan itu memungkinkan Anda menggunakan keyboard piano untuk menjalankan perintah. Tidak ada alasan Anda tidak dapat melakukan hal yang sama untuk menekan tombol ke aliran input keyboard.
Tapi ayolah sekarang. Anda ingat berapa lama Anda mempelajari keyboard sejak awal, bukan? Apakah Anda bersedia melakukan itu lagi? Dan apakah Anda bersedia mencemari keyboard Anda yang diberkati dengan sekelompok simbol kunci yang tampak bodoh di atasnya?
Anda harus menggunakan setidaknya 26 alfa, 10 angka, 11 tanda baca, dan setidaknya 12 tombol fungsi DAN status bergesernya. Jadi itu 60 kunci plus status bergeser. Itu akan membakar 5 oktaf kunci penuh. Anda akan melakukan piano "hop" = semua = waktu. Ucapkan selamat tinggal pada sentuhan mengetik.
Anda dapat menyelamatkan diri dari RSI , tetapi Anda telah menciptakan jenis mimpi buruk lain untuk diri sendiri.
Dan semoga sukses membuat bos Anda membelikan Anda keyboard MIDI di tempat kerja.
Jika Anda benar-benar belajar bermain piano, Anda telah belajar cara bermain bebas stres. Lakukan itu pada keyboard QWERTY . Tidak ada ketegangan. Mulai dengan lambat.
sumber