function [nodes] = generateNodes(origNode_fname,newNode_pname,outfname) if nargin < 3 %outfname = 'NewOutputs\new_nodes.txt'; outfname = []; if nargin < 2 %source location for header files for all of the new nodes newNode_pname = 'C:\Users\wea\Documents\Arduino\libraries\OpenAudio_ArduinoLibrary\'; if nargin < 2 %location of original node text from original index.html origNode_fname = 'ParsedInputs\nodes.txt'; end end end addpath('functions\'); %% read existing node file and get the nodes orig_nodes = parseNodeFile(origNode_fname); % keep just a subset of the nodes % nodes_keep = {'AudioInputI2S','AudioInputUSB',... % 'AudioOutputI2S','AudioOutputUSB',... % 'AudioPlaySdWav',... % 'AudioPlayQueue','AudioRecordQueue',... % 'AudioSynthWaveformSine','AudioSynthWaveform','AudioSynthToneSweep',... % 'AudioSynthNoiseWhite','AudioSynthNoisePink',... % 'AudioAnalyzePeak','AudioAnalyzeRMS',... % 'AudioControlSGTL5000'}; % % nodes_keep = {'AudioInputUSB',... % 'AudioOutputUSB',... % 'AudioPlaySdWav',... % 'AudioPlayQueue','AudioRecordQueue',... % 'AudioAnalyzePeak','AudioAnalyzeRMS'}; nodes_keep = { 'AudioControlSGTL5000',... 'AudioInputUSB',... 'AudioOutputUSB',... }; %adjust node shortnames for Inode=1:length(orig_nodes) node = orig_nodes(Inode); if strcmpi(node.type,'AudioInputUSB'); node.shortName = 'usbAudioIn'; elseif strcmpi(node.type,'AudioOutputUSB'); node.shortName = 'usbAudioOut'; end orig_nodes(Inode)=node; end %adjust node icons for Inode=1:length(orig_nodes) node = orig_nodes(Inode); if strcmpi(node.type,'AudioControlSGTL5000') node.icon = 'debug.png'; end orig_nodes(Inode)=node; end %keep just these nodes=[]; for Ikeep=1:length(nodes_keep) for Iorig=1:length(orig_nodes) node = orig_nodes(Iorig); if strcmpi(node.type,nodes_keep{Ikeep}) if isempty(nodes) nodes = node; else nodes(end+1) = node; end end end end %% add in new nodes %To build text for the new nodes, use buildNewNodes.m. %Then paste into XLSX to edit as desired. %Then load the XLSX via the command below if (0) [num,txt,raw]=xlsread('myNodes.xlsx'); headings = raw(1,:); new_node_data = raw(2:end,:); else %get info directly from underlying classes %source_pname = 'C:\Users\wea\Documents\Arduino\libraries\OpenAudio_ArduinoLibrary\'; [headings, new_node_data]=buildNewNodes(newNode_pname); end %build new node data elements template = nodes(1); new_nodes=[]; for Inode = 1:size(new_node_data,1) node = template; for Iheading = 1:length(headings) node.(headings{Iheading}) = new_node_data{Inode,Iheading}; end if isempty(nodes) nodes = node; else nodes(end+1) = node; end end clear new_node_data %remove some undesired nodes remove_names = {'AudioControlSGTL5000_Extended'}; Ikeep = ones(size(nodes)); for Irem=1:length(remove_names) for Inode = 1:length(Ikeep) if strcmpi(nodes(Inode).type,remove_names{Irem}) Ikeep(Inode)=0; end end end Ikeep = find(Ikeep); nodes = nodes(Ikeep); %% put some of the nodes into a particular desired order first_second = {}; first_second(end+1,:) ={'tlv320aic3206' 'sgtl5000'}; first_second(end+1,:) ={'inputI2S' 'usbAudioIn'}; first_second(end+1,:) ={'outputI2S' 'usbAudioOut'}; first_second(end+1,:) ={'i2sAudioIn' 'usbAudioIn'}; first_second(end+1,:) ={'i2sAudioOut' 'usbAudioOut'}; for Iswap = 1:length(first_second); all_names = {nodes(:).shortName}; I = find(strcmpi(all_names,first_second{Iswap,1})); J = find(strcmpi(all_names,first_second{Iswap,2})); if ~isempty(I) & ~isempty(J) first_node = nodes(I); second_node = nodes(J); nodes(min([I(1) J(1)])) = first_node; %this comes first nodes(max([I(1) J(1)])) = second_node; %this comes second end end %% write new nodes if ~isempty(outfname) writeNodeText(nodes,outfname) end