Coder Social home page Coder Social logo

jatinchowdhury18 / analogtapemodel Goto Github PK

View Code? Open in Web Editor NEW
1.1K 19.0 60.0 119.9 MB

Physical modelling signal processing for analog tape recording

License: GNU General Public License v3.0

TeX 20.87% Python 4.49% C++ 64.88% Inno Setup 3.09% Shell 3.25% Makefile 0.08% CMake 3.34%
audio-effect audio-plugin juce vst3 audio-unit lv2 auv3 physical-modeling analog-tape-machines

analogtapemodel's Introduction

Physical Modeling for Analog Tape Machines

Download Latest CI License: GPL v3 Downloads

CHOW Tape Model is a physical model of an analog tape machine, implemented as an audio plugin. The physical model is described in a paper presented at the 2019 DAFx conference. This work began part of a class project for Music 420 at Stanford University (CCRMA).

Quick Links

Definition

magnetic tape noun
mag·net·​ic tape | \ˈnedik 'tāp
Definition of magnetic tape
1 : tape used in recording sound, pictures, or computer data.

Description

Pic

CHOW Tape is an analog tape machine physical model, originally based on the Sony TC-260. The current version can be used to emulate a wide variety of reel-to-reel tape machines. Feel free to build and use for your own enjoyment.

CHOW Tape is currently available in the following formats:

  • VST
  • VST3
  • AU
  • AAX
  • AUv3
  • CLAP
  • LV2
  • Standalone plugin

Installation

The latest release for desktop can be downloaded from our website. ChowTape for iOS can be downloaded from the app store. If you would like to try the nightly builds (potentially unstable), see the Nightly Builds page. If you prefer to build the plugin for yourself, please see the building instructions. Linux users may also download builds from the Open Build Service.

Note for FL Studio users: If you're experiencing pops and click while using the plugin, try enabling the "used fixed size buffers" setting. For more information, see this issue.

Contributing

Contributions are most welcome! There are many ways to contribute to this project, for both programmers and non-programmers. For more information, see the contributing guidelines.

Credits

License

CHOW Tape is licensed under the GNU General Public License (GPLv3) agreement. CHOW Tape for iOS is dual licensed under the GPL and Mozilla Public License (MPLv2). Enjoy!

analogtapemodel's People

Contributors

iv-m avatar jatinchowdhury18 avatar kaimikkelsen avatar kant avatar magnetophon avatar mwicat avatar neelkanth333 avatar phoracek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

analogtapemodel's Issues

[BUG] Incorrect DC blocker frequency response

Describe the bug
From user email:

When I added the plugin to a drum set with a really sub-heavy kick drum I noticed that it lost a lot of it's weight. It seems like there is a high pass filter at 70Hz at any settings with the plugin. I think it would be a great improvement if you removed this high pass filter. Here is a frequency analyzer graph of this:
image

Expected behavior
CHOW Tape should attenuate signals at DC, but not at audible low frequencies.

Desktop (please complete the following information):
Probably all versions.

[BUG] Dry/Wet issues

From KVR:

I've tested v2.3.3 and found the phase issues with the dry/wet knob are much better now but there's still some cancellation with a big dip (-27dB) at 18kHz (tested default preset, 40% wet, 2x oversampling, white noise source).
Another thing that I noticed is that a 0% wet signal is not the same as bypassing the plugin, there's also a high freq cut on the dry signal (at 4x oversampling this high cut is almost inexistent, but for 2x, 8x and 16x its noticeable).

1x oversampling mode

Allow plugin to be run with no oversampling for low CPU footprint.

As requested by @S28 on the KVR forum.

32 bit VST build?

I'm still using only 32 bit VSTs in a 32 bit host (because most VSTs I'm used to using are only available for 32 bit).
Can you please add a dll compiled for 32 bit VST hosts to the release assets? :)

[FEATURE] Visible marker for mix groups

Is your feature request related to a problem? Please describe.
Difficult to tell at a glance which mix group a plugin is in.

Describe the solution you'd like
Either a colour marker, or custom names for mix groups.

Additional context
From KVR user @sinkmusic:

One little thing : with mix group able plugins, I tend to like a hint a color to remember quickly which instances are linked.
So maybe adding a small color line above the bottom section (or being able to give a name to the group, ie "drums" instead of "2", or a little circle shape filled with a color next to the group number) could help identify quickly the groups ?

