refactor spectrum viewer

This commit is contained in:
Chikashi Miyama 2019-09-29 12:00:16 +02:00
parent 779e936036
commit e30daa57d9
21 changed files with 550 additions and 200 deletions

View file

@ -60,8 +60,10 @@
<Compile Include="Assets\Editor\AppBuilder.cs" />
<Compile Include="Assets\Editor\EditorToggle.cs" />
<Compile Include="Assets\Editor\LevelMeter.cs" />
<Compile Include="Assets\Editor\PdBindEditor.cs" />
<Compile Include="Assets\Editor\PdConsole.cs" />
<Compile Include="Assets\Editor\PdSpectrumBindEditor.cs" />
<Compile Include="Assets\Editor\RectangularSelection.cs" />
<Compile Include="Assets\Editor\SpectrumGenerator.cs" />
<Compile Include="Assets\Editor\TogglePresenter.cs" />
<Compile Include="Assets\Editor\UnitTest\UnitTest_ParameterResponder.cs" />
<Compile Include="Assets\Scripts\VideoInput\Editor\UnitTest\ComponentFactoryTestCase.cs" />

View file

@ -62,8 +62,8 @@
<Compile Include="Assets\Scripts\DataModel\Parameter.cs" />
<Compile Include="Assets\Scripts\PdConnection\PdArray.cs" />
<Compile Include="Assets\Scripts\PdConnection\PdBackend.cs" />
<Compile Include="Assets\Scripts\PdConnection\PdBind.cs" />
<Compile Include="Assets\Scripts\PdConnection\PdProcess.cs" />
<Compile Include="Assets\Scripts\PdConnection\PdSpectrumBind.cs" />
<Compile Include="Assets\Scripts\Versioning\VersionToggleBehaviour.cs" />
<Compile Include="Assets\Scripts\VideoInput\ComponentFactory.cs" />
<Compile Include="Assets\Scripts\VideoInput\InfraredCamera.cs" />

View file

@ -1,104 +0,0 @@
using UnityEngine;
using UnityEditor;
using Random = UnityEngine.Random;
namespace cylvester
{
[CustomEditor(typeof(PdBind))]
class PdBindEditor : UnityEditor.Editor
{
private int selectedSpectrum_;
private Texture2D texture_;
private readonly string[] channels = {
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"
};
private Rect paintSpace_;
private Rect selectedArea_;
private Rect scaledRect_;
public void OnEnable()
{
texture_ = new Texture2D(256, 256);
}
public override void OnInspectorGUI()
{
var backend = (PdBackend)target;
if (Event.current.isMouse && Event.current.button == 0)
{
switch (Event.current.type)
{
case EventType.MouseDown:
{
var mousePos = Event.current.mousePosition;
selectedArea_.x = mousePos.x;
selectedArea_.y = mousePos.y;
break;
}
case EventType.MouseDrag:
{
var mousePos = Event.current.mousePosition;
selectedArea_.width = mousePos.x - selectedArea_.x;
selectedArea_.height = mousePos.y - selectedArea_.y;
UpdateScaledRect();
break;
}
}
}
GUILayout.Label("PureData Inputs", EditorStyles.boldLabel);
selectedSpectrum_ = EditorGUILayout.Popup("Input Channel", selectedSpectrum_, channels);
GUILayout.Space(30);
GUILayout.Label("Spectrum Extractor", EditorStyles.boldLabel);
var paintSpace = GUILayoutUtility.GetRect(256, 512, 256, 256);
if (Event.current.type == EventType.Repaint)
{
paintSpace_ = paintSpace;
RenderTexture();
GUI.DrawTexture(paintSpace_, texture_);
}
Repaint();
}
private void RenderTexture()
{
for (var y = 0; y < texture_.height; y++)
{
for (var x = 0; x < texture_.width; x++)
{
var alpha = 0.4f;
if ((scaledRect_.x < x && x < (scaledRect_.x + scaledRect_.width)) &&
(scaledRect_.y < y && y < (scaledRect_.y + scaledRect_.height)))
{
alpha = 1f;
}
var color = new Color(Random.value, Random.value, Random.value, alpha);
texture_.SetPixel(x, 256-y, color);
}
}
texture_.Apply();
}
private void UpdateScaledRect()
{
var xPos = (selectedArea_.x - paintSpace_.x) / paintSpace_.width;
var yPos = (selectedArea_.y - paintSpace_.y) / paintSpace_.height;
var width = selectedArea_.width / paintSpace_.width;
var height = selectedArea_.height / paintSpace_.height;
scaledRect_.x = xPos * texture_.width;
scaledRect_.y = yPos * texture_.height;
scaledRect_.width = width * texture_.width;
scaledRect_.height = height * texture_.height;
Debug.Log(scaledRect_);
}
}
}

