Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,9 @@ play the next command in the range, or input a command number to play, or input
evaluate to a number (for example, `r`) to repeat the last command. This mode will allow you to explore the
Furby reactions to different commands.

The generated WAV file is saved as `out.wav` in the current directory. Under Windows, the playback is performed
using the provided command-line utility (`bin/win32/dsplay.exe`). Under Unix / Mac, an attempt to use
already existing console players is used (but not tested).
The generated WAV file is saved as `out.wav` in the current directory.
Under Windows, the playback is performed using the provided command-line utility (`bin/win32/dsplay.exe`).
Under Unix / Mac, an attempt to use already existing console players is used (tested for Mac).


### Listen and Decode Furby Commands
Expand Down
16 changes: 13 additions & 3 deletions bin/furby-send.pl
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ BEGIN
}

use Furby::Audio;
use Furby::Command;

if ($^O eq 'MSWin32') {
require Win32::Sound;
Expand Down Expand Up @@ -44,11 +45,17 @@ BEGIN
if (!$interactive) {
Furby::Audio::generate_wav($number, $filename);
play_wav($filename);
my $description = Furby::Command::description($number);
print "\n($number) $description\n\n";

} else {
while ($number <= $max_number) {
Furby::Audio::generate_wav($number, $filename);
print "Command $number ... ";
#print "Command $number ... ";
play_wav($filename);
my $description = Furby::Command::description($number);
print "\n($number) $description\n\n";

if ($number == $max_number) {
print "Done\n";
last;
Expand All @@ -65,18 +72,21 @@ BEGIN
}
}


sub play_wav {
my ($filename) = @_;

my $command = 'aplay'; # assube we're on some Linux desktop flavor

if ($^O eq 'MacOS') {
if ($^O eq 'darwin') {
$command = 'afplay';
}

if ($^O eq 'MSWin32') {
$command = '"'.catfile(dirname(rel2abs($0)), 'win32/dsplay.exe').'"';
}

# print "$^O = $command\n";
system("$command $filename");


}
134 changes: 67 additions & 67 deletions lib/Furby/Command.pm
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@ use Furby::Command::Dictionary;

my $description = {
#...
'350' => '', #! food, tasty ("mmm, yum")
'350' => '! food, tasty ("mmm, yum")', #! food, tasty ("mmm, yum")
#...
'352' => 'Any small eatable tasty stuff (like peanut)', #!
'353' => 'Any bigger soft eatable tasty stuff (like banana)', #!
'354' => 'Any suckable tasty stuff (like oysters, sphagetti)', #!
'355' => 'Any drinkable(?) tasty stuff', #!
'356' => 'Any hard eatable but not tasty stuff (like chicken bone)', #!
'352' => '! Any small eatable tasty stuff (like peanut)', #!
'353' => '! Any bigger soft eatable tasty stuff (like banana)', #!
'354' => '! Any suckable tasty stuff (like oysters, sphagetti)', #!
'355' => '! Any drinkable(?) tasty stuff', #!
'356' => '! Any hard eatable but not tasty stuff (like chicken bone)', #!
#...
'358' => 'Any small not tasty stuff (like pepperoni)', #!
'359' => 'Any bigger soft not tasty stuff (like asparagus)', #!
'360' => 'Any suckable not tasty stuff ', #!
'358' => '! Any small not tasty stuff (like pepperoni)', #!
'359' => '! Any bigger soft not tasty stuff (like asparagus)', #!
'360' => '! Any suckable not tasty stuff ', #!
'361' => '', #!
#...
'368' => '', #!
#...
'370' => '', #!
'371' => '', #!
'372' => 'Any suckable tasty stuff (like beans)', #! "ooh!"
'372' => '! Any suckable tasty stuff (like beans) = ("ooh!")', #! "ooh!"
'373' => '', #!
'374' => '', #!
#...
Expand Down Expand Up @@ -62,14 +62,14 @@ my $description = {
'402' => '', #!
'403' => '', #!
#...
'410' => '', #! something hot?
'410' => '! (something hot ?)', #! something hot?
#...
'412' => '', #! something hot?
'413' => '', #! something hot?
'412' => '! (something hot ?)', #! something hot?
'413' => '! (something hot ?)', #! something hot?
'414' => '', #!
'415' => '', #!
'416' => '', #!
'417' => 'Any non-eatable stuff (toilet paper, pillow, etc)', #!
'417' => '! Any non-eatable stuff (toilet paper, pillow, etc)', #!
'418' => '', #!
'419' => '', #!
'420' => '', #!
Expand All @@ -84,17 +84,17 @@ my $description = {
'702' => 'Event: Chew-chew',
'703' => 'Event: You touched my head or side, you turned me on a side',
'704' => 'Event: Fart',
'705' => 'Event: I woke up!', # sent on Furby wakeup, even before it pronounces the 'Good morning' phrase
'706' => 'Event: (?)', # sent at random when Furby is idle (like ping, or searching for other Furbys?). Responds with '721'
'707' => 'Event: (?)', # sent at random when Furby is idle (like ping, or searching for other Furbys?). Responds with '722'
'708' => 'Event: (?)', # speech: dang-dang-dang-da..... Responds with '723'
'709' => 'Event: (?)', # speech: bo-ga-di-di-do ... dang-dang-dang-da..... Responds with '724'
'705' => '! Event: I woke up!', # sent on Furby wakeup, even before it pronounces the 'Good morning' phrase
'706' => 'Event: (?ping )', # sent at random when Furby is idle (like ping, or searching for other Furbys?). Responds with '721'
'707' => 'Event: (?ping)', # sent at random when Furby is idle (like ping, or searching for other Furbys?). Responds with '722'
'708' => 'Event: (?speech dang-dang-...)', # speech: dang-dang-dang-da..... Responds with '723'
'709' => 'Event: (?speech bo-ga-di-di-do...)', # speech: bo-ga-di-di-do ... dang-dang-dang-da..... Responds with '724'
'710' => 'Event: Me happy (also when head or back is touched)',
'711' => 'Event: cough-cough-cough',
'712' => 'Event: Me hungry! / Kah Ay-tay!',
'713' => 'Event: You touched my tummy; also sent on its own like <touch my tummy, please?> / As command: imitate tummy touch(?)', #<
'714' => '', # something that he dislikes (vomit like sound, changes eyes)
'715' => '', # something he dislikes? speaks rapidly
'714' => 'something that he dislikes (vomit sound, change eyes)', # something that he dislikes (vomit like sound, changes eyes)
'715' => 'smoething that he dislikes (speek rapidly)', # something he dislikes? speaks rapidly
'716' => 'Event: Me happy (you touched my side or back, or head)',
'717' => 'Event: Achoo!',
'718' => 'Event: Yawn (I\'m going to sleep) / As command: Yawn!', # when sent as a command, will yawn / sent automatically twice when Furby is going into deep sleep mode
Expand All @@ -105,19 +105,19 @@ my $description = {
'723' => 'Event: got a command 708 (plus sings a song); as command: sing that song', #! handshake?
'724' => 'Event: got a command 709 (plus sings a song); as command: sing that song', #! handshake?
#...
'760' => '', # "love friend, nay nay noo la"
'761' => '', # "day-dee"
'762' => '', # "meila koo mei ta, meila koo mei ta, like mua, mua, mua" (kiss)
'763' => '', # "ka tulu ata, ata, ata, ata" (song)
'764' => '', # "witi wati to to, blah blah blah blah blah, blah" (song)
'765' => '', # "(fart) oh-ho-ho, tu lu li ku!"
'766' => '', # "boda tei ta eу ku, shaa!"
'760' => '"love friend, nay nay noo la"',
'761' => '"day-dee"',
'762' => '"meila koo mei ta, meila koo mei ta, like mua, mua, mua" (kiss)',
'763' => '"ka tulu ata, ata, ata, ata" (song)',
'764' => '"witi wati to to, blah blah blah blah blah, blah" (song)',
'765' => '"(fart) oh-ho-ho, tu lu li ku!"',
'766' => '"boda tei ta eу ku, shaa!"',
#...
'780' => 'Event: I\'ve got command 790',
'781' => 'Event: I\'ve got command 791',
#...
'790' => '', # "ee day do lay lo la!". Responds with '780'
'791' => '', # "u nai bo li day". Responds with '781'
'790' => '"ee day do lay lo la!"',# Responds with '780'
'791' => '"u nai bo li day"',# Responds with '781'
#...
'813' => 'Request: What\'s your personality?', #! used to initate handshake step 1 and get the current personality type
#...
Expand All @@ -127,49 +127,49 @@ my $description = {
'831' => '', #
'832' => '', #!
#...
'850' => '', # "yeah mi mi be day mu ha ha", "yeah, yeah, yeah! oh yeah yeah!"
'851' => '', # "mmm, ka tulu, me like", "haa"
'852' => '', # "oh-oh-oh-oh!", "dude, no!"
'853' => '', # "grrrh ko ko" something he dislikes
'854' => '', # "grrrh ko ko", "ka bu ku do"
'855' => '', # "ka happy dude", "a ha pee pee day", "yeah nice good boo tai naba"
'856' => '', # "u-ho-ho, a-ho-ho", "blah blah blah blah"
'857' => '', # "a ha! bu da to to", "u ha, he-he-he"
'858' => '', # "ha? du?"
'859' => '', # "a ha", "oh, kah hey hey, I see"
'860' => '', # "ahaa.. be day loo ney", "haa", "um, mmm, hm"
'861' => '', # "huh" (bored?)
'862' => 'Command: Sleep!', #! sleep (for several seconds)
'850' => '"yeah mi mi be day mu ha ha", "yeah, yeah, yeah! oh yeah yeah!"',
'851' => '"mmm, ka tulu, me like", "haa"',
'852' => '"oh-oh-oh-oh!", "dude, no!"',
'853' => '"grrrh ko ko" something he dislikes',
'854' => '"grrrh ko ko", "ka bu ku do"',
'855' => '"ka happy dude", "a ha pee pee day", "yeah nice good boo tai naba"',
'856' => '"u-ho-ho, a-ho-ho", "blah blah blah blah"',
'857' => '"a ha! bu da to to", "u ha, he-he-he"',
'858' => '"ha? du?"',
'859' => '"a ha", "oh, kah hey hey, I see"',
'860' => '"ahaa.. be day loo ney", "haa", "um, mmm, hm"',
'861' => '"huh" (bored?)',
'862' => 'Command: Sleep! (only servel seconds)', #! sleep (for several seconds)
'863' => 'Command: Laugh!', #! laugh
'864' => 'Command: Burp!', #! burp
'865' => 'Command: Fart!', #! fart/poo
'866' => 'Command: Purr!', #! purr
'867' => 'Command: Sneeze!', #! long sneeze
'868' => 'Command: Sing!', #! sing
'869' => 'Command: Talk!', #! talk
'870' => '', # "me tay, yes, yes!" (hearts in his eyes), "di do dude, good friend"
'871' => '', # "ah bu to lu, no like"
'872' => '', # says some rap
'873' => '', # sings: "di-di-di-di, tam-da-di dam"
'874' => '', # eating motion
'875' => '', # angry bite, "he-he-he"
'876' => '', # chewing/sucking sound (like when someone puts a finger in his mouth)
'877' => '', # suck in
'878' => '', # ingest
'879' => '', # short sneeze, "like pea" (or something else, depending on personality)
'880' => '', #! motion (dislike)
'881' => '', # "oh-hoo ha-ha" (or "ha-haa" like something scary or hot)
'882' => '', #! "ah ha me bee dey, nice good!", purr
'883' => '', # tasty: "mmm, yum", "ha haa!"
'884' => '', # not tasty (vomit-like)
'885' => '', # "oooh"
'886' => '', # "chew chew ooh"
'887' => '', #! "aaah" (exclamation) (changes eyes to 'burning' in warrior mode)
'888' => '', # "aaah"
'889' => '', #! motion (sings "ahh-tahoo")
'890' => '', # "baby"
'891' => '', # "ka ay tay oooh", "purr grrr uh oh"
'892' => '', # "mmm, good food"
'870' => '"me tay, yes, yes!" (hearts in his eyes), "di do dude, good friend"',
'871' => '"ah bu to lu, no like"',
'872' => 'says some rap',
'873' => 'sings: "di-di-di-di, tam-da-di dam"',
'874' => 'eating motion',
'875' => 'angry bite, "he-he-he"',
'876' => 'chewing/sucking sound (like when someone puts a finger in his mouth)',
'877' => 'suck in',
'878' => 'ingest',
'879' => 'short sneeze, "like pea" (or something else, depending on personality)',
'880' => '!motion (dislike)',
'881' => 'oh-hoo ha-ha" (or "ha-haa" like something scary or hot)',
'882' => '! "ah ha me bee dey, nice good!", purr',
'883' => 'tasty: "mmm, yum", "ha haa!"',
'884' => 'not tasty (vomit-like)',
'885' => 'oooh"',
'886' => 'chew chew ooh"',
'887' => '! "aaah" (exclamation) (changes eyes to "burning" in warrior mode)',
'888' => '"aaah"',
'889' => '! motion (sings "ahh-tahoo")',
'890' => '"baby"',
'891' => '"ka ay tay oooh", "purr grrr uh oh"',
'892' => '"mmm, good food"',
'893' => '', #
#...
'900' => 'I have no personality developed yet...',
Expand All @@ -191,4 +191,4 @@ sub description {
return $description->{$command} || Furby::Command::Dictionary::description($command);
}

1;
1;