Volume spike on prest change

From KVR:

Just had a play with 2.3 (and 2.3.1) and there is a MASSIVE volume boost in Live 10 when switching to the TC-260 and LoFi presets. You may need to select these presets more than once for it to happen.

Presets!

For the next release, I'd like to include some presets. If you'd like to contribute your own preset, please copy the template below, and fill in your own parameter values:

Input Gain [dB]: 0.0
Output Gain [dB]: 0.0
Dry/Wet: 100.0
Hysteresis:
  Oversampling: 2x
  Bias: 0.5
  Saturation: 0.5
  Drive: 0.5
  Mode: RK2
Tone:
  Bass: 0.0
  Treble: 0.0
Loss:
  Speed [ips]: 15.0
  Spacing [cm]: 0.00001
  Thickness [cm]: 0.00001
  Gap [cm]: 0.00001
Degrade:
  Depth: 0.0
  Amount: 0.0
  Variance: 0.0
Chew:
  Depth: 0.0
  Freq: 0.0
  Variance: 0.0
Flutter:
  Rate: 0.3
  Depth: 0.0
Wow:
  Rate: 0.2
  Depth: 0.0

[FEATURE] Improve input clipping behavior

Is your feature request related to a problem? Please describe.
Currently, the input signal is clipped before being input to the hysteresis model (see here). This clipping is meant to protect the hysteresis model from going unstable, but can cause undesirable distortion at extreme input gains.

Describe the solution you'd like
Fine-tune the clipping values for each ODE solver and oversampling amount so that the input is only clipped when on the verge of causing an instability.

Additional context
Depending on the results of the fine-tuning, maybe add an "unsafe mode" option to turn of input clipping all together.

[BUG] Ableton Live crashes when opening projects containing Chowtape VST3

Ableton Live is crashing when trying to open existing projects that contain VST3 instances of Chowtape. I'm getting consistent crashes across multiple projects - one is a super simple / small project, the other is quite large.

Creating a fresh instance of Chowtape VST3 in an empty project does not crash though, it only seems to happen when opening an existing project which contains Chowtape VST3.

Chowtape 2.4.0 VST3
macOS 10.14.6
Ableton Live 10.1.17 and 10.1.15

Crash report generated by macOS:

Thread 0 Crashed:: MainThread Dispatch queue: com.apple.main-thread
0 com.ableton.live 0x0000000100fc79a8 0x100000000 + 16546216
1 com.ableton.live 0x0000000100fd8a67 0x100000000 + 16616039
2 com.ableton.live 0x000000010257d754 0x100000000 + 39311188
3 com.ableton.live 0x0000000102573948 0x100000000 + 39270728
4 com.ableton.live 0x0000000102573a3d 0x100000000 + 39270973
5 com.chowdsp.CHOWTapeModel 0x000000018ed37af7 ChowtapeModelAudioProcessor::prepareToPlay(double, int) + 6343
6 com.chowdsp.CHOWTapeModel 0x000000018ed10e91 juce::JuceVST3Component::setActive(unsigned char) + 769
7 com.ableton.live 0x000000010239f835 0x100000000 + 37353525
8 com.ableton.live 0x000000010239ca2e 0x100000000 + 37341742
9 com.ableton.live 0x000000010239b19e 0x100000000 + 37335454
10 com.ableton.live 0x00000001023960b9 0x100000000 + 37314745
11 com.ableton.live 0x0000000101387aee 0x100000000 + 20478702
12 com.ableton.live 0x0000000101387898 0x100000000 + 20478104
13 com.ableton.live 0x0000000101398d9e 0x100000000 + 20549022
14 com.ableton.live 0x000000010136ad98 0x100000000 + 20360600
15 com.ableton.live 0x0000000101399556 0x100000000 + 20550998
16 com.ableton.live 0x000000010194f8a5 0x100000000 + 26540197
17 com.ableton.live 0x000000010194f72a 0x100000000 + 26539818
18 com.ableton.live 0x0000000101939868 0x100000000 + 26450024
19 com.ableton.live 0x0000000101939bed 0x100000000 + 26450925
20 com.ableton.live 0x0000000101932244 0x100000000 + 26419780
21 com.ableton.live 0x0000000101959bc0 0x100000000 + 26581952
22 com.ableton.live 0x000000010195972d 0x100000000 + 26580781
23 com.ableton.live 0x00000001019588a8 0x100000000 + 26577064
24 com.ableton.live 0x0000000101c572d1 0x100000000 + 29717201
25 com.ableton.live 0x0000000101e399f2 0x100000000 + 31693298
26 com.ableton.live 0x0000000101e50cb6 0x100000000 + 31788214
27 com.ableton.live 0x0000000101edb3fd 0x100000000 + 32355325
28 com.ableton.live 0x000000010057b3c9 0x100000000 + 5747657
29 com.ableton.live 0x00000001005a3736 0x100000000 + 5912374
30 com.ableton.live 0x00000001011e35ab 0x100000000 + 18757035
31 com.ableton.live 0x00000001011e46b8 0x100000000 + 18761400
32 com.ableton.live 0x00000001010e2e9b 0x100000000 + 17706651
33 com.ableton.live 0x00000001011e3b5d 0x100000000 + 18758493
34 com.ableton.live 0x000000010117f6e1 0x100000000 + 18347745
35 com.ableton.live 0x00000001010c1a4c 0x100000000 + 17570380
36 com.apple.AppKit 0x00007fff510a1644 -[NSApplication(NSResponder) sendAction:to:from:] + 312
37 com.apple.AppKit 0x00007fff510fd86b -[NSMenuItem _corePerformAction] + 323
38 com.apple.AppKit 0x00007fff510fd5dc -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:] + 114
39 com.apple.AppKit 0x00007fff5116158f -[NSMenu performActionForItemAtIndex:] + 131
40 com.apple.AppKit 0x00007fff511614fc -[NSMenu _internalPerformActionForItemAtIndex:] + 93
41 com.apple.AppKit 0x00007fff5116132e -[NSCarbonMenuImpl _carbonCommandProcessEvent:handlerCallRef:] + 105
42 com.apple.AppKit 0x00007fff510cbdc6 NSSLMMenuEventHandler + 909
43 com.apple.HIToolbox 0x00007fff52a1622e DispatchEventToHandlers(EventTargetRec*, OpaqueEventRef*, HandlerCallRec*) + 1422
44 com.apple.HIToolbox 0x00007fff52a155df SendEventToEventTargetInternal(OpaqueEventRef*, OpaqueEventTargetRef*, HandlerCallRec*) + 371
45 com.apple.HIToolbox 0x00007fff52a329b6 SendEventToEventTarget + 39
46 com.apple.HIToolbox 0x00007fff52a84cd2 SendHICommandEvent(unsigned int, HICommand const*, unsigned int, unsigned int, unsigned char, void const*, OpaqueEventTargetRef*, OpaqueEventTargetRef*, OpaqueEventRef**) + 375
47 com.apple.HIToolbox 0x00007fff52aad14e SendMenuCommandWithContextAndModifiers + 49
48 com.apple.HIToolbox 0x00007fff52aad0fd SendMenuItemSelectedEvent + 192
49 com.apple.HIToolbox 0x00007fff52aacfe5 FinishMenuSelection(SelectionData*, MenuResult*, MenuResult*) + 96
50 com.apple.HIToolbox 0x00007fff52aad9b3 MenuSelectCore(MenuData*, Point, double, unsigned int, OpaqueMenuRef**, unsigned short*) + 603
51 com.apple.HIToolbox 0x00007fff52aad6c8 _HandleMenuSelection2 + 452
52 com.apple.AppKit 0x00007fff50db9a81 _NSHandleCarbonMenuEvent + 223
53 com.apple.AppKit 0x00007fff50db98e6 _DPSEventHandledByCarbon + 54
54 com.apple.AppKit 0x00007fff50dae92b -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2577
55 com.apple.AppKit 0x00007fff50da8588 -[NSApplication run] + 699
56 com.ableton.live 0x00000001010be76c 0x100000000 + 17557356
57 libdyld.dylib 0x00007fff7f75d3d5 start + 1

[FEATURE] Tone control section adjustments

I would like to add/change 3 things related to the pre-/post-emphasis tone controls:

  • Bass knob should be below treble knob
  • Allow the user to change the "transition frequency" between the bass and treble sections of the filter
  • Allow for higher amplitudes of pre-/post-emphasis (without compromising stability)

[FEATURE] Allow sections to be bypassed