View file

@ -0,0 +1,64 @@
using UnityEngine;
using UnityEditor;
namespace cylvester
{
[CustomEditor(typeof(PdSpectrumBind))]
class PdSpectrumBindEditor : Editor
{
private const int TextureWidth = 512;
private const int TextureHeight = 256;
private readonly string[] channels = {
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16"
};
private int selectedSpectrum_;
private ISpectrumGenerator spectrumGenerator_;
private IRectangularSelection rectangularSelection_;
private Rect paintSpace_;
public void OnEnable()
{
spectrumGenerator_ = new SpectrumGenerator(TextureWidth, TextureHeight);
rectangularSelection_ = new RectangularSelection(ref paintSpace_, TextureWidth, TextureHeight);
}
public override void OnInspectorGUI()
{
var behaviour = (PdSpectrumBind)target;
if (Event.current.isMouse && Event.current.button == 0)
{
switch (Event.current.type)
{
case EventType.MouseDown:
{
rectangularSelection_.Start(Event.current.mousePosition);
break;
}
case EventType.MouseDrag:
{
rectangularSelection_.Update(Event.current.mousePosition);
break;
}
}
}
GUILayout.Label("PureData Inputs", EditorStyles.boldLabel);
selectedSpectrum_ = EditorGUILayout.Popup("Input Channel", selectedSpectrum_, channels);
GUILayout.Space(5);
GUILayout.Label("Spectrum Extractor", EditorStyles.boldLabel);
var paintSpace = GUILayoutUtility.GetRect(TextureHeight, TextureWidth, TextureHeight, TextureHeight);
if (Event.current.type == EventType.Repaint)
{
paintSpace_ = paintSpace;
spectrumGenerator_.Update(ref rectangularSelection_.Selection);
GUI.DrawTexture(paintSpace_, spectrumGenerator_.Spectrum);
}
Repaint();
}
}
}

View file

@ -0,0 +1,52 @@
using UnityEngine;
namespace cylvester
{
interface IRectangularSelection
{
ref Rect Selection { get; }
void Start(Vector2 mousePosition);
void Update(Vector2 mousePosition);
}
public class RectangularSelection : IRectangularSelection
{
private readonly Rect paintSpace_;
private Rect selectedArea_;
private Rect selectionRect_;
private readonly int textureWidth_;
private readonly int textureHeight_;
public ref Rect Selection => ref selectionRect_;
public RectangularSelection(ref Rect paintSpace, int textureWidth, int textureHeight)
{
paintSpace_ = paintSpace;
textureWidth_ = textureWidth;
textureHeight_ = textureHeight;
}
public void Start(Vector2 mousePosition)
{
selectedArea_.x = mousePosition.x;
selectedArea_.y = mousePosition.y;
}
public void Update(Vector2 mousePosition)
{
selectedArea_.width = mousePosition.x - selectedArea_.x;
selectedArea_.height = mousePosition.y - selectedArea_.y;
var xPos = (selectedArea_.x - paintSpace_.x) / paintSpace_.width;
var yPos = (selectedArea_.y - paintSpace_.y) / paintSpace_.height;
var width = selectedArea_.width / paintSpace_.width;
var height = selectedArea_.height / paintSpace_.height;
selectionRect_.x = xPos * textureWidth_;
selectionRect_.y = yPos * textureHeight_;
selectionRect_.width = width * textureWidth_;
selectionRect_.height = height * textureHeight_;
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 422a7a65df524b57bacf009a035444c7
timeCreated: 1569749893

View file

@ -0,0 +1,42 @@
using UnityEngine;
namespace cylvester
{
interface ISpectrumGenerator
{
Texture2D Spectrum { get; }
void Update(ref Rect selectionRect);
}
public class SpectrumGenerator : ISpectrumGenerator
{
private Texture2D texture_;
private readonly int height_;
public Texture2D Spectrum => texture_;
public SpectrumGenerator(int width, int height)
{
texture_ = new Texture2D(width, height);
height_ = height;
}
public void Update(ref Rect selectionRect)
{
for (var y = 0; y < texture_.height; y++)
{
for (var x = 0; x < texture_.width; x++)
{
var alpha = 0.4f;
if ((selectionRect.x < x && x < (selectionRect.x + selectionRect.width)) &&
(selectionRect.y < y && y < (selectionRect.y + selectionRect.height)))
{
alpha = 1f;
}
var color = new Color(Random.value, Random.value, Random.value, alpha);
texture_.SetPixel(x, height_-y, color);
}
}
texture_.Apply();
}
}
}

View file

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b9ec12d2c1d14323b612b07799422f5a
timeCreated: 1569749431

View file

@ -112,6 +112,83 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &127705016
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 127705019}
- component: {fileID: 127705018}
- component: {fileID: 127705017}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!23 &127705017
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 127705016}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 0
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &127705018
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 127705016}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &127705019
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 127705016}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 4.8635645, y: -4.5257893, z: 12.978625}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &267275365
GameObject:
m_ObjectHideFlags: 0

