Ngoprek Microsoft Surface

Yang udah berhasil dilakukan disalahgunakan:

  • Boot ke USB CD/DVD. Password BIOS memang tidak dikasih, tapi ternyata kita bisa minta ke Customer Support Microsoft.

  • Windows 7 dan 8 preview dapat terpasang dengan baik

  • Ubuntu dan BlankOn juga bisa dijalankan (walau tidak nyoba memasangnya). Skrinsut:

  • Microsoft Surface 1.0 SDK (bukan versi Workstation Edition) ternyata sudah tersedia di partisi bawaan (Windows Vista). Awalnya saya kira Microsoft ngga ngasih installer apa2.

  • SDK tadi aslinya hanya bisa dipasang di Windows Vista Business 32bit yg dibawa oleh Microsoft Surface. Namun dengan sedikit utak-atik, SDK ini juga bisa dipasang di atas Windows 7, termasuk yg 64 bit. Seharusnya bisa juga dipasang di atas Windows 8 Preview, namun saya masih gagal memasangnya.

  • MultiTouchVista bisa dipakai untuk membuat windows 7 touch events. Sumber event bisa macem2 termasuk TUIO, multiple mouse, dan juga Surface Input! Saya belum berhasil melakukan kompilasi MultiTouchVista terbaru yg sudah berisi adapter Surface Input. Akhirnya terpaksa menggunakan TUIO dg didampingi konverter Surface Input ke TUIO.

  • Kalau touch events dari Surface Input sudah sampai ke Windows 7, maka kita udah bisa “megang2” si windows 7. IE sudah mendukung scroll dg menggeser halaman (bukan pada scroll bar) sedangkan Firefox 7 dan Chrome 13 (atau 14?) belum.

Sekian.

Tongseng – a TUIO wrapper for Mac OS X multitouch events

Introducing.. Tongseng!

If you happen to have a MacBook or MacBookPro with a multi-touch touchpad in it, get ready to access many TUIO-enabled multi-touch applications right on your Mac =D Instead of using a multi-touch table, you can also use your multi-touch touchpad to control those applications.

Download Tongseng, mount the dmg file, and run Tongseng. Click the Start button to let Tongseng sends all touches on your touchpad to TUIO-enabled multi-touch applications.

So.. have fun!

Tongseng – a TUIO wrapper for Mac OS X multitouch events

Introducing.. Tongseng!

If you happen to have a MacBook or MacBookPro with a multi-touch touchpad in it, get ready to access many TUIO-enabled multi-touch applications right on your Mac =D Instead of using a multi-touch table, you can also use your multi-touch touchpad to control those applications.

Download Tongseng, mount the dmg file, and run Tongseng. Click the Start button to let Tongseng sends all touches on your touchpad to TUIO-enabled multi-touch applications.

So.. have fun!

Multi-touch Touchpad MacBookPro di Linux

Multi-touch touchpad di MacBookPro bisa saya ambil data mentahnya karena Apple menyediakan pustaka untuk melakukan hal tersebut. Kalau tidak salah, saya juga melihat semacam drivernya tuk Windows, yang juga disediakan oleh Apple. Untuk Linux, berita bagusnya, sudah ada orang yang memulai mencari tahu bagaimana cara mengakses data mentah tersebut. Hasilnya bisa dilihat pada touchd.

Saya sudah mencobanya namun sepertinya masih berupa proof of concept. Masih sangat tidak stabil.

Oprek gak ya? humm..

Multi-touch

Berhubung sudah lebih dari 6 bulan terakhir saya ngoprek2 multi-touch table dg cara membuat aplikasinya, saya jadi pengen bikin tulisan atau tutorial berantai mengenai mainan yg satu ini. Saya akan beri tanda seluruh postingan yg terkait dg tag multitouch supaya bisa lebih mudah diikuti =D Tuk memulai, saya akan cerita sedikit mengenai apa itu multi-touch display, table, application, dan sebagainya.

***

Kalau menurut pelajaran komputer yg mungkin biasa diajarin, secara umum komputer punya 3 jenis komponen, yaitu input, process, dan output. Udah tau kan? jadi saya gak perlu detil2 ngebahas hal ini =P Nah, alat input yang sangat sering dijumpai kalau ngeliat sebuah komputer adalah keyboard dan mouse. Sedangkan alat output yg juga bernasib sama adalah monitor. Jika fungsi keyboard adalah untuk memasukkan data dalam bentuk karakter-karakter, maka fungsi mouse adalah untuk menujuk sesuatu di layar.