Is your feature request related to a problem? Please describe.
Currently, some sections of the plugin can be effectively bypassed by setting certain knobs to zero. It would be more convenient to have a dedicated "bypass" switch for each section.

Describe the solution you'd like
A "power-button" style switch for each section, grey-out bypassed sections.

JUCE 5.4.7 support

Hi!

With recent JUCE they changed:
AudioProcessorValueTreeState::getRawParameterValue now returns a
std::atomic* instead of a float*.

So now AnalogTapeModel is unable to compile. I can change some paramteters to std::atomic*
but have no idea what to do with this error:

../../Source/PluginProcessor.cpp:164:84: error: use of deleted function ‘std::atomic<_Tp>::atomic(const std::atomic<_Tp>&) [with _Tp = float]’
164 | inGain.setGain (Decibels::decibelsToGain (*vts.getRawParameterValue ("ingain")));
|

                                                                           ^

crashes Logic Pro X 10.4 validation

macOS 10.13.6
Logic Pro X 10.4.8
release: 2.1.0 (though it says component version 2.0.0 inside)

validating Audio Unit CHOWTapeModel by chowdsp:

    AU Validation Tool
    Version: 1.6.1a1 
    Copyright 2003-2013, Apple Inc. All Rights Reserved.
    Specify -h (-help) for command options

--------------------------------------------------
VALIDATING AUDIO UNIT: 'aufx' - 'Jdox' - 'Manu'
--------------------------------------------------
Manufacturer String: chowdsp
AudioUnit Name: CHOWTapeModel
Component Version: 2.0.0 (0x20000)

* * PASS
--------------------------------------------------
TESTING OPEN TIMES:
COLD:
Time to open AudioUnit:         11.692 ms
WARM:
Time to open AudioUnit:         2.299  ms
FIRST TIME:
Time for initialization:        0.246 ms

* * PASS
--------------------------------------------------
VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
 Default Bus Count:1
    Bus Name: Input
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
    Has Channel Layouts: 0x640001 0x650002 0x660002 0x670002 0x6A0002 
    Default Layout:
	Tag=0x650002, Num Chan Descs=0

Output Scope Bus Configuration:
 Default Bus Count:1
    Bus Name: Output
    Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
    Has Channel Layouts: 0x640001 0x650002 0x660002 0x670002 0x6A0002 
    Default Layout:
	Tag=0x650002, Num Chan Descs=0

* * PASS
--------------------------------------------------
VERIFYING REQUIRED PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING RECOMMENDED PROPERTIES:
  VERIFYING PROPERTY: Latency
    PASS
  VERIFYING PROPERTY: Tail Time
    PASS
  VERIFYING PROPERTY: Bypass Effect
    PASS

* * PASS
--------------------------------------------------
VERIFYING OPTIONAL PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI
Cocoa Views Available: 1
  JUCE_AUCocoaViewClass_16f144159bbcee30
    PASS

HAS FACTORY PRESETS

VERIFYING CLASS INFO
    PASS

TESTING HOST CALLBACKS
    PASS

* * PASS
--------------------------------------------------
PUBLISHED PARAMETER INFO:

# # # 12 Global Scope Parameters:

* * PASS
--------------------------------------------------
FORMAT TESTS:

Reported Channel Capabilities (explicit):
      [1, 1]  [2, 2]  

Input/Output Channel Handling:
1-1   1-2   1-4   1-5   1-6   1-7   1-8   2-2   2-4   2-5   2-6   2-7   2-8   4-4   4-5   5-5   6-6   7-7   8-8
X                                         X                                                                       

# # AudioChannelLayouts (5), Input Scope:
ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x640001, 0x650002, 0x660002, 0x670002, 0x6A0002, 

Is Audio Channel Layout Available:
Mono    Stereo  Binau.  AU_4    Ambi.   AU_5    AU_5_0  AU_6    AU_6_0  AU_7_0  AU_7_0F AU_8    AU_5_1  AU_6_1  AU_7_1  AU_7_1F 
X       X       X                                                                                                               

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x640001, Success - did not reset format with mis-matched layout

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x650002, Successsful

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x6A0002, Successsful

# # AudioChannelLayouts (5), Output Scope:
ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x640001, 0x650002, 0x660002, 0x670002, 0x6A0002, 

