UNPKG

node-genome

Version:

notion of a biologically inspired genome driven by a gene regulatory network

257 lines (143 loc) 5.21 kB
#!/usr/bin/env node var path = require('path'); function resolvePath(str) { if (str.substr(0, 2) === '~/') { str = (process.env.HOME || process.env.HOMEPATH || process.env.HOMEDIR || process.cwd()) + str.substr(1); } return path.resolve(str); } // --- var audio_utils = require("audio-utils"); var shared_utils = require("shared-utils"); console.log("audio_utils ", audio_utils); // ------------------------------------------------ // var genome_module = require('../src/genome'); var genome = genome_module.init({ name : "Corinde Wiers" }); genome.set_random_seed(117); // uncomment to see repeated random sequence // var node_utils = require('./node_utils'); // var node_utils = require("shared-utils"); // var genome = require('./genome').init({ name : "Corinde Stensland"}); console.log("-----------------"); // console.log(genome); // console.log(genome.says()); var add_these = { nodes : { // "nodeid": nodedata, // for now assure node buffer curve size is ODD it ease centering when folding into output curve 0: { size: 3 }, 1: { size: 1 }, 2: { size: 5 }, 3: { size: 5 }, 4: { size: 3}, 5: { size: 1}, }, /* edges : [ {source: 1, target: 2, weight: 10}, {source: 1, target: 3, weight: 10}, {source: 2, target: 3, weight: 10}, {source: 3, target: 1, weight: 10}, {source: 4, target: 1, weight: 10}, {source: 4, target: 3, weight: 10}, {source: 0, target: 3, weight: 16}, // {"source": "sourceid", "target": "targetid"}, ], */ timeslices : [ [ ], [ ], [ ], [ ], [ ], [ ], [ ], [ {nodeid: 1, weight: 10}, {nodeid: 3, weight: 10}, {nodeid: 0, weight: 10} ], [ ], // empty ... no genes here at this timeslice ... will get populated by neighbors [ ], [ ], [ {nodeid: 4, weight: 10} ], [ ], [ ], [ ], [ ], [ {nodeid: 2, weight: 10}, {nodeid: 0, weight: 10}, {nodeid: 3, weight: 10} ], [ ], [ ], [ ], ] }; /* console.log("----------------- add_these ", add_these); console.log("----------------- about to call add_node"); genome.add_node(add_these); console.log("----------------- TOP add_timeslices"); genome.add_timeslices(add_these); console.log("----------------- END add_timeslices"); console.log("-----------------"); // genome.show(); // genome.says(); genome.show(); */ // ------------------------------------------------------------- // // ------------------------------------------------------------- // // ------------------------------------------------------------- // // ------------------------------------------------------------- // // ---- must be one of : 256, 512, 1024, 2048, 4096, 8192, or 16384 // SIZE_BUFFER_RENDER = 1024; // web audio node buffer size which does actual rendering // ------------ synthesize an audio buffer ------------ // SIZE_BUFFER_SOURCE = 256; // SIZE_BUFFER_SOURCE = 16384; // var samples_per_cycle = 64; var samples_per_cycle = 256; var source_obj = {}; var source_obj = audio_utils.pop_audio_buffer(SIZE_BUFFER_SOURCE, samples_per_cycle); // var max_index = 3; var max_index = SIZE_BUFFER_SOURCE; for (var index = 0; index < max_index; index++) { console.log(index, " pop_audio_buffer ", source_obj.buffer[index]); } // ------------------------------------------------------------- // // ------------------------------------------------------------- // // ------------------------------------------------------------- // // ------------------------------------------------------------- // console.log("-------- pop_genome ---------"); genome.pop_genome( { // flavor : "direct", // total_genes : 1, // total_gene_types : 1, // ave_gene_size : SIZE_BUFFER_SOURCE, // // total_timeslices : 44100, // total_timeslices : SIZE_BUFFER_SOURCE, flavor : "pointed", total_genes : 1, total_gene_types : 1, ave_gene_size : SIZE_BUFFER_SOURCE, // total_timeslices : 44100, total_timeslices : SIZE_BUFFER_SOURCE, genes_start_time : { 0 : "middle", } }); // --- console.log("-------- show_genetic_storehouse ---------"); genome.show_genetic_storehouse(); console.log("-------- parse_genome_synth_sound ---------"); // process.exit(9); genome.parse_genome_synth_sound(); console.log("-----------------"); genome.show_genome_buffer(); console.log("-----------------"); var audio_obj = {}; audio_obj.buffer = genome.get_genome_buffer(); console.log("genome_buffer length ", audio_obj.buffer.length); var wav_output_filename = "/tmp/genome_synth_audio.wav"; // node_utils.write_buffer_to_file(audio_obj, wav_output_filename); // shared_utils.write_buffer_to_file(audio_obj, wav_output_filename); shared_utils.write_32_bit_float_buffer_to_16_bit_wav_file(audio_obj, wav_output_filename); console.log("wav_output_filename ", wav_output_filename); console.log("<><><> <><><> <><><> end of processing <><><> <><><> <><><>"); /* var given_num_nodes = 5, total_timeslices = 2, max_timeslices_per_chronos = 3; genome.pop_entire_genome(given_num_nodes, total_timeslices, max_timeslices_per_chronos); */