Mouse bisa dikategorikan sebagai suatu alat interaksi tidak langsung (indirect interaction device). Mengapa? Karena tempat dimana kita memainkan mouse dan tempat dimana kita melihat hasilnya adalah dua buah bidang yang berbeda. Selain itu, mouse juga sebenarnya diwakilkan oleh sebuah penunjuk yang tampil di layar. Menggerakkan mouse sama saja dengan menggerakan penunjuk tersebut yang lalu benar-benar digunakan untuk menunjuk sebuah objek di layar.

Kalau ada alat interaksi tidak langsung, tentu saja ada alat interaksi langsung (direct interaction device). Contoh yang mungkin cukup sering ditemui adalah touch screen. Sepertinya cukup banyak ditemui, mulai dari alat peraga di toko sampai ponsel yang ada di saku banyak orang. Disebut langsung karena kita bisa secara langsung menunjuk objek yang tampil di layar. Tidak perlu “diwakilkan” dengan alat lain seperti mouse.

Biasanya, touch screen hanya bisa mengenali satu buah jari, alias penunjuk. Jika ada lebih dari satu jadi yg menyentuh layar, maka si alat akan tetap menganggapnya hanya satu buah sentuhan (dengan berbagai cara yg dimiliki, entah seperti apa pastinya). Pada dasarnya sebuah sentuhan ini hanya menggantikan fungsi mouse yang ada di komputer. Berbeda dengan touch screen biasa, sebuah multi-touch display memiliki kemampuan untuk membedakan setiap sentuhan yang ada. Jika ada lebih dari satu sentuhan, maka seluruh sentuhan yang ada akan dikenali dan dikirim ke aplikasi yang ada.

Kalau yang tadi itu adalah multi-touch display, lalu apakah itu multi-touch table? Singkatnya, multi-touch table adalah multi-touch display yg dibuat dalam bentuk meja. Sebuah layar datar horizontal, ya seperti meja lah tentunya =D Selain dalam bentuk meja, multi-touch display juga bisa dibuat vertikal sehingga berupa dinding.

Apa keuntungan dari menggunakan alat semacam ini? Jika multi-touch display ini dibuat berukuran besar, maka alat ini memungkinkan lebih dari satu orang untuk bekerja bersama-sama, berkolaborasi menggunakan aplikasi yang ditampilkan. Sebagai contoh, sebuah permainan puzzle bisa diselesaikan oleh beberapa orang sekaligus pada sebuah aplikasi dan layar yang sama.

Sebelum nulis macem2 lebih jauh, saya mau ngasih sebuah video yg nampilin multi-touch table.

Sekian dulu juga tuk tulisan pertama ini. Nantikan tulisan saya berikutnya mengenai multi-touch table/display/aplication/apalah =D

TUIO data dari multitouch touchpad

Setelah sebelumnya nemu hal menarik tentang multitouch touchpad di mac os x, saya ngoprek2 lg tuk bikin aplikasi kecil yg meneruskan data-data tersebut via TUIO. Hasilnya adalah Tongseng!

Salah satu cara yg bisa dipake tuk menangkap multitouch events di sebuah aplikasi adalah dengan menggunakan TUIO ini. TUIO ini adalah format data (dan API?) yg dipake tuk menampung informasi multitouch events. Data ini lalu dibungkus lagi di atas OSC lalu dikirim via jaringan.

Via jaringan? Ya! Aplikasi yg bertugas memproduksi events dan memproses events adalah dua buah aplikasi berbeda dan mereka berkomunikasi via jaringan. Dengan adanya pemisahan ini, multitouch events tidak harus dihasilkan oleh multitouch table, melainkan bisa juga dg device lainnya seperti iPhone, Wiimote, simulator, dan tentu saja mutltitouch touchpad yg ada di MacBook/MacBookPro.

Silakan buka http://www.tuio.org/?software kalau mau tau software2 terkait.

Mengapa tongseng? silakan tanya Kosha xD

Multitouch browser

I was wondering can I somehow transmit TUIO data to a browser. So I can use javascript and of course HTML and friends to build a (not really) web based multitouch application. I found no available libraries.. well maybe because it is just ridiculous to implement such thing. But hey, it’s fun to have one! So, I decided to give a try.