Is Audio Channel Layout Available:
Mono    Stereo  Binau.  AU_4    Ambi.   AU_5    AU_5_0  AU_6    AU_6_0  AU_7_0  AU_7_0F AU_8    AU_5_1  AU_6_1  AU_7_1  AU_7_1F 
X       X       X                                                                                                               

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x640001, Success - did not reset format with mis-matched layout

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x650002, Successsful

Current Format:AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Current Format Tag = 0x650002, New Format Tag = 0x6A0002, Successsful

* * PASS
--------------------------------------------------
RENDER TESTS:

Input Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Output Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Render Test at 512 frames
Slicing Render Test at 64 frames
  PASS


Render Test at 64 frames, sample rate: 22050 Hz


validation result: crashed validation

Dry/Wet phase cancellation

From KVR:

I've tested v2.3.0 on Windows, and found some weird behavior with the Dry/Wet knob when oversampling at x2 or more.
Using white noise as sound source and setting Dry/Wet to 55%, using the spectrum analyzer I could see some high frequencies cancelling each other between the dry and wet signals. Anyone else had this problem?

[FEATURE] Mix groups

Describe the solution you'd like
Add mix groups for communication between plugins. Essentially, all the plugins in the same mix group would share the same parameters. This can be useful for syncing instances of the plugin across a mix.

Additional context
This is a pretty big feature. Unfortunately, I don't have much of the expertise or the time needed to implement this feature right now. If anyone else want's to take responsibility for this feature, I'm happy to assist in any way I can.

Tape Model produces unusual artefacts when processing chimes (mark tree) kind of material.

(earlier report posted on KVR forum, here are some additional infos)

When using 'chimes' (mark tree) sounds the model produces strange artefacts in the low to lower mids spectrum (sounds similar to rumble / hum on a vinyl player).

Maybe some sort of unconventional aliasing is produced due to the amount of high frequency content and inharmonic overtones produced? Wikipedia states: "Unlike tubular bells, another form of chime, the chimes on a Mark tree do not produce a definite pitch, as they produce inharmonic (rather than harmonic) spectra."

When increasing the oversampling amount, the artefacts become less prominent, but are still very noticable even at 8x Oversampling in a 44100 Hz session.

Decreasing the Input Gain won't do much in terms of reducing the artefacts (only reduction is due to the db decrease, but the amount of produced artefacts relative to the signal remains the same).

My guess is that chimes are a good sound source to determine how such a model reacts on very high frequency rich material, whether the performance of the model remains consistent?

Here are audio example (a) chimes sample without tape model and b) with tape model activated (change file ending from .txt to .wav)

Chimes_WITHOUT_tape_model.txt
Chimes_with_tape_model.txt

My Setup: v2.0, VST3, Windows 64bit, Ableton Live 10.1, running at 44100 Hz sample rate

P.S.

Please count me in if you ever need beta testers for your future plugins ;)

[FEATURE] Hi/Low Cut filters on input

From Sink:

  • adding smooth HP & LP knobs to the input section, to allow for further shaping of the input sound. It would be awesome for parallel processing and when using ChowTape as a distorsion effect.

Massive pops and clicks

Using the VST2 version in FL Studio 20, Windows 10. This plugin will randomly emit pops and clicks that sends the meter into the red and keeps it there until disabled. Visualised in Voxengo SPAN the entire frequency spectrum is maxed out, then most of it fades leaving a permanent spike below 40hz.

[FEATURE] Easy access to conventional tape speeds

From KVR/Sink:

  • Also, would it be possible to have (maybe optional?) stepped values for the tape speeds (so we would have 3,3/4 > 7.5 > 15 ips etc, and we would avoid thousands of intermediate values like 14,0145, etc).

Is your feature request related to a problem? Please describe.
Although the plugin allows tape speed to be varied continuously, it would be niceto be able to quickly access conventional tape speeds (3.75, 7.5, 15 ips).

Describe the solution you'd like
My plan is to add three buttons either above or below the slider that will snap the slider to the corresponding value.

[BUG] curl/curl.h: No such file or directory

When running bash build_linux.sh I get ...

In file included from ../../JuceLibraryCode/include_juce_core.cpp:8:0:
../../../../modules/juce_core/juce_core.cpp:81:13: fatal error: curl/curl.h: No such file or directory
    #include <curl/curl.h>
             ^~~~~~~~~~~~~
compilation terminated.

I have got libcurl4 installed.