View file

@ -13,7 +13,7 @@ namespace cylvester
[ExecuteInEditMode]
public class PdBackend : MonoBehaviour, IPdBackend
{
[SerializeField] string mainPatch;
[SerializeField] string mainPatch = "";
[SerializeField] int inchannels = 2;
private Action onToggled_;

View file

@ -1,12 +0,0 @@
using UnityEngine;
namespace cylvester
{
public class PdBind : MonoBehaviour
{
private void Start()
{
}
}
}

View file

@ -0,0 +1,31 @@
using UnityEngine;
namespace cylvester
{
public interface IPdSpectrumBind
{
float TrimmedEnergy { get; }
}
public class PdSpectrumBind : MonoBehaviour, IPdSpectrumBind
{
public int channel;
public int startBin;
public int endBin;
[SerializeField] private float topClip;
[SerializeField] private float bottomClip;
[SerializeField] private float trimmedEnergy = 0f;
public float TrimmedEnergy => trimmedEnergy;
private void Start()
{
}
private void Update()
{
}
}
}

View file

@ -1,26 +1,19 @@
#N canvas 646 421 694 441 10;
#X msg 294 172 \; pd dsp 1;
#X obj 359 49 loadbang;
#N canvas 550 301 727 406 10;
#X msg 307 54 \; pd dsp 1;
#X obj 187 61 loadbang;
#X obj 80 273 adc~ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16;
#N canvas 1223 661 730 390 levelmeter______________________________
#N canvas 0 50 450 250 (subpatch) 0;
#X array loop 211681 float 2;
#X coords 0 1 211681 -1 200 140 1 0 0;
#X restore 446 219 graph;
#X obj 274 146 soundfiler;
#X msg 269 109 read -resize drumloop.wav loop;
#X obj 6 318 dac~, f 6;
#X obj 31 228 tabplay~ loop;
#X obj 30 179 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#N canvas 1194 597 730 390 analyzers_______________________________
0;
#X obj 109 321 table levelmeters 16;
#X obj 96 181 levelwriter 0;
#X obj 120 204 levelwriter 1;
#X obj 149 226 levelwriter 2;
#X obj 173 249 levelwriter 3;
#X obj 199 182 levelwriter 4;
#X obj 224 205 levelwriter 5;
#X obj 252 227 levelwriter 6;
#X obj 277 250 levelwriter 7;
#X obj 300 183 levelwriter 8;
#X obj 324 206 levelwriter 9;
#X obj 353 228 levelwriter 10;
#X obj 377 251 levelwriter 11;
#X obj 403 184 levelwriter 12;
#X obj 428 207 levelwriter 13;
#X obj 457 229 levelwriter 14;
#X obj 481 252 levelwriter 15;
#X obj 95 44 inlet~;
#X obj 119 69 inlet~;
#X obj 148 96 inlet~;
@ -37,65 +30,213 @@
#X obj 425 80 inlet~;
#X obj 454 111 inlet~;
#X obj 478 132 inlet~;
#X connect 17 0 1 0;
#X connect 18 0 2 0;
#X connect 19 0 3 0;
#X connect 20 0 4 0;
#X connect 21 0 5 0;
#X connect 22 0 6 0;
#X connect 23 0 7 0;
#X connect 24 0 8 0;
#X connect 25 0 9 0;
#X connect 26 0 10 0;
#X connect 27 0 11 0;
#X connect 28 0 12 0;
#X connect 29 0 13 0;
#X connect 30 0 14 0;
#X connect 31 0 15 0;
#X connect 32 0 16 0;
#X restore 79 309 pd levelmeter______________________________;
#X obj 63 167 shmem levelmeters 16;
#X obj 63 108 metro 50;
#X obj 58 19 loadbang;
#X obj 66 79 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
;
#X msg 64 50 1;
#N canvas 0 50 450 250 (subpatch) 0;
#X array loop 211681 float 2;
#X coords 0 1 211681 -1 200 140 1 0 0;
#X restore 446 219 graph;
#X obj 446 134 soundfiler;
#X msg 441 97 read -resize drumloop.wav loop;
#X obj 6 318 dac~, f 6;
#X obj 31 228 tabplay~ loop;
#X obj 30 179 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 96 183 core 0;
#X obj 120 204 core 1;
#X obj 149 226 core 2;
#X obj 173 249 core 3;
#X obj 199 182 core 4;
#X obj 225 205 core 5;
#X obj 252 227 core 6;
#X obj 277 250 core 7;
#X obj 300 183 core 8;
#X obj 324 206 core 9;
#X obj 354 228 core 10;
#X obj 377 251 core 11;
#X obj 403 184 core 12;
#X obj 428 207 core 13;
#X obj 457 229 core 14;
#X obj 481 252 core 15;
#X connect 0 0 16 0;
#X connect 1 0 17 0;
#X connect 2 0 18 0;
#X connect 3 0 19 0;
#X connect 4 0 20 0;
#X connect 5 0 21 0;
#X connect 6 0 22 0;
#X connect 7 0 23 0;
#X connect 8 0 24 0;
#X connect 9 0 25 0;
#X connect 10 0 26 0;
#X connect 11 0 27 0;
#X connect 12 0 28 0;
#X connect 13 0 29 0;
#X connect 14 0 30 0;
#X connect 15 0 31 0;
#X restore 80 309 pd analyzers_______________________________;
#X obj 46 26 bang~;
#X obj 46 49 count 16;
#X obj 46 76 sel 0;
#X obj 46 102 s shmemupdate;
#N canvas 0 50 450 300 shmems 0;
#X obj 45 78 shmem levelmeters 16;
#X obj 45 42 r shmemupdate;
#X obj 42 105 table levelmeters 16;
#X connect 1 0 0 0;
#X connect 1 0 11 0;
#X connect 1 0 14 0;
#X connect 2 0 3 0;
#X connect 2 1 3 1;
#X connect 2 2 3 2;
#X connect 2 3 3 3;
#X connect 2 4 3 4;
#X connect 2 5 3 5;
#X connect 2 6 3 6;
#X connect 2 7 3 7;
#X connect 2 8 3 8;
#X connect 2 9 3 9;
#X connect 2 10 3 10;
#X connect 2 11 3 11;
#X connect 2 12 3 12;
#X connect 2 13 3 13;
#X connect 2 14 3 14;
#X connect 2 15 3 15;
#X restore 608 25 pd shmems;
#N canvas 763 290 686 441 window 0;
#N canvas 0 0 450 300 (subpatch) 0;
#X array hann 1024 float 1;
#A 0 0 1.88351e-005 3.76403e-005 9.41157e-005 0.000150591 0.000244677
0.000338793 0.000470519 0.000602275 0.000771612 0.000940949 0.00114787
0.00135478 0.00159925 0.00184369 0.00212568 0.00240764 0.00272709 0.00304651
0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541174 0.00588053
0.0063493 0.00685525 0.00736117 0.0079042 0.00844723 0.0090273 0.00960734
0.0102243 0.0108413 0.0114951 0.0121489 0.0128395 0.01353 0.0142572
0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847
0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161
0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035
0.0346252 0.0357469 0.0369035 0.0380601 0.0392516 0.040443 0.041669
0.042895 0.0441554 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626
0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502
0.0619648 0.0634605 0.0649563 0.0664848 0.0680134 0.0695744 0.0711355
0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762
0.0842649 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711
0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631
0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431
0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134
0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699
0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084
0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244
0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133
0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704
0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907
0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691
0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003
0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579
0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997
0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567
0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444
0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571
0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889
0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934
0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864
0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404
0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899
0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729
0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152
0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529
0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926
0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656
0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659
0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215
0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027
0.732984 0.735699 0.738396 0.741092 0.743771 0.74645 0.74911 0.75177
0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663
0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929
0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431
0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209
0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189
0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328
0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584
0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919
0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295
0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678
0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036
0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338
0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558
0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867
0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654
0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489
0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159
0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651
0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954
0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059
0.999228 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962
0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529
0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874
0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019
0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972
0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742
0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342
0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787
0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095
0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288
0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389
0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424
0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422
0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414
0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435
0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252
0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707
0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037
0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554
0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003
0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323
0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967
0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392
0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654
0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165
0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324
0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069
0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458
0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546
0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393
0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056
0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593
0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064
0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527
0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042
0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668
0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463
0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486
0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794
0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445
0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495
0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999
0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012
0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585
0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772
0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622
0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183
0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502
0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625
0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595
0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452
0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236
0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894532 0.0877021
0.0859821 0.084262 0.0825733 0.0808845 0.0792273 0.0775701 0.0759448
0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537
0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814
0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136
0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014
0.0357447 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259
0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366
0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102
0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938
0.01084 0.0102231 0.00960615 0.00902611 0.0084461 0.0079031 0.0073601
0.00685418 0.00634828 0.00587955;
#A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340265
0.00304583 0.00272644 0.00240701 0.00212508 0.00184315 0.00159872 0.00135431
0.00114745 0.000940561 0.000771254 0.000601947 0.000470281 0.000338584
0.000244498 0.000150442 9.39965e-005 3.75807e-005 1.87755e-005;
#X coords 0 1 1023 0 300 100 1 0 0;
#X restore 39 32 graph;
#X restore 611 47 pd window;
#X connect 1 0 0 0;
#X connect 1 0 5 0;
#X connect 1 0 8 0;
#X connect 2 0 9 0;
#X connect 2 1 9 1;
#X connect 2 2 9 2;
#X connect 2 3 9 3;
#X connect 2 4 9 4;
#X connect 2 5 9 5;
#X connect 2 6 9 6;
#X connect 2 7 9 7;
#X connect 2 8 9 8;
#X connect 2 9 9 9;
#X connect 2 10 9 10;
#X connect 2 11 9 11;
#X connect 2 12 9 12;
#X connect 2 13 9 13;
#X connect 2 14 9 14;
#X connect 2 15 9 15;
#X connect 5 0 4 0;
#X connect 6 0 8 0;
#X connect 7 0 5 0;
#X connect 7 0 6 1;
#X connect 7 0 6 0;
#X connect 7 0 9 0;
#X connect 7 1 8 0;
#X connect 8 0 7 0;
#X connect 11 0 10 0;
#X connect 13 0 12 1;
#X connect 13 0 12 0;
#X connect 13 0 3 0;
#X connect 13 1 14 0;
#X connect 14 0 13 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 12 0 13 0;

View file

@ -4,7 +4,10 @@
#X obj 162 153 loadbang;
#X obj 167 201 f \$1;
#X obj 57 239 tabwrite levelmeters;
#X obj 85 135 spectrum \$1;
#X obj 229 240 table fft_\$1 512;
#X connect 0 0 4 0;
#X connect 1 0 0 0;
#X connect 1 0 5 0;
#X connect 2 0 3 0;
#X connect 3 0 4 1;

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ce1d1fba9496a6f45ac752b4d01ef632
guid: ffeec6b2f4ee66447a818305fd0fd53c
DefaultImporter:
externalObjects: {}
userData:

View file

@ -0,0 +1,14 @@
#N canvas 1383 500 450 449 10;
#X obj 76 96 inlet;
#X obj 166 145 + 1;
#X obj 76 149 f 0;
#X obj 76 242 sel \$1;
#X msg 178 210 0, f 11;
#X obj 5 292 outlet;
#X connect 0 0 2 0;
#X connect 1 0 2 1;
#X connect 2 0 3 0;
#X connect 2 0 5 0;
#X connect 3 0 4 0;
#X connect 3 1 1 0;
#X connect 4 0 2 1;

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6459c895fc8fc584197b481bb701000e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,20 @@
#N canvas 1959 406 681 467 10;
#X obj 38 30 inlet~;
#X obj 45 134 rfft~;
#X obj 45 186 *~;
#X obj 82 186 *~;
#X obj 45 226 q8_sqrt~;
#X obj 169 96 block~ 1024 1 1;
#X obj 102 58 tabreceive~ hann;
#X obj 76 92 *~;
#X obj 45 266 tabsend~ fft_\$1;
#X connect 0 0 7 0;
#X connect 1 0 2 0;
#X connect 1 0 2 1;
#X connect 1 1 3 0;
#X connect 1 1 3 1;
#X connect 2 0 4 0;
#X connect 3 0 4 0;
#X connect 4 0 8 0;
#X connect 6 0 7 1;
#X connect 7 0 1 0;

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e56e8121fbc616141996c04e582ed74a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: