Mercurial > hg > constant-q-cpp
changeset 118:36bfbc606642
Move kernel include (not public) to src, remove some unused files
author | Chris Cannam <c.cannam@qmul.ac.uk> |
---|---|
date | Thu, 15 May 2014 12:06:31 +0100 |
parents | 930ff4ce4018 |
children | a38d6940f8fb |
files | cpp-qm-dsp/.keep cpp-standalone/.keep cq/CQKernel.h misc/yeti/nbproject/ide-file-targets.xml misc/yeti/nbproject/project.xml src/CQKernel.h |
diffstat | 4 files changed, 82 insertions(+), 182 deletions(-) [+] |
line wrap: on
line diff
--- a/cq/CQKernel.h Thu May 15 12:04:56 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ -/* - Constant-Q library - Copyright (c) 2013-2014 Queen Mary, University of London - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, copy, - modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Except as contained in this notice, the names of the Centre for - Digital Music; Queen Mary, University of London; and Chris Cannam - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in this Software without prior written - authorization. -*/ - -#ifndef CQ_KERNEL_H -#define CQ_KERNEL_H - -#include <vector> -#include <complex> - -class FFT; - -class CQKernel -{ -public: - CQKernel(double sampleRate, double maxFreq, int binsPerOctave); - ~CQKernel(); - - struct Properties { - double sampleRate; - double maxFrequency; - double minFrequency; - int binsPerOctave; - int fftSize; - int fftHop; - int atomsPerFrame; - int atomSpacing; - int firstCentre; - int lastCentre; - double Q; - }; - - Properties getProperties() const { return m_p; } - - std::vector<std::complex<double> > processForward - (const std::vector<std::complex<double> > &); - - std::vector<std::complex<double> > processInverse - (const std::vector<std::complex<double> > &); - -private: - Properties m_p; - FFT *m_fft; - - struct KernelMatrix { - std::vector<int> origin; - std::vector<std::vector<std::complex<double> > > data; - }; - KernelMatrix m_kernel; - - void generateKernel(); - void finaliseKernel(); -}; - -#endif
--- a/misc/yeti/nbproject/ide-file-targets.xml Thu May 15 12:04:56 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project basedir=".." name="cqt-IDE"> - <!-- TODO: edit the following target according to your needs --> - <!-- (more info: http://www.netbeans.org/kb/articles/freeform-config.html#debugj2se) --> - <property name="maydir" value="${basedir}/../../may"/> - <property name="yetidir" value="${basedir}/../../yeti"/> - <property name="jardir" value="${maydir}/ext/jar"/> - <path id="cp"> - <fileset dir="${basedir}"> - <include name="cqt.jar"/> - </fileset> - <fileset dir="${jardir}"> - <include name="*.jar"/> - </fileset> - <fileset dir="${yetidir}"> - <include name="yeti.jar"/> - </fileset> - <fileset dir="${maydir}"> - <include name="may.jar"/> - </fileset> - </path> - <target name="debug-nb"> - <nbjpdastart addressproperty="jpda.address" name="cqt" transport="dt_socket"> - <classpath refid="cp"/> - </nbjpdastart> - <!-- TODO configure the main class for your project here: --> - <java classname="plotfile" fork="true"> - <classpath refid="cp"/> - <jvmarg value="-Xdebug"/> - <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/> - <arg value="${basedir}/test.wav"/> - </java> - </target> - <target name="-profile-check"> - <startprofiler freeform="true"/> - </target> - <!-- TODO: edit the following target according to your needs --> - <!-- (more info: http://netbeans.org/kb/articles/freeform-config.html#profilej2se) --> - <target depends="-profile-check" if="profiler.configured" name="profile-nb"> - <!-- TODO configure the main class for your project here: --> - <java classname="plotfile" fork="true"> - <classpath refid="cp"/> - <jvmarg line="${agent.jvmargs}"/> - <arg value="${basedir}/test.wav"/> - </java> - </target> -</project>
--- a/misc/yeti/nbproject/project.xml Thu May 15 12:04:56 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://www.netbeans.org/ns/project/1"> - <type>org.netbeans.modules.ant.freeform</type> - <configuration> - <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1"> - <!-- Do not use Project Properties customizer when editing this file manually. - To prevent the customizer from showing, create nbproject/project.properties file and enter -auxiliary.show.customizer=false -property there. Adding -auxiliary.show.customizer.message=<message> - will show your customized message when someone attempts to open the customizer. --> - <name>cqt</name> - <properties/> - <folders/> - <ide-actions> - <action name="build"> - <target>jar</target> - </action> - <action name="clean"> - <target>clean</target> - </action> - <action name="rebuild"> - <target>clean</target> - <target>jar</target> - </action> - <action name="debug"> - <script>nbproject/ide-file-targets.xml</script> - <target>debug-nb</target> - </action> - <action name="profile"> - <script>nbproject/ide-file-targets.xml</script> - <target>profile-nb</target> - </action> - </ide-actions> - <view> - <items> - <source-file> - <location>build.xml</location> - </source-file> - </items> - <context-menu> - <ide-action name="build"/> - <ide-action name="rebuild"/> - <ide-action name="clean"/> - <ide-action name="debug"/> - <ide-action name="profile"/> - </context-menu> - </view> - <subprojects/> - </general-data> - <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1"/> - </configuration> -</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/CQKernel.h Thu May 15 12:06:31 2014 +0100 @@ -0,0 +1,82 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ +/* + Constant-Q library + Copyright (c) 2013-2014 Queen Mary, University of London + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, copy, + modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Except as contained in this notice, the names of the Centre for + Digital Music; Queen Mary, University of London; and Chris Cannam + shall not be used in advertising or otherwise to promote the sale, + use or other dealings in this Software without prior written + authorization. +*/ + +#ifndef CQ_KERNEL_H +#define CQ_KERNEL_H + +#include <vector> +#include <complex> + +class FFT; + +class CQKernel +{ +public: + CQKernel(double sampleRate, double maxFreq, int binsPerOctave); + ~CQKernel(); + + struct Properties { + double sampleRate; + double maxFrequency; + double minFrequency; + int binsPerOctave; + int fftSize; + int fftHop; + int atomsPerFrame; + int atomSpacing; + int firstCentre; + int lastCentre; + double Q; + }; + + Properties getProperties() const { return m_p; } + + std::vector<std::complex<double> > processForward + (const std::vector<std::complex<double> > &); + + std::vector<std::complex<double> > processInverse + (const std::vector<std::complex<double> > &); + +private: + Properties m_p; + FFT *m_fft; + + struct KernelMatrix { + std::vector<int> origin; + std::vector<std::vector<std::complex<double> > > data; + }; + KernelMatrix m_kernel; + + void generateKernel(); + void finaliseKernel(); +}; + +#endif