The first problem is browser speaks HTTP and TUIO uses OSC things over UDP. Actually, creating a TUIO application using Flash also face this kind of problem. But already have a translator that converts TUIO data (which uses OSC over UDP) to XML data that flash accepts which uses TCP connection. So, if I want to have the TUIO data arrived at the browser, I have to transmit it over HTTP.

Beside that, the tracker transmit a data when a touch event happens. In other words, the TUIO data has to be transmitted right into the browser immediately after it is produced. But, as we know, in (ordinary) HTTP connection, browser is the one who initiate connection, not the server. So, how to solve this?

Then.. i remembered Comet! It’s a concept of pushing data to a browser. Exactly fits what I need. Well.. new problem came since I couldn’t found a simple and ready to use library. One requires me to install Jetty. I tried but didn’t know what to do 😀 so I tried to find another solution. Then I stumbled upon a great tutorial that gave me more keywords for google! It was orbited, stomp, and morbidq which all share another keyword: simple 😀

After coding for several.. err.. hours, i guess, finally now I have a working prototype! See the screencast below.

Basically, there is a script that reads TUIO data from tracker. Then it transmit the data to a message queue that supports stomp. Script inside the browser then takes data from the message queue (or the other way around?) and process it. Communication between the message queue and browser is handled by the orbited. I don’t really know what happens inside =D

Well.. just see the code if you want to know more. Check it out at http://github.com/fajran/tuiojs/tree/master. Have fun!

Multitouch browser

I was wondering can I somehow transmit TUIO data to a browser. So I can use javascript and of course HTML and friends to build a (not really) web based multitouch application. I found no available libraries.. well maybe because it is just ridiculous to implement such thing. But hey, it’s fun to have one! So, I decided to give a try.

The first problem is browser speaks HTTP and TUIO uses OSC things over UDP. Actually, creating a TUIO application using Flash also face this kind of problem. But already have a translator that converts TUIO data (which uses OSC over UDP) to XML data that flash accepts which uses TCP connection. So, if I want to have the TUIO data arrived at the browser, I have to transmit it over HTTP.

Beside that, the tracker transmit a data when a touch event happens. In other words, the TUIO data has to be transmitted right into the browser immediately after it is produced. But, as we know, in (ordinary) HTTP connection, browser is the one who initiate connection, not the server. So, how to solve this?

Then.. i remembered Comet! It’s a concept of pushing data to a browser. Exactly fits what I need. Well.. new problem came since I couldn’t found a simple and ready to use library. One requires me to install Jetty. I tried but didn’t know what to do 😀 so I tried to find another solution. Then I stumbled upon a great tutorial that gave me more keywords for google! It was orbited, stomp, and morbidq which all share another keyword: simple 😀

After coding for several.. err.. hours, i guess, finally now I have a working prototype! See the screencast below.

Basically, there is a script that reads TUIO data from tracker. Then it transmit the data to a message queue that supports stomp. Script inside the browser then takes data from the message queue (or the other way around?) and process it. Communication between the message queue and browser is handled by the orbited. I don’t really know what happens inside =D

Well.. just see the code if you want to know more. Check it out at http://github.com/fajran/tuiojs/tree/master. Have fun!

Simulasi air

Bosen ngerjain tesis, trus nemuin contoh kodingan menarik ttg simulasi air. Jadi kepikiran tuk porting kodingan tsb supaya bisa menerima multiple input via TUIO. Voila! jadilah aplikasinya =P

Ini screencastnya..

Kodingan bisa dilihat di http://github.com/fajran/multitouch-water-simulation/.

Kalau mau nyobain..

$ git clone git://github.com/fajran/multitouch-water-simulation.git water
$ cd water
$ make
$ ./water

Pastikan udah nginstall g++, libsdl1.2-dev, libsdl-image1.2-dev, dan bbrp library lain kalo ada (saya gak merhatiin =P). Tuk simulator multitouch table, bisa make buatan reacTIVision.

$ wget http://prdownloads.sourceforge.net/reactivision/TUIO_Simulator-1.4rc1.zip
$ unzip TUIO_Simulator-1.4rc1.zip
$ cd TUIO_Simulator
$ java -jar TuioSimulator.jar

matikan antialiasing (Option => Antialiasing) kalo putus2..