<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">I tried all numbers from 0 to 7, all
the other numbers give, surprisingly, "Power Button ready" and
otherwise the same results.<br>
<br>
Am 22/12/13 13:38, schrieb Julien Saint-Martin:<br>
</div>
<blockquote
cite="mid:CAF8ijLXefKEuLq+TbU3Nc4Eco=j0vmce2KxnG_s6qprSKFuR9A@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>Hi Manuel,<br>
<br>
You're welcome and I think you are close to success
:-) "Sleep Button ready" means ChucK succeeds to open
a device. But it don't looks like to be the right one.<br>
</div>
<br>
</div>
On my side I tested your code replacing 5 by 0 in the
line:<br>
if(!hid.openKeyboard(0)) me.exit();<br>
<br>
</div>
It works for me. Can you try the same thing? Maybe argument
of openKeyboard is not related to the event number in your
system.<br>
<br>
</div>
Cheers,<br>
</div>
Julien<br>
<div>
<div>
<div>
<div><br>
<div><br>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/12/22 Manuel Bärenz <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:manuel@enigmage.de" target="_blank">manuel@enigmage.de</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Thanks a lot Julien,<br>
<br>
I'm still trying to set up the keyboard events. I found
/dev/input/by-path/, which contains symlinks to
/dev/input with sensible names. I guess this is what you
meant. One of them is called
"platform-i8042-serio-0-event-kbd", I assume that is the
keyboard. It links to /dev/input/event5, so I granted
access rights to the device to everyone and wrote the
following little script:<br>
<br>
Hid hid;<br>
HidMsg msg;<br>
if(!hid.openKeyboard(5)) me.exit();<br>
<<< <a moz-do-not-send="true"
href="http://hid.name" target="_blank">hid.name</a>(),
"ready">>>;<br>
while(true)<br>
{<br>
hid => now;<br>
<<< "received event" >>>;<br>
while(hid.recv(msg))<br>
{<br>
<<< msg.ascii, " was used" >>>;<br>
}<br>
}<br>
<br>
The output of it is, surprisingly, "Sleep Button ready",
and it never comes to the point of "received event". Any
ideas?<br>
<br>
Best, Manuel<br>
Am 06/12/13 09:57, schrieb Julien Saint-Martin:<br>
</div>
<div>
<div class="h5">
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>
<div>Hi Manuel and <span
name="Moisés Gabriel Cachay
Tello">Moisés</span>,<br>
<br>
</div>
Sorry for confusion I checked my
code and I use Hid event not
KBHit.<br>
<br>
</div>
I work on linux too (Debian). And
I have to modify a little my linux
config to use KeyBoard in Chuck.<br>
</div>
On linux distrubutions I tried,
Chuck didn't receives Kb event by
default. But fortunately there is a
work around.<br>
</div>
I am not on my linux PC now so maybe
the following is not exactly right:<br>
</div>
Go to directory /dev/input and find
which event corresponds to your keyboard
(there is a directory with links name of
hid but I didn't remember the name) .
For me it is usually event0. <br>
</div>
Then modify access rights to this event to
give read access to everyone.<br>
</div>
After that your chuck may catch keyboard
events.<br>
<br>
</div>
Once ok, Chuck works great on linux and you
can use fantastic Jack server to connect it
directly to other sound tools. So I encourage
you to don't give up with linux :-)<br>
<br>
</div>
have fun,<br>
</div>
Julien<br>
<div>
<div>
<div>
<div>
<div>
<div>
<div><br>
<div>
<div><br>
<br>
<br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/12/5 Moisés Gabriel
Cachay Tello <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:xpktro@gmail.com"
target="_blank">xpktro@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div dir="ltr">I got some problems with the
linux builds also, and my final solution was
using wine and the windows version of
miniAudicle (the windows ChucK standalone
also would work) and everythings just goes
fine, In fact I wrote and tested the above
code with it :)<br>
</div>
<div>
<div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/12/5
Manuel Bärenz <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:manuel@enigmage.de"
target="_blank">manuel@enigmage.de</a>></span><br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF"
text="#000000">
<div>Hey Moisés,<br>
<br>
Thanks again for this more
sophisticated example. I'm
having problems with HIDs, I
constantly get this error:<br>
<p
style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px">HidIn:
couldn't open keyboard 0...<br>
I get the error for all values
from 0 to 5. I'm using Gentoo
Linux. For tonight's
presentation, I'm going to
stick with KBHit probably.<br>
</p>
<p
style="margin-top:0px;margin-bottom:0px;margin-left:0px;margin-right:0px;text-indent:0px"><br>
Best, Manuel<br>
</p>
<br>
<br>
Am 05/12/13 17:43, schrieb
Moisés Gabriel Cachay Tello:<br>
</div>
<div>
<div>
<blockquote type="cite">
<div dir="ltr">Hi, I'm a
coursera's ChucK course
student, in the lectures,
Ge used HIDs to handle
keyboard input, so this
snippet should help (I'm
commenting the code for
clarity).<br>
<br>
// HID stands for
human-interface-device,
also this is an event,<br>
// see below for more info<br>
Hid hid;<br>
<br>
// This is a message, this
will hold the event's
(keypress) information.<br>
HidMsg msg;<br>
<br>
// We should define a
device number since we
would have multiple
keyboards <br>
// attached to our
computer, 0 would do on
most cases but you can try
1, or 2 <br>
// if that doesn't work.<br>
0 => int device_number;<br>
<br>
// We check if the device
attach with ChucK was
successful, otherwise the
program <br>
// would end inmediately<br>
if(!hid.openKeyboard(device_number))
me.exit();<br>
<br>
<<<"Keyboard:", <a
moz-do-not-send="true"
href="http://hid.name"
target="_blank">hid.name</a>(),
" ready!">>>;<br>
<br>
// We setup a simple sound
chain for demonstration
pruposes only<br>
BeeThree organ => JCRev
rev => dac;<br>
.05 => rev.mix;<br>
<br>
// And repeat forever, see
how the keyboard input is
something that would
happen <br>
// *forever*, a keypress
can occur anytime so we
need to stay alert until a
new <br>
// event comes in<br>
while(true) {<br>
// Events are things
that happens sometime, in
ChucK this mains basically
<br>
// hold ourselves
until the event appears
(thats why we wain for the
event <br>
// ChucKing it to now)<br>
hid => now;<br>
<br>
// When our wait
finishes: check all the
messages that came from
the keyboard<br>
// using the recv
function, and passing msg
as the holder of the
information<br>
while(hid.recv(msg)) {<br>
<br>
// we check if the
message is a buttondown
message, in that case:<br>
if(msg.isButtonDown()) {<br>
// We show the
ascii value of the key
pressed<br>
<<<
"Button down:", msg.ascii
>>>;<br>
<br>
// and make
our generator sound, see
how we check if the<br>
// frequency
too much high we simply
discard this message<br>
msg.ascii
=> Std.mtof => float
freq;<br>
if(freq >
20000) continue;<br>
<br>
freq =>
organ.freq;<br>
1 =>
organ.noteOn;<br>
<br>
// this will
make sure the sound will
keep for a minimum amount
of <br>
// time,
otherwise, concurrent
events may stop before
even commencing<br>
80::ms =>
now;<br>
} else {<br>
// If we're
not in a buttondown event,
just assume it's a key has
been<br>
// left out
and shut down the sound.<br>
<<<
"Button up:", msg.ascii
>>>;<br>
1 =>
organ.noteOff;<br>
}<br>
}<br>
<br>
}<br>
<br>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">2013/12/5
Manuel Bärenz <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:manuel@enigmage.de" target="_blank">manuel@enigmage.de</a>></span><br>
<blockquote
class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF"
text="#000000">
<div>Hi Julien,<br>
<br>
No, this is not
the case. KBHits
are only key down
events. I tried to
include several kb
=> now, but it
didn't help.<br>
See also this
example here:<br>
<a
moz-do-not-send="true"
href="http://chuck.cs.princeton.edu/doc/examples/event/kb2.ck"
target="_blank">http://chuck.cs.princeton.edu/doc/examples/event/kb2.ck</a><br>
Apparently, the
solution is
emptying the event
queue by calling
kb.getchar() until
kb.more() returns
false:
<div><br>
<br>
KBHit kb;<br>
<br>
me.sourceDir() +
"/bum.wav" =>
string filename;<br>
<br>
adc => WvOut
b =>
blackhole;<br>
filename =>
b.wavFilename;<br>
kb => now;<br>
</div>
while(kb.more())
kb.getchar();
<div><br>
b.closeFile();<br>
<br>
SndBuf buf =>
dac;<br>
filename =>
buf.read;<br>
kb => now;<br>
<br>
</div>
The important line
is
"while(kb.more())
kb.getchar();",
apparently. So I
guess kb =>
now; doesn't wait
at all if there
are still
unprocessed keys
in the queue.<br>
<br>
Best, Manuel<br>
<br>
Am 05/12/13 12:18,
schrieb Julien
Saint-Martin:<br>
</div>
<div>
<div>
<blockquote
type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>Hi
Manuel,<br>
<br>
</div>
Maybe your
problem is as
follow:<br>
For each key
press there is
two kb events:
key down and
key up.<br>
<br>
</div>
A simple
solution maybe
to write "kb
=> now;"
twice.<br>
<br>
</div>
Cheers,<br>
</div>
Julien<br>
<div>
<div><br>
<br>
<div><br>
</div>
</div>
</div>
</div>
<div
class="gmail_extra"><br>
<br>
<div
class="gmail_quote">2013/12/5
Manuel Bärenz
<span
dir="ltr"><<a
moz-do-not-send="true" href="mailto:manuel@enigmage.de" target="_blank">manuel@enigmage.de</a>></span><br>
<blockquote
class="gmail_quote"
style="margin:0
0 0
.8ex;border-left:1px
#ccc
solid;padding-left:1ex">Hello
again,<br>
<br>
I also wanted
to demonstrate
a simple
sequencer
prototype that
lets me<br>
record a file
and then plays
it back to me.
I've come this
far:<br>
<br>
KBHit kb;<br>
<br>
me.sourceDir()
+ "/bum.wav"
=> string
filename;<br>
<br>
adc =>
WvOut b =>
blackhole;<br>
filename =>
b.wavFilename;<br>
kb => now;<br>
b.closeFile();<br>
<br>
SndBuf buf
=> dac;<br>
filename =>
buf.read;<br>
kb => now;<br>
<br>
But strangely,
the program
doesn't wait
for the second
kb event, but<br>
exits directly
after the
first key that
I hit. Any
ideas what I'm
doing<br>
wrong?<br>
<br>
Best, Manuel<br>
_______________________________________________<br>
chuck-users
mailing list<br>
<a
moz-do-not-send="true"
href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a
moz-do-not-send="true"
href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
chuck-users mailing list
<a moz-do-not-send="true" href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>
<a moz-do-not-send="true" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
</blockquote>
</div>
</div>
</div>
<br>
_______________________________________________<br>
chuck-users mailing
list<br>
<a
moz-do-not-send="true"
href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a
moz-do-not-send="true"
href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
-Moisés </div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
chuck-users mailing list
<a moz-do-not-send="true" href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>
<a moz-do-not-send="true" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
</blockquote>
</div>
</div>
</div>
<br>
_______________________________________________<br>
chuck-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:chuck-users@lists.cs.princeton.edu"
target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a moz-do-not-send="true"
href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<br>
-- <br>
-Moisés </div>
</div>
</div>
<br>
_______________________________________________<br>
chuck-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:chuck-users@lists.cs.princeton.edu"
target="_blank">chuck-users@lists.cs.princeton.edu</a><br>
<a moz-do-not-send="true"
href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
chuck-users mailing list
<a moz-do-not-send="true" href="mailto:chuck-users@lists.cs.princeton.edu" target="_blank">chuck-users@lists.cs.princeton.edu</a>
<a moz-do-not-send="true" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
</blockquote>
</div>
</div>
</div>
<br>
_______________________________________________<br>
chuck-users mailing list<br>
<a moz-do-not-send="true"
href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a><br>
<a moz-do-not-send="true"
href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users"
target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br>
</blockquote>
</div>
<br>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
chuck-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a>
<a class="moz-txt-link-freetext" href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a>
</pre>
</blockquote>
</body>
</html>