// if intArrays have the same # of elements and those elements are equal
bool IntArray::operator==(IntArray ia) {
  if (length() == ia.length()) {
    for (int i = 0; i < ia.length(); i++) {
      if (num[a+i-1] != ia[ia.low()+i]) return false;
    }
    return true;
  } else return false;
}
BEGIN_UGEN_NAMESPACE

#include "ugen_FFTMagnitudeSelection.h"
#include "ugen_FFTEngine.h"
#include "../core/ugen_Bits.h"

FFTMagnitudeSelectionUGenInternal::FFTMagnitudeSelectionUGenInternal(UGen const& input, 
																	 FFTEngine const& fft, 
																	 const int overlap, 
																	 IntArray const& _bins) throw()
:	ProxyOwnerUGenInternal(NumInputs, _bins.length()-1),
	fftEngine(fft),
	fftSize(fftEngine.size()),
	fftSizeHalved(fftSize / 2),	
	overlap_(overlap < 1 ? 1 : overlap),
	hopSize(fftSize / overlap),
	overlapSize(fftSize - hopSize),
	maxNumBins(fftSizeHalved + 1),
	bins(_bins),
	inputBuffer(BufferSpec(fftSize, 1, true)),
	outputBuffer(BufferSpec(fftSize, 1, true)),
	bufferIndex(fftSize - hopSize),
	magnitudes(BufferSpec(bins.length(), 1, true)),
	outputSampleData(new float*[bins.length()])
{
	ugen_assert(overlap == overlap_);	// should be > 0
	ugen_assert(bins.length() > 0);
	
	inputs[Input] = input;
}
Example #3
0
TextArray IOKey::collectTypeNames (IntArray const& keys) throw()
{
    const int numKeys = keys.length();
    TextArray names (TextArray::withSize (numKeys));
    
    for (int i = 0; i < numKeys; ++i)
        names.put (i, IOKey::getTypeName (keys.atUnchecked (i)));
    
    return names;
}
Example #4
0
TextArray Measure::collectSymbols (IntArray const& keys) throw()
{
    const int numKeys = keys.length();
    TextArray names (TextArray::withSize (numKeys));
    
    for (int i = 0; i < numKeys; ++i)
        names.put (i, Measure::getSymbol (keys.atUnchecked (i)));
    
    return names;    
}
bool IntArray::operator+=(IntArray ia) {
//  cout << *this << endl;
	if (length() == ia.length()) {
		for (int i = 0; i <= length(); i++) {
			num[i] += ia[ia.low()+i];
		}
		return true;
	}
	cout << "totally simulating a halt" << endl;
	return false;
}
Example #6
0
UGenArray UGenArray::wrapAt(IntArray const& indices) const throw()
{	
	if(internal->size() == 0) return UGenArray();
	
	const int size = indices.length();
	
	if(size == 0)
	{
		return UGenArray();
	}
	else
	{
		UGenArray newArray(size);
		
		for(int i = 0; i < size; i++)
		{
			const int index = indices.at(i);
			newArray.put(i, wrapAt(index));
		}
		
		return newArray;
	}
}
Example #7
0
/* Reads core metadata from the currently initialized reader. */
void readCoreMetadata() {
  if (!doCore) return; // skip core metadata printout

  // read basic metadata
  cout << endl;
  cout << "Reading core metadata" << endl;
  cout << "Filename = " << *id << endl;
  StringArray used = reader->getUsedFiles();
  int usedLength = used.isNull() ? -1 : (int) used.length();
  bool usedValid = usedLength > 0;
  if (usedValid) {
    for (int u=0; u<usedLength; u++) {
      if (used[u].isNull()) {
        usedValid = false;
        break;
      }
    }
  }
  if (!usedValid) {
    cout <<
      "************ Warning: invalid used files list ************" << endl;
  }
  if (used.isNull()) {
    cout << "Used files = null" << endl;
  }
  else if (usedLength == 0) {
    cout << "Used files = []" << endl;
  }
  else if (usedLength > 1) {
    cout << "Used files:" << endl;
    for (int u=0; u<usedLength; u++) cout << "\t" << used[u] << endl;
  }
  else if (id && !id->equals(used[0])) {
    cout << "Used files = [" << used[0] << "]" << endl;
  }
  int seriesCount = reader->getSeriesCount();
  cout << "Series count = " << seriesCount << endl;
  MetadataStore ms = reader->getMetadataStore();
  MetadataRetrieve mr = MetadataTools::asRetrieve(ms);
  for (int j=0; j<seriesCount; j++) {
    reader->setSeries(j);

    // read basic metadata for series #i
    int imageCount = reader->getImageCount();
    bool rgb = reader->isRGB();
    int sizeX = reader->getSizeX();
    int sizeY = reader->getSizeY();
    int sizeZ = reader->getSizeZ();
    int sizeC = reader->getSizeC();
    int sizeT = reader->getSizeT();
    int pixelType = reader->getPixelType();
    int effSizeC = reader->getEffectiveSizeC();
    int rgbChanCount = reader->getRGBChannelCount();
    bool indexed = reader->isIndexed();
    bool falseColor = reader->isFalseColor();
    ByteArray2D table8 = reader->get8BitLookupTable();
    ShortArray2D table16 = reader->get16BitLookupTable();
    IntArray cLengths = reader->getChannelDimLengths();
    StringArray cTypes = reader->getChannelDimTypes();
    int thumbSizeX = reader->getThumbSizeX();
    int thumbSizeY = reader->getThumbSizeY();
    bool little = reader->isLittleEndian();
    String dimOrder = reader->getDimensionOrder();
    bool orderCertain = reader->isOrderCertain();
    bool thumbnail = reader->isThumbnailSeries();
    bool interleaved = reader->isInterleaved();
    bool metadataComplete = reader->isMetadataComplete();

    // output basic metadata for series #i
    cout << "Series #" << j;
    if (j < mr.getImageCount()) {
      cout << " -- " << mr.getImageName(j);
    }
    cout << ":" << endl;
    cout << "\tImage count = " << imageCount << endl;
    cout << "\tRGB = " << tf(rgb) << " (" << rgbChanCount << ")";
    if (cMerge) cout << " (merged)";
    else if (separate) cout << " (separated)";
    cout << endl;
    if (rgb != (rgbChanCount != 1)) {
      cout << "\t************ Warning: RGB mismatch ************" << endl;
    }
    cout << "\tInterleaved = " << tf(interleaved) << endl;
    cout << "\tIndexed = " << tf(indexed) << " (" <<
      (falseColor ? "false" : "true") << " color";
    if (!table8.isNull()) {
      int numTables8 = table8.length();
      cout << ", 8-bit LUT: " << numTables8 << " x ";
      cout << "?" << endl;//TEMP
      //ByteArray firstTable8 = table8[0]; // FIXME
      //if (firstTable8.isNull()) cout << "null";
      //else cout << firstTable8.length();
    }
    if (!table16.isNull()) {
      int numTables16 = table16.length();
      cout << ", 16-bit LUT: " << numTables16 << " x ";
      cout << "?" << endl;//TEMP
      //ShortArray firstTable16 = table16[0]; // FIXME
      //if (firstTable16.isNull()) cout << "null";
      //else cout << firstTable16.length();
    }
    cout << ")" << endl;
    if (indexed && table8.isNull() && table16.isNull()) {
      cout << "\t************ Warning: no LUT ************" << endl;
    }
    if (!table8.isNull() && !table16.isNull()) {
      cout << "\t************ Warning: multiple LUTs ************" << endl;
    }
    cout << "\tWidth = " << sizeX << endl;
    cout << "\tHeight = " << sizeY << endl;
    cout << "\tSizeZ = " << sizeZ << endl;
    cout << "\tSizeT = " << sizeT << endl;
    cout << "\tSizeC = " << sizeC;
    if (sizeC != effSizeC) cout << " (effectively " << effSizeC << ")";
    int cProduct = 1;
    int numDims = cLengths.length();
    if (numDims == 1 && FormatTools::CHANNEL().equals(cTypes[0])) {
      cProduct = cLengths[0];
    }
    else {
      cout << " (";
      for (int i=0; i<numDims; i++) {
        if (i > 0) cout << " x ";
        int cLength = cLengths[i];
        cout << cLength << " " << cTypes[i];
        cProduct *= cLength;
      }
      cout << ")";
    }
    cout << endl;
    if (numDims == 0 || cProduct != sizeC) {
      cout <<
        "\t************ Warning: C dimension mismatch ************" << endl;
    }
    if (imageCount != sizeZ * effSizeC * sizeT) {
      cout << "\t************ Warning: ZCT mismatch ************" << endl;
    }
    cout << "\tThumbnail size = " <<
      thumbSizeX << " x " << thumbSizeY << endl;
    cout << "\tEndianness = " <<
      (little ? "intel (little)" : "motorola (big)") << endl;
    cout << "\tDimension order = " << dimOrder <<
      (orderCertain ? " (certain)" : " (uncertain)") << endl;
    cout << "\tPixel type = " <<
      FormatTools::getPixelTypeString(pixelType) << endl;
    cout << "\tMetadata complete = " << tf(metadataComplete) << endl;
    cout << "\tThumbnail series = " << tf(thumbnail) << endl;
  }
}