AnalogTapeModel

Physical modelling signal processing for analog tape recording
Log | Files | Refs | Submodules | README | LICENSE

commit 818da8a1a72980f63fa262566b1839f44bacd34a
parent b466a624876729b98b5a9384e1ce40cb479f644e
Author: jatinchowdhury18 <jatinchowdhury18@users.noreply.github.com>
Date:   Fri, 15 Feb 2019 12:23:30 -0800

Update loss effect params

Diffstat:
MPaper/420_paper.pdf | 0
MPaper/420_paper.tex | 7-------
MPlugin/Source/PluginProcessor.cpp | 7-------
MPlugin/Source/PluginProcessor.h | 2--
MPlugin/Source/Processors/Loss Effects/LossEffects.h | 6+++---
MSimulations/Loss_Effects.py | 10++++++----
6 files changed, 9 insertions(+), 23 deletions(-)

diff --git a/Paper/420_paper.pdf b/Paper/420_paper.pdf Binary files differ. diff --git a/Paper/420_paper.tex b/Paper/420_paper.tex @@ -425,13 +425,6 @@ audible range. The output signal can be recovered after the recording and playback processes by subtracting out the bias current. -\subsection{Tape Speed} -The frequency response of the playback from a tape -recorder is also dependent on the tape speed. Faster -speeds typically correspond to better high-frequency -response. In this case, we model the tape speed response -as a simple low-pass filter. - %\newpage \nocite{*} \bibliographystyle{IEEEbib} diff --git a/Plugin/Source/PluginProcessor.cpp b/Plugin/Source/PluginProcessor.cpp @@ -28,7 +28,6 @@ ChowtapeModelAudioProcessor::ChowtapeModelAudioProcessor() StringArray ({ "3.75 ips", "7.5 ips", "15 ips" }), 1)); tapeSpeed->addListener (this); - speedFilter.setSpeed (*tapeSpeed); lossEffects.setSpeed (*tapeSpeed); hysteresis.setOverSamplingFactor (*overSampling); } @@ -46,10 +45,7 @@ void ChowtapeModelAudioProcessor::parameterValueChanged (int paramIndex, float n else if (paramIndex == overSampling->getParameterIndex()) hysteresis.setOverSamplingFactor (*overSampling); else if (paramIndex == tapeSpeed->getParameterIndex()) - { - speedFilter.setSpeed (*tapeSpeed); lossEffects.setSpeed (*tapeSpeed); - } } //============================================================================== @@ -118,7 +114,6 @@ void ChowtapeModelAudioProcessor::changeProgramName (int /*index*/, const String void ChowtapeModelAudioProcessor::prepareToPlay (double sampleRate, int samplesPerBlock) { inGainProc.prepareToPlay (sampleRate, samplesPerBlock); - speedFilter.prepareToPlay (sampleRate, samplesPerBlock); hysteresis.prepareToPlay (sampleRate, samplesPerBlock); lossEffects.prepareToPlay (sampleRate, samplesPerBlock); outGainProc.prepareToPlay (sampleRate, samplesPerBlock); @@ -127,7 +122,6 @@ void ChowtapeModelAudioProcessor::prepareToPlay (double sampleRate, int samplesP void ChowtapeModelAudioProcessor::releaseResources() { inGainProc.releaseResources(); - speedFilter.releaseResources(); hysteresis.releaseResources(); lossEffects.releaseResources(); outGainProc.releaseResources(); @@ -166,7 +160,6 @@ void ChowtapeModelAudioProcessor::processBlock (AudioBuffer<float>& buffer, Midi hysteresis.processBlock (buffer, midiMessages); lossEffects.processBlock (buffer, midiMessages); - speedFilter.processBlock (buffer, midiMessages); outGainProc.processBlock (buffer, midiMessages); } diff --git a/Plugin/Source/PluginProcessor.h b/Plugin/Source/PluginProcessor.h @@ -3,7 +3,6 @@ #include "../JuceLibraryCode/JuceHeader.h" #include "Processors/Hysteresis/HysteresisProcessor.h" #include "Processors/GainProcessor.h" -#include "Processors/Speed Filters/SpeedFilterProcessor.h" #include "Processors/Loss Effects/LossEffectsFilter.h" //============================================================================== @@ -59,7 +58,6 @@ public: void parameterGestureChanged (int /*paramIndex*/, bool /*gestureIsStarting*/) override {} private: - SpeedFilterProcessor speedFilter; HysteresisProcessor hysteresis; LossEffectsFilter lossEffects; diff --git a/Plugin/Source/Processors/Loss Effects/LossEffects.h b/Plugin/Source/Processors/Loss Effects/LossEffects.h @@ -5,9 +5,9 @@ namespace { - constexpr float spacing = (float) 20e-6; - constexpr float gap = (float) 5e-6; - constexpr float thickness = (float) 35e-6; + constexpr float spacing = (float) 1e-9; + constexpr float gap = (float) 2e-6; + constexpr float thickness = (float) 10e-6; constexpr float inchesToMeters = 0.0254f; enum diff --git a/Simulations/Loss_Effects.py b/Simulations/Loss_Effects.py @@ -4,10 +4,10 @@ import scipy.signal as signal # Constants N = 100 -d = 20e-6 #Spacing between tape and head -g = 5e-6 #Head gap width +d = 1e-9 #Spacing between tape and head +g = 2e-6 #Head gap width delta = 35e-6 #Tape thickness -v = 15 * 0.0254 +v = 7.5 * 0.0254 #f = np.linspace (0, 24000, N/2) f = np.linspace (0, 48000, N) @@ -39,7 +39,9 @@ w, H_t = signal.freqz (h) # Plotting output #plt.plot(n, h) #plt.plot (w * 22000 / np.pi, abs (H_t)) -plt.semilogx (f[0:int (N/2)], 20 * np.log10 (H[0:int (N/2)])) +plt.semilogx (f[0:int (N/2)], 10 * np.log10 (H[0:int (N/2)])) +plt.axvline (x=15000) +plt.axhline (y=-3) plt.title ("Tape Loss Effects vs. Frequency") plt.xlabel ("Frequency [Hz]") plt.ylabel ("Amplitude [dB]")