CPU spikes (

Running the plugin (VST3 version, Windows 7 64bit, Ableton Live 10.1) causes extreme CPU spikes. Abletons CPU meter shows between 90% and 125% CPU taxation. This might be partially due to constantly activated 16x oversampling that can not be switched off or reduced currently and probably due to unoptimized algorithm.

[BUG] Broken link to Catalina download

Describe the bug
https://github.com/jatinchowdhury18/AnalogTapeModel#installation says:

If you need a build that is compatible with Mac OS Catalina, try this link.

When I click that link Dropbox shows me a 404 Not Found screen.

To Reproduce
Steps to reproduce the behavior:

  1. Go to https://github.com/jatinchowdhury18/AnalogTapeModel#installation
  2. Click on 'this link'
  3. See 404 error screen

Expected behavior
I expected to be able to download a build that is compatible with macOS Catalina.

Desktop (please complete the following information):

  • OS: macOS Catalina

[FEATURE] Input/Output metering

Describe the solution you'd like
A VU meter, or dB readout for the input and output signals of the plugin, to help users with gain staging.

Separate Wow/Flutter controls

From @Boscop,

I think it would make sense to have a second set of 2 knobs for wow ("depth" and "rate" just like for flutter).
I'm not an expert on tape, but AFAIK both wow and flutter can occur at the same time (flutter being fast and wow being slow), right?

[BUG] Volume spikes at high sample rates

Describe the bug
From KVR:

Anybody tried running this at 96kHz? I have some trouble getting it to work. It seems to cause some massive +400dBFS spikes (seen during rendering to a floating point file). It's possible this is related to the oversampling option but not sure.. haven't tried it with oversampling off yet at 96kHz.

To Reproduce
Run plugin at a sample rate above 48 kHz.

[FEATURE] Modulation visualizer

Describe the solution you'd like
Some way of visualizing the wow/flutter modulation signals, perhaps similar to the visualizers used in ChowPhaser:

Spike on start playing

From KVR thread:

This new build is causing a large volume spike for me (Reaper64, running on Linux/Wine 5.0) when starting playing, also at the start of a rendered track.

More subtle wow/flutter controls

Requested by some folks on KVR

Also, I would really love to see a lot more fine control over Wow and Flutter. At the moment it's pretty much impossible to set it up subtly. Even a depth of 0.01 on either is extremely noticeable, especially at faster modulation rates.
Would it be possible to make the low range of the values so that we could enter 0.001 ? Basically it'd be cool if these were 10 times less drastic at subtle settings.

[FEATURE] Dry/wet control after output gain

I would love to have the wet/dry AFTER the output gain, which I feel would be more useful for getting sounds. Getting sounds out of a nice sounding tape plugin such as Le Chow 5000 usually goes like this:

  1. tweak settings, listening only for tone, ignoring output level (since every tonal control affects output level). get a nice tone. get the tape to react to the source the way you want it to.
  2. match output level to input level to check that the tonal change is actually a nice improvement and not just louder (important step).
  3. dial in the actual desired amount of said tone using the wet/dry knob.

If the wet/dry is before the output level, I'm not able to fine tune my tonal change nearly as easily. Cool project!!

[BUG] Jumpy sliders in "Loss" section

Describe the bug
From KVR:

I have a couple of issues with the Loss section. With the first two controls, Gap and Thickness, the sliders jump when moved from their default setting of 0.0000010. The value doesn't jump but the slider seems to skip about 40 pixels.

Expected behavior
Smooth slider behavior across the slider range.

Desktop (please complete the following information):
All versions...

Mac Installer

Is your feature request related to a problem? Please describe.
There is currently no Mac installer.

Describe the solution you'd like
It would be nice to have a method for packaging the Mac builds in an installer. It would be even nicer if this installer could be generated and signed as part of the CI pipeline.

Additional context
JUCE has a tutorial for creating installers: https://docs.juce.com/master/tutorial_app_plugin_packaging.html

[FEATURE] Improve preset manager

Is your feature request related to a problem? Please describe.
Current preset manager doesn't allow for saving/loading presets, or managing presets from different contributors.

Describe the solution you'd like
Preset menu with multiple contributor folders, plus load/save options.

[FEATURE] Tone control in hysteresis procesor

Is your feature request related to a problem? Please describe.
Would like to have control of the frequencies being distorted by the hysteresis function.

Describe the solution you'd like
A set of high/low shelf filters with inverted frequency responses before/after the hysteresis stage.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.