// make a ConsoleInput ConsoleInput in; // tokenizer StringTokenizer tok; // line string lineAsOneStr; string line[0]; string playAsOneStr; string play_line[0]; // our default model Word2Vec model; 0 => int stop; // loading any default here "glove-wiki-gigaword-50.txt" => string filepath; <<< "Poem helper is getting ready, just chill out.... please...", "" >>>; <<< " ...", "" >>>; // load if( !model.load( me.dir() + filepath ) ) { <<< "cannot load work vectors file...", "" >>>; me.exit(); } spork ~ stopper(); check_input(); fun void check_input() { while( true ) { // prompt <<< "" , "">>>; in.prompt( "okay,.. give us your theme =>" ) => now; // read while( in.more() ) { // remember the input in.getLine() => lineAsOneStr; // get it tok.set( lineAsOneStr ); // clear array line.clear(); // print tokens while( tok.more() ) { // put into array line << tok.next().lower(); // print it // <<< line[line.size()-1], "" >>>; } // if non-empty if( line.size()==2 ) { // execute execute( line); } else { <<< "" , "">>>; <<< "Please tell us how many words you want?" , "">>>; <<< "" , "">>>; } } } } fun float[] get_freqs(string word) { if( word.length() < 2 ) { //<<< "usage: vector [word]", "" >>>; } else { float vector[model.dim()]; model.getVector( word, vector ); // print <<< word, "">>>; float curr_freqs[vector.size()]; for( int i; i < vector.size(); i++ ) { Std.fabs(vector[i]) * 500 => float freq; freq => curr_freqs[i]; //<<< ".", "">>>; //<<< "freq = " + freq, "" >>>; } cherr <= IO.newline(); //<<< curr_freqs[2] >>>; return curr_freqs; } } fun void execute( string line[] ) { Std.atoi(line[1]) => int k; string results[k]; model.getSimilar( line[0], k, results ); // print for (0 => int i; i < k; i++) { <<< results[i], "" >>>; } // prompt //<<< "" , "">>>; in.prompt( "do you want the sound of those words? (Yes = 1, No = 2, Maybe = 3) =>" ) => now; // read while( in.more() ) { // remember the input in.getLine() => playAsOneStr; // get it tok.set( playAsOneStr ); // clear array line.clear(); // print tokens while( tok.more() ) { // put into array play_line << tok.next().lower(); // print it // <<< line[line.size()-1], "" >>>; } Std.atoi(play_line[0]) => int p; // if non-empty if (p == 1) { <<< "", "" >>>; <<< "we're working on creating the sounds for you...", "" >>>; <<< "", "" >>>; // array of arrays for all frequencies float freqs[results.size()][1]; // get frequencies for each word for (0 => int i; i < k; i++) { //<<< results[i] >>>; get_freqs(results[i]) @=> freqs[i]; } 1 => stop; play_them(freqs, k); } else if (p ==2) { check_input(); } else if (p == 3) { <<< "you like chaos, don't you?","" >>>; check_input(); } } } fun void play_them(float freqs[][], int k) { SinOsc Oscs[k]; Gain g; for( int s; s < k; s++ ) { Oscs[s] => g => dac; 0 => Oscs[s].gain; } //<<< freqs.size() >>>; //<<< freqs[0].size() >>>; while (stop==1) { .5 => g.gain; for (0 => int i; i < freqs.size(); i++) { for (0 => int p; p < freqs[i].size(); p++) { Oscs[i] @=> SinOsc foo; freqs[i][p] => foo.freq; 1.0/k => foo.gain; } 50::ms => now; } 0 => g.gain; } } fun void stopper() { while(true) { if (stop == 1) { //<<< "before 5" >>>; 5::second => now; //<<< "after5" >>>; 0 => stop; } 1::samp => now; } } 1::day => now;