You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.6 KiB
128 lines
3.6 KiB
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 subsete 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 = {'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
|
|
|
|
|
|
%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
|
|
|
|
%% sort the nodes
|
|
|
|
%put tlv before sgtl
|
|
all_names = {nodes(:).shortName};
|
|
I = find(strcmpi(all_names,'tlv320aic3206'));tlv_node = nodes(I);
|
|
J = find(strcmpi(all_names,'sgtl5000ext')); sgtl_node = nodes(J);
|
|
nodes(min([I(1) J(1)])) = tlv_node; %this comes first
|
|
nodes(max([I(1) J(1)])) = sgtl_node; %this comes second
|
|
|
|
% put i2s before USB
|
|
all_names = {nodes(:).shortName};
|
|
I = find(strcmpi(all_names,'inputI2S'));first_node = nodes(I);
|
|
J = find(strcmpi(all_names,'usbAudioIn')); 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
|
|
|
|
all_names = {nodes(:).shortName};
|
|
I = find(strcmpi(all_names,'outputI2S'));first_node = nodes(I);
|
|
J = find(strcmpi(all_names,'usbAudioOut')); 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
|
|
|
|
%% write new nodes
|
|
if ~isempty(outfname)
|
|
writeNodeText(nodes,outfname)
|
|
end
|
|
|
|
|
|
|
|
|